JP4955876B2 - クエリ最適化のためのコストに基づく具体化ビューの選択 - Google Patents

クエリ最適化のためのコストに基づく具体化ビューの選択 Download PDF

Info

Publication number
JP4955876B2
JP4955876B2 JP2001296553A JP2001296553A JP4955876B2 JP 4955876 B2 JP4955876 B2 JP 4955876B2 JP 2001296553 A JP2001296553 A JP 2001296553A JP 2001296553 A JP2001296553 A JP 2001296553A JP 4955876 B2 JP4955876 B2 JP 4955876B2
Authority
JP
Japan
Prior art keywords
query
operator
computer
tree
view
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2001296553A
Other languages
English (en)
Other versions
JP2002163290A (ja
JP2002163290A5 (ja
Inventor
シーザー・エイ・ガリンド−レガリア
ミリンド・エム・ジョシ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2002163290A publication Critical patent/JP2002163290A/ja
Publication of JP2002163290A5 publication Critical patent/JP2002163290A5/ja
Application granted granted Critical
Publication of JP4955876B2 publication Critical patent/JP4955876B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24539Query rewriting; Transformation using cached or materialised query results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24542Plan optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99932Access augmentation or optimizing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99943Generating database or data structure, e.g. via user interface

Description

【0001】
【発明の属する技術分野】
本発明は、一般的に、コンピュータの分野に関し、更に特定すれば、コストに基づいて具体化ビュー(materialized views)を選択するデータベース・クエリ最適化装置に関する。
【0002】
【従来の技術】
この特許文書の開示内容の一部は、著作権の保護対象となる題材を含む。著作権者は、本特許文書または特許開示内容の、特許商標庁における特許ファイルまたは記録に現れる通りのファクシミリ再生については、いずれの者による場合であっても異議を唱えないが、それ以外についてはあらゆる著作権を保存することとする。以下の通知は、以下および図面に記載するソフトウエアおよびデータに適用されるものとする。著作権c2000年Microsoft Corporation、版権所有。
【0003】
リレーショナル・データベースは、データの行即ちタプル(tuple)の集合である。各行は、番号、名称、アドレス等のような情報を収容する1つ以上の列を有することができる。例えば、列は、従業員の名前、従業員ID、住所、電話番号、日毎の売上、およびその他の情報を含むことができる。この情報をデータベース内のテーブルに格納する。この特定のテーブルの行における情報は全て同じ人に関係付けられている。このようなクエリの1つを売上に関係付けることも可能である。このクエリは、ある日の各従業員毎の売上を見つけることに関係付けることができる。
【0004】
具体化ビューは、10年以上にわたってデータベース探索の主題であった。基本的なアイデアは、あるクエリの結果を具体化する、または格納し、同様のクエリがデータベースに提出されたときに、このように計算した結果を用いるということである。例えば、日毎の売上結果を、例えば、格納し、格納した結果を用いて、所与の月における振り上げ、または年間の総売上を含む、いくつかの関係するクエリに回答したいことがある。
【0005】
【発明が解決しようとする課題】
柔軟性の最大化を図るためには、あるビューが存在する、または具体化されていることをアプリケーションが知る必要があるべきではない。クエリ・プロセッサは、ユーザ・クエリと既存の予備計算結果との間における一致を識別し、適用可能であればこのような結果を使うべきである。これは、ビュー利用問題として知られている。具体化ビューの集合体だけでなくベース・テーブル上にもユーザ・クエリを書き込んだ場合、どの具体化ビューを用いてこのようなクエリに答えることができるのか。次いで、どのビューを用いるか決定しなければならない。
【0006】
トランザクションの正確性を保証するためには、ビューの内容は、ベース・テーブルの変更に対して同期して維持しなければならない。例えば、注文が入力または変更された場合、週毎の売上の具体化を更新し、変更を反映しなければならない。これは、ビュー保守問題として知られている。
【0007】
具体化ビューは、これらがデータベースの物理的設計の一部であり、その主な目的が性能向上にある点で、インデックスと同様である。データベースの論理設計、およびアプリケーションの正確性は、具体化ビューの有無とは無関係でなければならない。インデックスと同様、具体化ビューは、クエリの性能に劇的な改善をもたらすことができる。
【0008】
どのビューを用いるべきか決定する従来の試みでは、分離における問題を扱い、限定したシナリオを処理し、多くの場合クエリ全体をカバーする「グローバル」構造を想定していた。これは、「カバレッジの結果」(coverage results)を得るには有用である。例えば、この述語集合(set of predicates)およびこの形態のクエリを有するビューが与えられた場合、このアルゴリズムを用いて、クエリに答えるためにビューを用いることができるか否か決定する。任意のクエリを扱い、ビューの利用をクエリ最適化装置の実際のアーキテクチャ内に統合する必要がある。更に、一旦クエリに答えるためにビューが使用可能であることがわかったなら、それを用いるという問題に取り組む必要がある。
【0009】
ビューの一致の目的のために、ユーザ・クエリに「グローバル」構造を構築することは、共通の最適化装置のアーキテクチャとは適合せず、「許されない」構造を用いた場合、不可能なこともある。ある複雑なクエリ上では、ビューの利用は、完全なクエリの下位式(sub-expression)においてのみ可能である。更に、これらサブクエリは、ある並び替えを行なった後にのみ現れる可能性があるが、これは当然選択肢の探査(exploration)プロセスにおいて行われる。
【0010】
【課題を解決するための手段】
コストに基づくクエリ最適化装置は、具体化ビューのクエリに対する適用可能性を判定する。ビュー利用選択肢が最適化探査段階において生成するので、複雑なクエリにおける他の変換との相互作用が考慮される。具体化ビューを使用するか否かに関する最終判断は、推定コストに基づく。
【0011】
最適化装置は、選択肢テーブルを生成し、クエリの各下位式に対する種々の可能性をコンパクトにエンコードする。演算子ツリーをテーブル内に暗示的に表現する。種々の可能性の探査中に、具体化ビューを検出および置換し、選択肢テーブルに追加する。具体化ビューおよび選択肢は、コストに基づくクエリ実行計画において用いるために選択する。
【0012】
最適化装置は、コストを推定し、費用のかかる解決手段を間引きし、演算子ツリーを組み立て、最適な解決手段を構築するために用いられる。所与のクエリに対して、一般的な数の候補ビュー、およびビューの利用を考慮することができるある数のテーブル・エントリがある。クエリ内において参照されたテーブル、またはクエリが総計を含むか否かというような情報を用いて、関連があり得るビューを決定する。
【0013】
考慮する演算子ツリーの数を削減するために、隠し(collapsed)演算子ツリーを生成し、基本的に全ての基礎テーブルを、それらに適用する述語と共にリストに纏めたクエリ・グラフを形成する。クエリ・グラフに一致するビューを、選択肢テーブルに追加する。また、選択肢テーブルから、原始グラフ・ツリーを抽出する。このような原始グラフ・ツリーは、特定の演算子集合のみを許可し、原始テーブルのみを許す。これによって、原始データベース・テーブルを優先して、ビュー・テーブルを無視することが可能になる。
【0014】
2つの演算子ツリーが同一である必要はない。一方の演算子ツリーが他方の演算子ツリーを包含する場合、残余演算子を用いることができる。残余式は、フィルタを含み、演算子別にグループ化し、演算子を加入することができる。
【0015】
【発明の実施の形態】
以下の本発明の実施形態の一例の詳細な説明では、その一部をなす添付図面を参照する。図面では、本発明を実施可能な具体的な実施形態の例を、例示として示す。これらの実施形態は、当業者が本発明を実施することができるように十分詳細に説明してあり、更に、他の実施形態も利用可能であり、論理的、数学的、電気的およびその他の変更も、本発明の精神または範囲から逸脱することなく行なえることは理解されよう。したがって、以下の詳細な説明は、限定的な意味で捕らえてはならず、本発明の範囲は添付した特許請求の範囲によってのみ定義されることとする。
【0016】
詳細な説明は多数の章に分かれている。第1章は、本発明を実現するコンピュータ・システムの動作について説明する。続いて、どのようにして、コストに基づいてクエリ最適化装置による考慮のために、全体的な具体化ビューを識別し、選択肢テーブルに追加するかについて説明する。結論は、潜在的な利点をいくつか述べ、更に別の代替実施形態についても述べる。
ハードウエアおよび動作環境
本発明を実現するシステム例は、図1における計算デバイス100のような計算デバイスを含む。その最も基本的な構成では、計算デバイス100は、典型的に、少なくとも1つの演算装置102およびメモリ104を含む。計算デバイスの正確なコンフィギュレーションおよび形式に応じて、メモリ104は、揮発性(RAMのような)、不揮発性(ROM、フラッシュ・メモリ等のような)、またはこれら2つの何らかの組み合わせとなる場合もある。この最も基本的なコンフィギュレーションを、図1における破線106で示す。
【0017】
デバイス100は、追加の機構/機能性を含むこともできる。例えば、デバイス100は、磁気または光ディスクまたはテープを含むがこれらには限定されない、追加のストレージ(リムーバブルおよび/または非リムーバブル)を含むことができる。このような追加のストレージは、図1では、リムーバブル・ストレージ108および非リムーバブル・ストレージ110によって例示されている。コンピュータ記憶媒体は、揮発性および不揮発性、リムーバブルおよび非リムーバブル媒体を含み、コンピュータ読み取り可能命令、データ構造、プログラム・モジュールまたはその他のデータのように、情報格納技術のあらゆる方法で実現されている。メモリ104、リムーバブル・ストレージ108および非リムーバブル・ストレージ110は、全てコンピュータ記憶媒体の例である。コンピュータ記憶媒体は、RAM、ROM、EEPROM、フラッシュ・メモリ、またはその他のメモリ技術、CD−ROM、ディジタル・バーサタイル・ディスク(DVD)またはその他の光ストレージ、磁気を用いたストレージ、あるいは所望の情報を格納するために使用可能であり、デバイス100がアクセス可能なその他のあらゆる媒体を含むが、これらに限定される訳ではない。このようなコンピュータ記憶媒体はいずれも、デバイス100の一部となり得る。
【0018】
また、デバイス100は、通信接続部112も内蔵し、当該デバイスは他のデバイスと通信することができる。通信媒体は、典型的に、読み取り可能命令、データ構造、プログラム・モジュール、あるいは搬送波またはその他の輸送機構のような変調データ信号におけるその他のデータを具体化し、あらゆる情報配信媒体を含む。「変調データ信号」という用語は、信号内に情報をエンコードするように変更された、1つ以上のその特性集合を有する信号を意味する。限定ではなく一例として、通信媒体は、有線ネットワークまたは直接配線接続のような有線媒体や、音響、RF、赤外線およびその他のワイヤレス媒体のようなワイヤレス媒体を含む。ここで用いる場合、コンピュータ読み取り可能媒体とは、記憶媒体および通信媒体双方を含むこととする。
【0019】
また、デバイス100は、キーボード、マウス、ペン、音声入力デバイス、接触入力デバイス等のような入力デバイス114を有することもできる。ディスプレイ、スピーカ、プリンタ等のような出力デバイス116も含ませることができる。これらのデバイスは、当技術では周知である。
【0020】
本発明は、1つ以上のコンピュータまたはデバイス110のようなその他のデバイスによって実行する、プログラム・モジュールのようなコンピュータ実行可能命令のコンテクストにおいて説明するとよい。通常、プログラム・モジュールは、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含み、特定のタスクを実行するか、または特定の抽象的データ・タイプを実装する。典型的に、プログラム・モジュールの機能性は、種々の実施形態に必要に応じて組み合わせたりあるいは分散することができる。
【0021】
オブジェクト指向プログラミング言語を含む多くの異なる方法を用いて、ソフトウエアを設計することができる。C++およびJava(登録商標)は、オブジェクト指向プログラミングに関連する機能性を与える、共通のオブジェクト指向コンピュータ・プログラミング言語の2つの例である。オブジェクト指向プログラミング方法は、データ・メンバ(変数)、および当該データ上で動作し、クラスと呼ばれる単一のエンティティを形成するメンバ関数(メソッド)をカプセル化する手段を与える。また、オブジェクト指向プログラミング方法は、既存のクラスに基づいて新たなクラスを作成する手段も与える。
【0022】
オブジェクトとは、クラスのインスタンスである。オブジェクトのデータ・メンバは、コンピュータ・メモリ内部に格納されている属性であり、メソッドは、このデータ上で、潜在的に与えることができる他のサービスと共に作用する、実行可能なコンピュータ・コードである。本発明では、発明の態様を一実施形態においてオブジェクトとして実現するというオブジェクトの観念を利用する。
【0023】
インターフェースとは、名前のあるユニットに編成された、関連する関数のグループである。各インターフェースは、ある識別子によって一意に識別することができる。インターフェースはインスタンス化(instantiation)を有さない。即ち、インターフェースは、定義のみであり、当該インターフェースが指定するメソッドを実装するために実行可能コードを必要としない。オブジェクトは、インターフェースが指定するメソッドに実行可能コードを与えることによって、インターフェースを支援することができる。オブジェクトが供給する実行可能コードは、インターフェースが指定する定義を満たさなければならない。オブジェクトは追加のメソッドを与えることもできる。インターフェースは、オブジェクト指向プログラミング環境における、またはオブジェクト指向プログラミング環境による使用に限定される訳ではないことを、当業者は認めよう。
【0024】
本発明は、機能ブロックを含むフローチャートを用いて説明する。ブロックは、必要に応じて、1つ以上のソフトウエアまたはハードウエア・モジュールで実現することができ、データベース・システムのコンテクストにおいて、計算デバイス100上で実行する。
具体化ビューの識別
クエリ最適化装置は、通常、図2に示すように最初に簡略化段階があり、続いて、選択肢の探査および実行計画のコストに基づく選択がある。210において、元のクエリを識別する。簡略化/正規化段階220の間、元のクエリに対して、可能なときには、選択をプッシュ・ダウンする、あるいはサブクエリをジョイン(join)として書き直すというような何らかの変更を行なう。これらの変更は、「より良い」クエリ230を得ることを目的とする。典型的に、この段階では詳細なコスト推定がなく、前述の図における結果Q’として、単一の「より良い」クエリ230を生成する。
【0025】
探査段階240は、Q’を受け取り、多数の選択肢を生成する。また、探査段階240は、詳細なコスト・モデルを用いて、最も安い推定実行コストを選択する。クエリ最適化装置は、最低のコストを有するクエリを実行する計画250を与える。
【0026】
探査段階には、2つの標準的なアーキテクチャ、即ち、ボトムアップ・ダイナミック・プログラミング・ジョイン列挙、および変換によって促される選択肢の生成がある。双方のアーキテクチャは、選択肢テーブルを設定する。このテーブルは、クエリの各下位式毎に、種々の可能性をコンパクトにエンコードしたものである。
【0027】
クエリ簡略化の間に具体化したビューを考慮することは可能であるが、これは不適当である。何故なら、単一の解決手段しか得ることができず、この選択を行なう詳細なコスト情報がないからである。また、あるビューの使用が、クエリの他の何らかの変換または修正が行われるまで、明白にならない場合もある。これが有効になるのは、クエリが具体化ビューの定義に非常に近づいたときのみであり、その場合でも、この特定のクエリに対して、ベース・テーブル内により良いインデックス集合があるなら、元のクエリの方がビューの使用よりも速い可能性もある。
【0028】
この問題を解決するために、探査およびコストに基づく選択の間にビューの検出および置換を行なう。ここでは、これを変換に基づく最適化装置について記載し、一般的な原理は、ボトムアップ列挙を含む、他の選択肢テーブル構築方法にも及ぶ。
選択肢テーブルの増強
探査の間に具体化ビューを検討する場合、このような具体化ビューを用いるエントリによって、選択肢のテーブルを増強することから成る。元のクエリが、テーブルA,B,C上でのジョインであると仮定する。通常の選択肢テーブルは、図4の300に概略的に示すように見え、論理演算子のみである。選択肢テーブル300は、4つのグループ310,320,330および340から成る。グループ310は、ABCのルート・エントリを有し、異なる選択肢を有するエントリを含む。グループ320,330および340は、それぞれ、AB,BCおよびACのルート・エントリを有する。尚、各々につき、ジョインの順序関係があるのは、2つの代替エントリのみである。
【0029】
選択肢テーブルを見渡すことによって、図4において概略的に400で示すような、エンコード演算子ツリーを得る。ルート・エントリ(上述のエントリにおけるABC)から開始し、各エントリから演算子を選択する。各エントリにおいて最初の選択を行なうことによって、演算子ツリー400を形成した。AおよびBが最初に結合され、続いてその結果をCと結合する。
【0030】
具体化ビューV=A join Bがある場合、具体化ビュー・テーブルVtが格納されており、これは、AおよびBのジョインの結果を含む。これはジョイン下位式を得る有効な方法であるので、この選択肢によって選択肢テーブル300を増強し、図5における増強テーブル500を形成する。増強を510で識別し、ルート・エントリABを有するグループに対するエントリとして追加する。
【0031】
ここで生成することができ、最適化装置によって考慮する有効な演算子を図6の600に示す。これは、VtおよびCのジョインから成る。選択肢テーブルを増強する正確な機構は、最適化装置のアーキテクチャによって異なる。変換に基づく最適化装置の場合、新たな変換規則をシステムに追加することによって、拡張が得られる。ボトムアップ・ジョイン列挙では、構造手順を変更する必要がある。一旦選択肢をテーブルに追加したなら、コストを推定し、費用のかかる解決手段を間引き、演算子ツリーを組み立て、最適な解決手段を構築する通常の最適化装置の機構を適用する。
【0032】
特定のクエリに対し、通常、ある数の候補ビューV1,V2,…Vk、およびビューの利用を考慮することができるある数のテーブル・エントリがある。クエリに関係がある可能性があるビューのみを考慮すればよい。クエリにおいてどのデータベース・テーブルを参照するか、およびクエリが総計を含むか否かについての情報を用いることにより、ビューを関連なしとして識別する。他の情報も使用可能である。これによって、候補のビュー集合を狭めることができる。各テーブル・エントリ上で同様の情報を用い、無関連として検出され得るビュー定義を一致させようとするのを回避することができる。
【0033】
(ビュー、テーブル・エントリ)の対を多数考慮するために、テーブル・エントリを固定し、次いで多数の候補ビューを用いて照合を試みる。これによって、動作を開始する前に、所与のテーブル・エントリにおいて全ての追加選択肢を生成する。この順序は、通常の最適化の順序と一致しており、各エントリ毎に単一の一致構造を生成し、それを各候補ビュー毎に再利用することを可能にする。
【0034】
特定の具体化ビューV、および適用可能性を検査しようとする特定のテーブル・エントリEが与えられると、図7のフローチャートに示すように以下のステップを実行する。710において、エントリEのために演算子ツリーTを抽出する(このステップは、同じエントリE上の種々のビューに対し共有する)。次に、720において、ビュー定義Vから演算子ツリーTへの包含マッピングを試みる。マッピングに成功すると、残余演算が行われ、730においてT=Op(Vt)となる。750においてビューの利用により、選択肢テーブルを拡張する。740において、残余演算が新たなテーブル・エントリの導入を必要とする場合もある。これらのステップの更に詳細な説明を以下に行なう。
照合のための演算子ツリーの抽出
テーブル・エントリは多数の演算子ツリーに対応する。所与のエントリからエンコードされた各演算子ツリーを抽出し考慮することは、これらの数が指数的に増大すると(関与するテーブル上で)、実現不可能となる。非決定論的に単一の演算子ツリーを抽出することは不適当である。何故なら、ビュー定義に一致しない場合も起こり得るからであるが、なおも他のあるエンコード演算子ツリーが定義と一致する可能性もある。
【0035】
この問題の一例は、A join BおよびB join A双方をエンコードするグループについて考慮する場合の、A join Bの形態のビュー定義である。厳格な演算子マッピングを行なえば、2つのエンコード・ツリーの内1つだけに継承される。あるいは、全ての演算子ツリーを素早く抽出すると、実現不可能になる。2つのテーブルには2つの演算子ツリーがあり、3つのテーブルには12個、4つのテーブルには既に120の演算子ツリーがある。
【0036】
この問題に取り組むために、相補的な技法を用いる。第1の技法では、照合は、二進ジョイン(binary join)を含む演算子ツリーに対して行なわず、クエリ・グラフとして知られている、演算子を隠した形態に対して行なう。これは、基本的に、全ての基礎テーブルを、これらに適用される述語と共にリストに纏めたものである。一旦演算子ツリーを抽出したなら、ジョインを隠し、次いでクエリ・グラフを比較する。この方法は、演算子ツリーAjoin BまたはB joinAのいずれかを抽出し、具体化ビューA join Bとの一致という同じ結果が得られる。クエリ・グラフは、少なくともジョインおよび外部ジョイン(outerjoin)を表わすことができることが知られている。
【0037】
第2の技法では、選択肢テーブルから原始グラフ・ツリー(primitive graph-tree)を抽出し、ビューと照合する。このツリーは、特定の演算子集合のみを表出させることができる。ジョイン−グラフでは、抽出したツリーの中においてジョインおよびフィルタ演算子のみが許される。条件が長い値のリストを有するINリストである場合、あるフィルタ条件を半ジョイン(semijoin)に転換することが可能であるが、半ジョインを含む式はクエリ・グラフに直接マッピングしないものの、フィルタを有する式はマッピングする。したがって、望ましいのは、半ジョイン・ツリーではなく、フィルタ・ツリーである。同様に、場合によっては、OR条件がUNIONに転換する。ジョイン−グラフ抽出では、テーブル・エントリのために演算子ツリーを組み立てるとき、ジョインのみが有効な演算子と見なされる。
【0038】
また、グラフ・ツリーは、原始テーブルのみを表出させることも可能である。テーブル・エントリは、既にビューへの参照を含む場合もあるが、これらは特定のエントリのツリーの組み立てでは、除外すべきである。先に考慮した3つのテーブルのジョインでは、演算子ツリーVtjoin Cの抽出は、定義がA join B join Cであるビューと一致しない。したがって、原始データベース・テーブルを優先して、ビュー・テーブルは無視される。
【0039】
前述のように、所望の形態を有する演算子ツリーを抽出し、所与のテーブル・エントリに対して、そのクエリ・グラフを1回だけ構築する。次いで、得られたクエリ・グラフを再利用して、多数の候補ビューを照合する。
【0040】
一実施形態では、2つの広い式クラス、グラフ・ツリーまたはグラフ・ツリー上のGroup By(分類)のいずれかを考慮する。更に別の実施形態では、他のクラスも考慮することができる。特定のテーブル・エントリに対して、2つのツリーを、2つのビュー・クラスについて抽出する試みを行なう。
包含マッピング
ビュー定義を抽出したツリーと比較する場合、テーブル参照、述語、およびこれら2つの間の他のスカラー式の間で、マッピングを設定する。しかし、2つの式は、同一である必要はなく、多くの場合同一でない。その理由は、通常の探査プロセスは、クエリに対して可能な同等の演算子ツリーを全て考慮する訳ではないからである。例えば、3つの演算子ツリー810,820および830を図8に示す。第1演算子ツリー810は、ビュー定義であり、第2演算子ツリー820は、ビューがサブツリー上で直接一致する場合のクエリである。しかしながら、この第2演算子ツリー820は、初期選択評価を考慮するだけの最適化装置の通常の探索空間では決して考慮されない(何故なら、それらの後の評価は無駄であるからである)。次に、同一でない、第3演算子ツリー830とビューを照合しなければならない。
【0041】
この「正確でない」一致は、最適化装置の探索空間に対する制限の結果であり、処理すべき類似度は、最適化装置によって実施される探索空間を考慮する必要がある。この相違のために、残余演算子が必要となる。前述の場合では、ビューの照合によって、残余演算子ツリー840を生成する。残余式は、前述の場合に示したように、フィルタ、GroupBy(分類)、およびジョインを含むことができる。GroupByは、「より低い粒度」を計算するために「より高い粒度」総計を用いる場合に用いられる。例えば、(領域、月)によって総売上を計算する既存の具体化ビューを用いて、領域別に(全ての月)の全売上を計算することができる。
【0042】
例えば、ジョインは、より多くの列を得るために用いられる。例えば、具体化ビューが多数のジョインの結果を含む場合、これは顧客キーを格納するが、名前は格納しない。名前も要求するクエリでは、ビューを用いることができるが、残余演算は、既知のキーから名前を検索するために、顧客テーブルとの追加ジョインを含む。
【0043】
ジョインまたは総計のための特定の残余演算子のいくつかの導出は、当業者には公知である。また、例えば、BおよびC間(またはAおよびC間)に外部キーの制約がないのであれば、Ajoin B join Cという形態の具体化ビューを用いて、単一のジョインAjoin Bを有するクエリに答えることができる。これらの技法は、本発明によって利用し、影響力を及ぼすことができる。実際には、これは、最適化装置全体の機構が、特定の形態のビューを用いてあるクエリに答えることができるか否かに関する既存の結果にリンクする点である。
選択肢テーブルの拡張
一旦具体化ビュー選択肢を求めたなら(ビュー参照および恐らくは残余演算子)、これを選択肢テーブルに追加しなければならない。SQLサーバが用いるような、変換に基づく最適化装置のコンテクストでは、これは、最適化装置フレームワークによって処理され、式を取り込み、ルート演算子を、考慮対象の元のテーブル・エントリに追加し、必要であれば、新たなテーブル・エントリを作成する。ボトムアップ列挙手法では、選択肢をテーブル・エントリに添付する汎用的な標準機構はないので、既存のユーティリティおよびシステムのその他の実施態様の詳細を考慮に入れて、これをコード化する必要がある。
【0044】
一実施形態では、これまでの説明にしたがって、データベース・サーバの変換に基づく最適化装置に、以下の変更および追加を行なう。
・変換規則のためのパターンを記述するために用いる構造に、CGraphプリミティブを追加する。
【0045】
・2つの変換規則を追加する。一方は形態グラフ・ツリーの具体化ビューを扱い、他方はグラフ・ツリー上で形態Group By(分類)の具体化ビューを扱う。
【0046】
・二進ジョインを含む演算子ツリーを取り込み、クエリ・グラフを生成する関数を追加する。
・2つのクエリ・グラフの包含照合を行い、照合に成功した場合、残余演算子を生成する関数を追加する。
【0047】
・別々に発生するために用いた列を生成する新たなテーブルの円滑な集積のために、列マッピングを実行する関数を追加する。
結論
本願は、本発明のあらゆる改作および変形をも包含しようとするものである。本発明は、特許請求の範囲およびその均等物によってのみ限定されることを意図しているのは明白である。コストに基づくクエリ最適化装置によって、具体化ビューのクエリに対する適応可能性を決定することを可能にするシステムおよび方法について説明した。最適化の探査段階において、ビュー利用選択肢を生成するので、複雑なクエリにおける他の変換との相互作用が考慮に入れられる。具体化ビューを用いるか否かに最終判断は、推定したコストに基づいて行われる。
【図面の簡単な説明】
【図1】本発明を実現可能なコンピュータ・システムのブロック図である。
【図2】本発明によるクエリ最適化装置のブロック図である。
【図3】最適化の間に考慮する代替エントリのテーブルである。
【図4】図3のテーブルにおける1つエントリから形成した演算子ツリーの図である。
【図5】代替エントリの増強テーブルである。
【図6】具体化ビューを内部に組み込んだ演算子ツリーである。
【図7】代替エントリのテーブルに追加するビューを識別するプロセスを示すフローチャートである。
【図8】残余演算子ツリーを含む、多数の代替演算子ツリーの図である。
【符号の説明】
100 計算デバイス
102 演算装置
104 メモリ
106 基本的コンフィギュレーション
108 リムーバブル・ストレージ
110 非リムーバブル・ストレージ
112 通信接続部
114 入力デバイス
116 出力デバイス
210 元のクエリの識別
220 簡略化/正規化段階
230 「より良い」クエリ
240 探査段階
250 計画
300 選択肢テーブル
310,320,330,340 グループ
400 エンコード演算子ツリー
500 増強テーブル
510 増強を
600 有効な演算子
810,820,830,840 演算子ツリー

Claims (21)

  1. データベース・クエリの実行に用いるための選択肢の拡張テーブルを提供する、コンピュータにより実行される方法であって、
    前記コンピュータが、選択肢テーブルを得るステップであって、前記選択肢のテーブルが、いくつかのグループを含み、1つのグループが、前記データベース・クエリを表すルート・エントリを有し、他のグループが、前記データベース・クエリの下位式を表すルート・エントリを有する、ステップと、
    前記コンピュータが、前記クエリのための候補ビューを、複数の具体化ビューから選択するステップと、
    ルート・エントリ対し、
    前記コンピュータが、前記ルート・エントリ演算子ツリーを抽出するステップと、
    前記コンピュータが、各々の候補ビューに関し、該候補ビューのビュー定義から演算子ツリーを抽出するステップと、
    前記コンピュータが、前記ルート・エントリおよび前記候補ビューの演算子ツリーを照合するステップと、
    一致が得られた場合、前記コンピュータが、前記ルート・エントリの前記グループを対応する前記候補ビューで拡張することによって、対応する前記候補ビューを用いて前記選択肢テーブルを拡張するステップと、
    を備えた方法。
  2. 請求項1記載の方法において、ルート・エントリの前記演算子ツリーは二進ジョインを含み、前記コンピュータがルート・エントリの演算子ツリーを抽出するステップは、前記コンピュータが演算子をクエリ・グラフに隠すステップを含む、方法。
  3. 請求項2記載の方法において、前記コンピュータが前記演算子をクエリ・グラフに隠すステップは、前記コンピュータが基礎テーブルを、これらに適用する述語と共にリストにまとめるステップを含む、方法。
  4. 請求項1記載の方法において、前記コンピュータがビューの演算子ツリーを抽出するステップは、前記コンピュータが演算子を原始グラフ・ツリーに隠すステップを含む、方法。
  5. 請求項4記載の方法において、原始グラフ・ツリーを、特定の演算子集合に制限し、更に原始テーブルに制限する、方法。
  6. 請求項5記載の方法において、ジョイン・グラフのための前記演算子ツリーにおいて、ジョイン、外部ジョイン、およびフィルタ演算子のみを許可する、方法。
  7. 請求項1記載の方法において、ルート演算子を追加することによって、前記選択肢テーブルを拡張する、方法。
  8. 請求項1記載の方法であって、更に、
    前記コンピュータが、コストに基づく最適化装置を用いて、前記択肢の拡張テーブルに基づいて実行計画を選択するステップを含む、方法。
  9. 請求項1記載の方法において照合するステップは、更に、
    ルート・エントリ対し、
    前記コンピュータが、前記具体化ビューの定義から前記演算子ツリーへの包含マッピングを試みるステップ
    を備えた方法。
  10. 請求項記載の方法であって、更に、前記コンピュータが、前記包含マッピングの試みが成功した場合残余演算を定義する、方法。
  11. 請求項10記載の方法であって、更に、前記コンピュータが、前記選択肢テーブルに、定義した残余演算を追加するステップを含む、方法。
  12. 請求項11記載の方法において、フィルタ、分類およびジョインから成るグループから、前記残余演算を選択する、方法。
  13. 請求項1から12のいずれかに記載の方法をコンピュータに実行させる命令を有するコンピュータ読み取り可能記憶媒体。
  14. データベース・クエリの実行に用いるための選択肢の拡張テーブルを提供するクエリ最適化装置であって、
    択肢テーブルを得る手段であって、前記選択肢のテーブルが、いくつかのグループを含み、1つのグループが、前記データベース・クエリを表すルート・エントリを有し、他のグループが、前記データベース・クエリの下位式を表すルート・エントリを有する、手段と、
    前記クエリのための候補ビューを、複数の具体化ビューから選択する手段と、
    ルート・エントリ対し、
    前記ルート・エントリ演算子ツリーを抽出する手段と、
    各々の候補ビューに関し、該候補ビューのビュー定義から演算子ツリーを抽出する手段と、
    前記ルート・エントリおよび前記候補ビューの演算子ツリーを照合する手段と、
    を備え、
    一致が得られた場合、前記ルート・エントリの前記グループを対応する前記候補ビューで拡張することによって、対応する前記候補ビューを用いて前記選択肢テーブルを拡張するように構成された
    クエリ最適化装置。
  15. 請求項14記載のクエリ最適化装置において、ルート・エントリの演算子ツリーは、二進ジョインおよび外部ジョインを含み、ルート・エントリの演算子ツリーを抽出する手段は、演算子をクエリ・グラフに隠す手段を含む、クエリ最適化装置。
  16. 請求項15記載のクエリ最適化装置において、前記演算子をクエリ・グラフに隠す手段は、基礎テーブルを、これらに適用する述語と共にリストにまとめる手段を含む、クエリ最適化装置。
  17. 請求項14記載のクエリ最適化装置において、ビューの演算子ツリーを抽出する手段は、演算子を原始グラフ・ツリーに隠す手段を含む、クエリ最適化装置。
  18. 請求項17記載のクエリ最適化装置において、原始グラフ・ツリーを、特定の演算子集合に制限し、更に原始テーブルに制限する、クエリ最適化装置。
  19. 請求項18記載のクエリ最適化装置において、ジョイン・グラフのための前記演算子ツリーにおいて、ジョイン、外部ジョイン、およびフィルタ演算子のみを許可する、クエリ最適化装置。
  20. 請求項14記載のクエリ最適化装置において、ルート演算子を追加することによって、前記選択肢テーブルを拡張する、クエリ最適化装置。
  21. 請求項14記載のクエリ最適化装置であって、更に、
    コストに基づく最適化装置を用いて、前記択肢の拡張テーブルに基づいて、実行計画を選択する手段を含む、クエリ最適化装置。
JP2001296553A 2000-09-27 2001-09-27 クエリ最適化のためのコストに基づく具体化ビューの選択 Expired - Fee Related JP4955876B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/671,458 US6510422B1 (en) 2000-09-27 2000-09-27 Cost based materialized view selection for query optimization
US09/671458 2000-09-27

Publications (3)

Publication Number Publication Date
JP2002163290A JP2002163290A (ja) 2002-06-07
JP2002163290A5 JP2002163290A5 (ja) 2008-11-06
JP4955876B2 true JP4955876B2 (ja) 2012-06-20

Family

ID=24694591

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001296553A Expired - Fee Related JP4955876B2 (ja) 2000-09-27 2001-09-27 クエリ最適化のためのコストに基づく具体化ビューの選択

Country Status (3)

Country Link
US (1) US6510422B1 (ja)
EP (1) EP1193618B1 (ja)
JP (1) JP4955876B2 (ja)

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7167853B2 (en) * 1999-05-20 2007-01-23 International Business Machines Corporation Matching and compensation tests for optimizing correlated subqueries within query using automatic summary tables
US6748392B1 (en) * 2001-03-06 2004-06-08 Microsoft Corporation System and method for segmented evaluation of database queries
US6763359B2 (en) * 2001-06-06 2004-07-13 International Business Machines Corporation Learning from empirical results in query optimization
US7092951B1 (en) * 2001-07-06 2006-08-15 Ncr Corporation Auxiliary relation for materialized view
US7191169B1 (en) * 2002-05-21 2007-03-13 Oracle International Corporation System and method for selection of materialized views
US7406469B1 (en) * 2002-06-20 2008-07-29 Oracle International Corporation Linear instance mapping for query rewrite
US6598044B1 (en) * 2002-06-25 2003-07-22 Microsoft Corporation Method for choosing optimal query execution plan for multiple defined equivalent query expressions
US7246115B2 (en) * 2002-12-19 2007-07-17 International Business Machines Corporation Materialized view signature and efficient identification of materialized view candidates for queries
US20050210023A1 (en) * 2004-03-18 2005-09-22 Renato Barrera Query optimizer using implied predicates
KR101030368B1 (ko) * 2004-04-30 2011-04-20 마이크로소프트 코포레이션 데이터 저장소 내의 비순서화 및 순서화 컬렉션의 구현을 위한 시스템 및 방법
US7447679B2 (en) * 2004-05-07 2008-11-04 Oracle International Corporation Optimizing execution of a database query by using the partitioning schema of a partitioned object to select a subset of partitions from another partitioned object
US7353219B2 (en) 2004-05-28 2008-04-01 International Business Machines Corporation Determining validity ranges of query plans based on suboptimality
US7702627B2 (en) 2004-06-22 2010-04-20 Oracle International Corporation Efficient interaction among cost-based transformations
US20050283471A1 (en) * 2004-06-22 2005-12-22 Oracle International Corporation Multi-tier query processing
US20060004794A1 (en) * 2004-06-30 2006-01-05 Microsoft Corporation Rich application view system and method
US7814042B2 (en) * 2004-08-17 2010-10-12 Oracle International Corporation Selecting candidate queries
US20060085375A1 (en) * 2004-10-14 2006-04-20 International Business Machines Corporation Method and system for access plan sampling
US7536379B2 (en) * 2004-12-15 2009-05-19 International Business Machines Corporation Performing a multiple table join operating based on generated predicates from materialized results
US7359922B2 (en) * 2004-12-22 2008-04-15 Ianywhere Solutions, Inc. Database system and methodology for generalized order optimization
US7447681B2 (en) 2005-02-17 2008-11-04 International Business Machines Corporation Method, system and program for selection of database characteristics
US7765207B2 (en) * 2005-04-29 2010-07-27 Microsoft Corporation Fast rich application view initiation
US7814091B2 (en) * 2005-09-27 2010-10-12 Oracle International Corporation Multi-tiered query processing techniques for minus and intersect operators
US7617189B2 (en) * 2005-09-27 2009-11-10 Oracle International Corporation Parallel query processing techniques for minus and intersect operators
US7877379B2 (en) * 2005-09-30 2011-01-25 Oracle International Corporation Delaying evaluation of expensive expressions in a query
US20070162425A1 (en) * 2006-01-06 2007-07-12 International Business Machines Corporation System and method for performing advanced cost/benefit analysis of asynchronous operations
US7467128B2 (en) 2006-02-15 2008-12-16 Microsoft Corporation Maintenance of materialized outer-join views
US7945562B2 (en) * 2006-03-15 2011-05-17 Oracle International Corporation Join predicate push-down optimizations
US7490110B2 (en) * 2006-03-24 2009-02-10 International Business Machines Corporation Predictable query execution through early materialization
US7693820B2 (en) * 2006-04-21 2010-04-06 Microsoft Corporation Use of materialized transient views in query optimization
US7702616B1 (en) 2006-06-21 2010-04-20 Actuate Corporation Methods and apparatus for processing a query joining tables stored at different data sources
US7720838B1 (en) * 2006-06-21 2010-05-18 Actuate Corporation Methods and apparatus for joining tables from different data sources
EP2036003B1 (en) * 2006-06-30 2017-05-03 Leica Biosystems Imaging, Inc. Method for storing and retrieving large images via dicom
US20080172356A1 (en) * 2007-01-17 2008-07-17 Microsoft Corporation Progressive parametric query optimization
US7860899B2 (en) * 2007-03-26 2010-12-28 Oracle International Corporation Automatically determining a database representation for an abstract datatype
US8209322B2 (en) * 2007-08-21 2012-06-26 Oracle International Corporation Table elimination technique for group-by query optimization
US8438152B2 (en) * 2007-10-29 2013-05-07 Oracle International Corporation Techniques for bushy tree execution plans for snowstorm schema
US8150850B2 (en) * 2008-01-07 2012-04-03 Akiban Technologies, Inc. Multiple dimensioned database architecture
US8549529B1 (en) * 2009-05-29 2013-10-01 Adobe Systems Incorporated System and method for executing multiple functions execution by generating multiple execution graphs using determined available resources, selecting one of the multiple execution graphs based on estimated cost and compiling the selected execution graph
US9286371B2 (en) * 2010-12-23 2016-03-15 Sap Se Presenting a multidimensional decision table
DE112012004916T5 (de) * 2011-11-25 2014-09-11 Tibco Software Inc. Verbesserte Datenbankabfrage und Aufwandsschätzung
US9424304B2 (en) 2012-12-20 2016-08-23 LogicBlox, Inc. Maintenance of active database queries
US20150039610A1 (en) * 2013-07-31 2015-02-05 Thomas Hubauer Method and system for a data access based on domain models
US9870390B2 (en) 2014-02-18 2018-01-16 Oracle International Corporation Selecting from OR-expansion states of a query
US10585887B2 (en) 2015-03-30 2020-03-10 Oracle International Corporation Multi-system query execution plan
US10572477B2 (en) 2016-01-25 2020-02-25 International Business Machines Corporation Selection of implementation for query execution
CN108268524A (zh) * 2016-12-30 2018-07-10 北京国双科技有限公司 数据库聚合处理方法及装置
JP6812321B2 (ja) * 2017-08-25 2021-01-13 Kddi株式会社 データベース管理装置、データベース管理方法、及びデータベース管理プログラム
US11068482B2 (en) * 2018-04-13 2021-07-20 Microsoft Technology Licensing, Llc Computation reuse in analytics job service
US11055194B1 (en) 2020-01-03 2021-07-06 International Business Machines Corporation Estimating service cost of executing code
US11748349B2 (en) * 2020-03-31 2023-09-05 Sap Se Customizable filtering for query plan stability in database systems using abstract query plans
US11216462B1 (en) * 2020-08-14 2022-01-04 Snowflake Inc. Transient materialized view rewrite
CN114328606B (zh) * 2021-12-30 2022-11-29 星环信息科技(上海)股份有限公司 Sql执行效率的提高方法、设备及存储介质

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5345585A (en) * 1991-12-02 1994-09-06 International Business Machines Corporation Method for optimizing processing of join queries by determining optimal processing order and assigning optimal join methods to each of the join operations
US5659725A (en) * 1994-06-06 1997-08-19 Lucent Technologies Inc. Query optimization by predicate move-around
US6026390A (en) * 1996-05-29 2000-02-15 At&T Corp Cost-based maintenance of materialized views
US5897632A (en) * 1996-08-27 1999-04-27 At&T Corp Method and system for using materialized views to evaluate queries involving aggregation
US6275818B1 (en) * 1997-11-06 2001-08-14 International Business Machines Corporation Cost based optimization of decision support queries using transient views
US6199063B1 (en) * 1998-03-27 2001-03-06 Red Brick Systems, Inc. System and method for rewriting relational database queries
US6493699B2 (en) * 1998-03-27 2002-12-10 International Business Machines Corporation Defining and characterizing an analysis space for precomputed views

Also Published As

Publication number Publication date
JP2002163290A (ja) 2002-06-07
EP1193618B1 (en) 2017-12-27
US6510422B1 (en) 2003-01-21
EP1193618A3 (en) 2005-11-16
EP1193618A2 (en) 2002-04-03

Similar Documents

Publication Publication Date Title
JP4955876B2 (ja) クエリ最適化のためのコストに基づく具体化ビューの選択
CN1705945B (zh) 提供查询的属性的方法和系统
US7152074B2 (en) Extensible framework supporting deposit of heterogenous data sources into a target data repository
US6675160B2 (en) Database processing method, apparatus for carrying out the same and medium storing processing program
US20150169687A1 (en) Managing data queries
US20040220896A1 (en) System and method for optimizing queries on views defined by conditional expressions having mutually exclusive conditions
US20080140696A1 (en) System and method for analyzing data sources to generate metadata
US8166075B2 (en) Method for mapping an X500 data model onto a relational database
GB2555087A (en) System and method for retrieving data from server computers
US7370030B2 (en) Method to provide management of query output
US11100098B2 (en) Systems and methods for providing multilingual support for data used with a business intelligence server
CA2427228A1 (en) Information retrieval systems for optimization of queries having maximum or minimum function aggregation predicates
Sakr et al. Hybrid query execution engine for large attributed graphs
US20090030896A1 (en) Inference search engine
US8423523B2 (en) Apparatus and method for utilizing context to resolve ambiguous queries
CN110147396B (zh) 一种映射关系生成方法及装置
Vasilyeva et al. Leveraging flexible data management with graph databases
JP4879425B2 (ja) 関数に基づく比較を有するクエリのためのインデックスの使用
US20060143167A1 (en) System and method for providing access to data with user defined table functions
El Ahdab et al. Unified views for querying heterogeneous multi-model polystores
Dhande et al. Improving query processing performance using optimization techniques for object-oriented DBMS
JP3498926B2 (ja) 文書データベース管理システム
US7627553B1 (en) Custom queries for segmentation
CN117216091A (zh) 一种HiveSQL多重连接查询的优化方法、装置、设备及存储介质
JP2004259066A (ja) データソース統合プログラム及びシステム並びに方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080924

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080924

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110418

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110715

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110721

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110817

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110822

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110914

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110920

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111018

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20111227

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120216

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120316

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4955876

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150323

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees