JP4627777B2 - データに関数を適用した結果に対する構造化インデックス - Google Patents

データに関数を適用した結果に対する構造化インデックス Download PDF

Info

Publication number
JP4627777B2
JP4627777B2 JP2007502785A JP2007502785A JP4627777B2 JP 4627777 B2 JP4627777 B2 JP 4627777B2 JP 2007502785 A JP2007502785 A JP 2007502785A JP 2007502785 A JP2007502785 A JP 2007502785A JP 4627777 B2 JP4627777 B2 JP 4627777B2
Authority
JP
Japan
Prior art keywords
data
query
indexed view
view
indexed
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
JP2007502785A
Other languages
English (en)
Other versions
JP2007528075A (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 JP2007528075A publication Critical patent/JP2007528075A/ja
Application granted granted Critical
Publication of JP4627777B2 publication Critical patent/JP4627777B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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/24535Query rewriting; Transformation of sub-queries or views
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • 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/99933Query processing, i.e. searching
    • Y10S707/99934Query formulation, input preparation, or translation
    • 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/99933Query processing, i.e. searching
    • Y10S707/99935Query augmenting and refining, e.g. inexact access

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、一般に、情報の記憶および引出しの分野に関し、より詳細には、記憶したデータを効率よく検索することに関する。
本出願は、2004年3月8日出願の米国特許仮出願第10/795623号明細書の優先権を主張する。この開示全体を参照により本明細書に組み込む。
消費者は、自分のコンピュータを主に個人の情報を、それが従来のPIM(個人情報マネジャー)様式のデータであるか、デジタル音楽などの媒体、または写真であるかにかかわらず、通信し整理するために使用する。デジタルコンテンツの量および未処理バイトを記憶する能力は、著しく増大しているが、これらのデータを整理し統合するために消費者に利用可能な方法は、それに追いついていない。知識労働者は、情報を管理し共有するのに多大な時間を費やしており、ある研究の推定では、知識労働者は、非生産的な情報関連活動に自分たちの時間の15〜25%を費やしている。他の研究では、典型的な知識労働者は、一日当たり約2.5時間を情報検索に費やしていると推定している。
コンピュータシステム内の情報を整理する従来の手法は、ファイル−フォルダ−ディレクトリベースのシステム(「ファイルシステム」)を使用して、ファイルを記憶するのに使用する記憶媒体の物理的な編成の抽象化に基づく、複数のフォルダからなるディレクトリ階層にファイルを整理することが中心であった。1960年代に開発されたマルティックス(Multics)オペレーティングシステムは、ファイル、フォルダ、およびディレクトリを使用して、オペレーティングシステムレベルで記憶可能な単位のデータを管理する先駆的な役割を果たした。具体的には、マルティックスは、ファイル階層内で、ユーザ(アプリケーションおよびエンドユーザ)にはファイルの物理アドレスが見えない記号アドレスを使用した(それによって、ファイルのパスの考え方を導入した)。このファイルシステムでは、個々のファイルのファイルフォーマットに全く関知せず、各ファイルの関係は(すなわち、階層内でのファイルの場所以外は)、オペレーティングシステムレベルでは関連しないものとみなした。マルティックスが登場してからは、記憶可能なデータは、オペレーティングシステムレベルでは、ファイル、フォルダ、およびディレクトリ内に整理されてきた。これらのファイルは一般に、ファイルシステムによって保持される特別なファイル内で実施されるファイル階層自体(「ディレクトリ」)を含む。このディレクトリは、ディレクトリ内の他のすべてのファイルに対応するエントリおよび階層内でのこのようなファイルのノード位置(本明細書では、フォルダと称する)のリストを保持する。これが約40年間の当技術分野の状況であった。
ファイルシステムは、コンピュータの物理的な記憶システムに存在する情報の合理的な表現を提供するが、この物理的な記憶システムの抽象化であり、したがって、これらのファイルを利用するには、ユーザが操作するものと(コンテキストを有する単位、特徴、および他の単位との関係)、オペレーティングシステムが提供するもの(ファイル、フォルダ、ディレクトリ)の間であるレベルの間接処理(解釈)が必要とされる。その結果、ユーザ(アプリケーションおよび/またはエンドユーザ)は、たとえ、非効率であり、一貫性がなく、その他の点でも望ましくないときでさえ、情報の単位をファイルシステム構造にすることを余儀なくされる。既存のほとんどのファイルシステムは、ファイルおよびフォルダを整理するのにネストしたフォルダメタファ(metaphor)を利用するので、ファイルの数が増えると、柔軟で効率のよい整理方式を維持するのに必要な労力は極めて困難なものになる。
ファイルシステムの欠点に対処する以前になされたいくつかの試みはうまくいかなかった。これらの以前の試みの一部は、物理アドレスではなく、内容によってデータにアクセスし得るメカニズムを提供するために、内容によりアドレス可能なメモリを使用することに関係するものである。しかし、内容によりアドレス可能なメモリは、キャッシュおよびメモリ管理ユニットなどの装置による小規模な使用には有用であることがわかったが、物理的な記憶媒体などの装置での大規模な使用が、様々な理由から可能ではないことから、このような努力はうまくいかないことがわかり、そのため、このような解決策は全く存在しない。OODB(オブジェクト指向型データベース)システムを利用した他の試みがなされたが、これらの試みは、データベースの性格を強く帯び、ファイルによらない表現というよい点を特徴としながら、ファイルの表現の扱いの点で有効ではなく、ハードウエア/ソフトウエアインターフェースシステムレベルで、ファイル−フォルダベースの階層構造のスピード、効率、および簡便さを踏襲することができなかった。
(以下でさらに説明する)「WinFS」などの新たに開発された記憶システムは、データベース内の1つ(または複数)のテーブルとして、複数のファイルからなるディレクトリを記憶する。各ファイルは、ベーステーブル内では行によって表現され、「ディレクトリ内のすべてのファイルを列挙せよ」などのファイルシステム操作は、データベースエンジンに対するクエリを使用して実施される。そのため、記憶部に対する基本的な動作を効率よく実施することが、データベースのクエリを効率よく最適化する動作になる。
このような記憶システムでは、ファイルの概念は、「オブジェクト」の概念に拡張される。ファイルについてのメタデータは、(記憶システム内で定義される)スキーマとともに、管理されたCLR(共通言語ランタイム)オブジェクト内に記憶され、それによって、このオブジェクトについての許容可能な記述データが表現される。例えば、写真は、その解像力、撮影された時間、および場所の情報などのデータを格納する典型的なCLRオブジェクトを有することになる。このオブジェクトモデルは、データの継承をサポートする。データの継承により、別のデータから型を受け継ぎ、新しいフィールドを追加することが可能である。例えば、「運転免許証写真(DriversLicensePicture)」などのサブクラスの写真を生成し得るはずである。このようなサブクラスは、運転免許証IDフィールドなどの追加の情報を含むことになる。
これらの新たに開発された、WinFSなどの記憶システムでは、提示されたスキーマは、翻訳層を介してテーブルにマッピングされる。ユーザは、ベーステーブルに対して操作を行う代わりに、データの一連のビューを見るだけである。このマッピングを厳密に設計することは重要ではないが、このマッピングは、WinFS APIと、基礎となる記憶フォーマットとをつなぐ働きをする。ユーザは、このマッピングを直接制御せず、また見ることもない。
WinFS Storeでは、以前の従来型ファイルシステムの場合のようにオブジェクトのファイル名ではなく、オブジェクトの型に基づいて、オブジェクトに対してクエリを行う概念も提示する。型ベースのクエリは、厳密な型、または所与の型から派生した任意の型を検索することができる。この後者の形態を階層マッチングと呼び、共通のWinFS操作になると予想される。WinFSは、ファイルによる検索もサポートする。
WinFSのスキーマモデルにより、クエリプロセッサにいくつかの新しい挑戦課題が提起される。ユーザ定義型すなわちUDTが広範囲に使用され、UDTの型に基づいてテーブルからあらゆるUDTを引き出すことが一般的になる。さらに、WinFSでは、UDT継承を用い、テーブルから所与の型だけでなく、任意のサブタイプの要素もすべて引き出すことも要件になる。複数のテーブルが存在し、各テーブルに含まれるUDT、型、型のトポロジー、そのトポロジー内でのUDT分布の数は異なる。さらに、検索操作は、例えば、XML文書の検索、あるいはオブジェクト内のすべてのフィールドに対する検索の実施を含めて、従来方式のリレーショナルデータベースシステムでは見られない動作になり得る。これらの特性により、濃度およびコストの推定を正確に行うことが難しくなり、また、型/サブタイプの階層に基づいて値を効率よく引き出すことも難しくなる。
10年もの間、データベースの研究の主題は、(本明細書では、インデックス付きビューとも称する)実体化ビューであった。基本的な考え方は、なんらかのクエリの結果を実体化し、また記憶し、次いで、類似のクエリがデータベースに提示されたときに、このような計算結果を用いることである。例えば、一日当たりの売上の結果を記憶し、例えばその後、その結果(この実体化ビュー)を用いて、所与の月の売上高または年間総売上高などのいくつかの関連するクエリに回答することが望ましいことがある。
追加の柔軟性については、アプリケーションが、ある種のビューが存在すること、あるいは実体化されたことを認識する必要がないようにすべきである。クエリプロセッサは、ユーザのクエリと、既存のあらかじめ計算された結果(実体化ビュー)との一致を識別し、該当するときにはこの結果を用いるべきである。これは、ビュー活用問題として知られている。すなわち、ベーステーブルに関して記述されたユーザのクエリと、実体化ビューの集合とが与えられる場合、どの実体化ビューを用いてこのようなクエリに回答し得るかという問題である。そして、この質問のコストに基づく変形は、それらの実体化ビューのどれを用いるべきかである。
実体化ビューは、それをデータベースの物理的な設計の一部とすべきであり、かつその主な目的は性能を向上させることであるという点でインデックスに類似している。データベースの論理設計およびアプリケーションの正確さは、実体化ビューの存在の有無に無関係とすべきである。インデックスの場合と同様に、実体化ビューにより、クエリの性能を著しく向上させることができる。
クエリオプティマイザは通常、図1に示すように、初期簡略化段階の後で、代替手段を探索し、コストに基づいて実行プランを選択するように構築される。
簡略化/正規化段階2の間、可能な場合には、選択をプッシュダウン(push down)する、また、サブクエリを結合として書き直すなど、元のクエリQになんらかの変更が加えられる。これらの改変は、「よりよい」クエリを得ることを目標としている。一般にこの段階では、詳細なコストの推定は行われず、結果として単一の「よりよい」クエリQ’が生成される。
最適化における第2段階5(探索およびコストに基づく選択)は、複数の代替手段を生成し、詳細なコストモデルを用いて、予想実行コストが最も安価な代替手段を選択することを対象とする。探索段階で用いる2つの従来方式アーキテクチャは、ボトムアップ動的プログラミング結合列挙法および代替手段の変換駆動生成法である。よく知られているように、いずれのアーキテクチャも、クエリの副表現ごとの様々な可能性を簡潔に符号化する代替手段のテーブルを準備する。
探索中に実体化ビューを考慮することは、このような実体化ビューを用いるエントリによって代替手段のテーブルを増大させることを含む。元のクエリを、テーブルA、B、Cに対する結合と仮定する。以下に、(論理演算子のみによる)典型的な代替手段を示す。
Figure 0004627777
符号化された演算子ツリーは、ルートエントリ(上記のクエリではABC)から開始して代替手段のテーブルを横に進み、各エントリから演算子を選択することによって得られる。例えば、各エントリの第1選択肢をとることによって、図2に示す演算子ツリー10が得られる。
次に、実体化ビュー
Figure 0004627777
があると仮定する。これは、AとBの結合の結果を含むVtと称する記憶されたテーブルがあることを意味する。これは、結合の副表現を得る有効な方法なので、代替手段は、この代替手段によって増え、以下のようになる。
Figure 0004627777
図3に、オプティマイザによって生成され、かつ考慮され得る有効な演算子ツリー13を示す。
代替手段のテーブルを増大させるメカニズムは、オプティマイザのアーキテクチャによって決まる。変換ベースのオプティマイザの場合、システムに新しい変換ルールを追加することによって拡張部が得られる。ボトムアップ結合列挙法では、構築手順を変更すべきである。代替手段がテーブルに追加された後で、コストを推定し、高価な解決策を取り除き、演算子ツリーを組み立て、最適な解決策を構築する通常のオプティマイザメカニズムを適用する。
処理の正確さを保証するために、実体化ビューの内容は、ベーステーブルの変更に関して常に同期していなければならない。例えば、注文が入力または改変されたときに、1週間当たりの売上高の実体化を更新して、変更を反映させなければならない。これは、ビュー保守問題として知られている。すなわち、ベーステーブル内の基礎となるデータが変化した場合、この変更を実体化ビューに加えなければならない。このような変更を反映するために、実体化ビュー全体を計算し直す必要がないことが望ましい。というのは、再計算には時間およびコストがかかるからである。
既存のデータ記憶およびデータベースの技術における上記の欠点に鑑みて、実体化ビューを効率よく使用することが求められている。本発明は、これらの要求を満足するものである。
以下の概要では、本発明の様々な態様を概観する。本発明の重要な態様をすべて網羅的に説明することを意図しておらず、また、本発明の範囲を規定するためのものでもない。そうではなくて、この概要は、以下の詳細な説明および図の導入部分として役立てるためのものである。
本発明は、ベーステーブルに対する潜在的に多値属性を備えた2次インデックスとして、(本明細書では、インデックス付きビューとも称する)実体化ビューを使用することを対象とする。こうすると、このインデックスを使用して、データに関数を適用した結果に関して検索が行われる。さらに、本発明では、テーブル値関数呼出しの結果に対してインデックス処理を行う。このような関数呼出しの結果に対してビューをインデックス化すると、複雑な構造の内容をインデックス化することができる。
アンネスト(unnest)操作の例は、「cross apply unnest」である。この例では、UNNESTは、複雑な構造としてUDT集合を取得する関数であり、この集合の各要素ごとに行を出力する。他の関数の例は、XMLデータをより検索可能な形態に変換するか、あるいは、複数の列を単一のインデックス構造に分解して特別な検索を行い得るはずである。本発明では、クエリ実行プランについての追加の選択肢が提供され、それによってより最適化されたクエリが得られる。
本発明の別の態様によれば、インデックス付きビューからベーステーブルへの逆結合が行われる。これにより、インデックス付きビューに存在しないベーステーブルからのフィールドを、アクセスパスとしてインデックス付きビューを用いて処理した、このテーブルに対するクエリの結果に含めることができる。こうすると、インデックス付きビューにはないが、ベーステーブルにはある列をクエリの結果に含める手段が得られる。この逆結合は、論理行ロケータとして働く一意のクラスタリングキーによって、単一テーブルインデックス付きビューからベーステーブルまでサポートされる。そのため、この一意のクラスタリングキーによって、インデックス付きビューからベーステーブルに、システムが逆結合を行うことができる。これらの特徴により、インデックス付きビューを用いて複雑な関数の呼出しの内容に関してテーブルをインデックス化し、この関数呼出しに関する基準と一致する行からデータを効率よく引き出すことができる。
本発明の他の特徴および利点は、本発明の以下の詳細な説明および添付の図面から明らかになるであろう。
上記の概要ならびに好ましい実施形態の以下の詳細な説明は、添付の図面を併せ読めばよりよく理解されよう。本発明を説明するために、これらの図面に本発明の構造の例を示すが、本発明は、ここで開示する特定の方法および手段に限定されるものではない。
法的な要件が満足されるように具体的に主題を説明する。ただし、この説明自体は、本特許の範囲を限定するためのものではない。そうではなくて、本発明者らは、現在または将来の他の技術とともに、異なるステップまたは本明細書で説明するものに類似のステップの組合せを含む他のやり方で、特許請求する主題を実施することもできることを企図している。さらに、本明細書では、ここで採用する方法の異なる要素を結合するために「ステップ」という用語を用いるが、この用語を、個々のステップの順序を明示的に記載しない限り、本発明で開示する様々なステップ間の特定の順序を示唆すると解釈すべきではない。
WinFSは、ファイルシステムにおけるオブジェクトの概念を導入するファイルシステム/データ記憶部である。この記憶部における操作の1つは、オブジェクトを効率よく見つけ出し、そのオブジェクトに対するクエリを可能にすることである。本発明では、この操作の態様を極めて効率のよいものにし得る方法を説明する。
コンピューティング環境の例
本明細書および特許請求の範囲では、以下の用語は下記に示す意味を有する。
「オブジェクト」は、1組の基本的なプロパティを有し、ハードウエア/ソフトウエアインターフェースシステムがアクセスし得る記憶可能な情報の単位である。これらのプロパティは、このハードウエア/ソフトウエアインターフェースシステムのシェルによってエンドユーザに提示されるすべてのオブジェクトにわたって共通にサポートされるものである。オブジェクトは、新しいプロパティおよびリレーションシップを導入し得るフィーチャを含めて、あらゆる型にわたって共通にサポートされるプロパティおよびリレーションシップも有する。
「オペレーティングシステム」(OS)は、アプリケーションプログラムとコンピュータハードウエアを仲介する働きをする特別なプログラムである。オペレーティングシステムは、ほとんどの場合、シェルおよびカーネルを有する。
「ハードウエア/ソフトウエアインターフェースシステム」は、コンピュータシステムの基礎となるハードウエアコンポーネントと、このコンピュータシステム上で実行されるアプリケーションとの間のインターフェースとして働くソフトウエア、またはハードウエアとソフトウエアの組合せである。ハードウエア/ソフトウエアインターフェースシステムは一般に、オペレーティングシステムを含む(ある種の実施形態では、オペレーティングシステムのみからなることがある)。ハードウエア/ソフトウエアインターフェースシステムは、コンピュータシステム内のオペレーティングシステムの代わりに、あるいはそれに加えて、VMM(仮想マシンマネジャー)、CLR(共通言語ランタイム)またはその機能的な均等物、JVM(Java(登録商標)仮想マシン)またはその機能的な均等物、または他のこのようなソフトウエアコンポーネントも含み得る。ハードウエア/ソフトウエアインターフェースシステムの目的は、ユーザがアプリケーションプログラムを実行し得る環境を提供することである。ハードウエア/ソフトウエアインターフェースシステムの目標は、コンピュータシステムを使い易くし、コンピュータハードウエアを効率的に利用することである。
本発明の多くの実施形態は、コンピュータ上で実行し得るものである。図4および以下の考察は、本発明を実施し得る適切なコンピューティング環境を簡単かつ全体的に説明するためのものである。必要条件ではないが、本発明は、クライアントワークステーションまたはサーバなどのコンピュータによって実行される、プログラムモジュールなどのコンピュータが実行可能な命令の一般の状況において説明する。一般に、プログラムモジュールは、特定のタスクを実施し、また特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。さらに、ハンドヘルド装置、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラム可能な民生用電子機器、ネットワークPC、ミニコンピュータ、大型コンピュータなどを含めて、他のコンピュータシステム構成で本発明を実施し得ることが当業者には理解されよう。本発明は、通信ネットワークを介して接続された遠隔処理装置によってタスクが実施される分散コンピューティング環境で実施することもできる。分散コンピューティング環境では、プログラムモジュールは、ローカルおよびリモートのコンピュータ記憶装置に配置することができる。
図4に示すように、汎用コンピューティングシステムの例は、処理装置21、システムメモリ22、およびシステムメモリを含めて様々なシステムコンポーネントを処理装置21に接続するシステムバス23を備えた従来型パーソナルコンピュータ20などを含む。システムバス23は、メモリバスまたはメモリコントローラ、ペリフェラルバス、およびローカルバスを含めて、様々なバスアーキテクチャのいずれかを利用するいくつかのタイプのバス構造のいずれかとし得る。システムメモリは、ROM(読出し専用メモリ)24およびRAM(ランダムアクセスメモリ)25を含む。例えば起動時に、パーソナルコンピュータ20内の要素間で情報を転送する助けとなる基本ルーチンを含むBIOS(基本入出力システム)26は一般に、ROM24内に格納される。
パーソナルコンピュータ20は、図示しないハードディスクに対して読書きを行うハードディスクドライブ27、リムーバブル磁気ディスク29に対して読書きを行う磁気ディスクドライブ28、およびCD−ROMその他の光メディアなどのリムーバブル光ディスク31に対して読書きを行う光ディスクドライブ30をさらに含み得る。ハードディスクドライブ27、磁気ディスクドライブ28、および光ディスクドライブ30はそれぞれ、ハードディスクドライブインターフェース32、磁気ディスクドライブインターフェース33、および光ドライブインターフェース34によってシステムバス23に接続される。これらのドライブおよびそれらに関連するコンピュータ可読メディアは、パーソナルコンピュータ20用のコンピュータ可読命令、データ構造、プログラムモジュールその他のデータの不揮発性記憶装置を提供する。
本明細書で説明する環境の例は、ハードディスク、リムーバブル磁気ディスク29、およびリムーバブル光ディスク31を採用するが、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌーイ(Bernoulli)カートリッジ、RAM(ランダムアクセスメモリ)、ROM(読出し専用メモリ)など、コンピュータがアクセス可能なデータを記憶し得る他のタイプのコンピュータ可読メディアもこの動作環境の例で使用し得ることが当業者には理解されよう。
オペレーティングシステム35、1つまたは複数のアプリケーションプログラム36、他のプログラムモジュール37、およびプログラムデータ38を含めて、いくつかのプログラムモジュールを、ハードディスク、磁気ディスク29、光ディスク31、ROM24、またはRAM25に記憶することができる。ユーザは、キーボード40およびポインティングデバイス42などの入力装置を介してパーソナルコンピュータ20にコマンドおよび情報を入力することができる。(図示しない)他の入力装置は、マイクロホン、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナなどを含み得る。上記その他の入力装置は、システムバスに結合されたシリアルポートインターフェース46を介して処理装置21に接続されることが多いが、パラレルポート、ゲームポート、またはUSB(ユニバーサルシリアルバス)など他のインターフェースによって接続することもできる。モニタ47その他のタイプの表示装置も、ビデオアダプタ48などのインターフェースを介してシステムバス23に接続される。モニタ47に加えて、パーソナルコンピュータは一般に、スピーカおよびプリンタなど(図示しない)他の周辺出力装置も含む。図4のシステムの例は、ホストアダプタ55、SCSI(小型コンピュータシステムインターフェース)バス56、およびSCSIバス56に接続された外部記憶装置62も含む。
パーソナルコンピュータ20は、リモートコンピュータ49など、1つまたは複数のリモートコンピュータへの論理接続部を使用するネットワーク環境で動作し得る。リモートコンピュータ49は、別のパーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス(peer device)その他一般のネットワークノードとすることができ、一般に、パーソナルコンピュータ20に関連して上記で説明した要素の多くまたはすべてを含むが、図4にはメモリ記憶装置50のみを示す。図4に示す論理接続部は、LAN(ローカルエリアネットワーク)51およびWAN(ワイドエリアネットワーク)52を含む。このようなネットワーク環境は、一般事務所、企業規模のコンピュータネットワーク、イントラネット、およびインターネットで一般的なものである。
LANネットワーク環境で用いられるとき、パーソナルコンピュータ20は、ネットワークインターフェースまたはアダプタ53を介してLAN51に接続される。WANネットワーク環境で用いられるとき、パーソナルコンピュータ20は一般に、インターネットなどのワイドエリアネットワーク52を介して通信を確立するためのモデム54その他の手段を含む。内蔵型または外付けとし得るモデム54は、シリアルポートインターフェース46を介してシステムバス23に接続される。ネットワーク環境では、パーソナルコンピュータ20に関連して示すプログラムモジュールまたはその一部は、リモートメモリ記憶装置に格納することができる。図に示すネットワーク接続部は例であり、コンピュータ間で通信リンクを確立する他の手段を使用し得ることを理解されたい。
本発明の多くの実施形態が、コンピュータ化したシステムに特によく適していることが考えられ、本明細書では、このような実施形態に本発明を限定することを意図していない。そうではなくて、本明細書では「コンピュータシステム」という用語は、本質的に電子装置、機械装置、論理装置、または仮想装置のいずれであるかにかかわらず、押しボタンを備えた、あるいは、ボタンが押されること、またはボタンが押されるのと同等のことを判定し得る任意のあらゆる装置を包含するためのものである。
図5のブロック図に示すように、コンピュータシステム200は、ハードウエアコンポーネント202、オペレーティングシステムコンポーネント204、およびアプリケーションプログラムコンポーネント206という大雑把に3つのコンポーネント群に分割し得る。
あるコンピュータシステム200では、図4を再度参照すると、ハードウエア202は、CPU(中央処理装置)21と、メモリ(ROM24およびRAM25)と、BIOS(基本入出力システム)26と、とりわけキーボード40、マウス42、モニタ47、および/または(図示しない)プリンタなどの様々なI/O(入出力)装置とを含み得る。ハードウエアコンポーネント202は、コンピュータシステム200用の基本リソースを含む。
アプリケーションプログラムコンポーネント206は、コンパイラ、データベースシステム、ワードプロセッサ、業務用プログラム、ビデオゲームなどを含めて、様々なソフトウエアプログラムを含むが、これらに限定されるものではない。アプリケーションプログラムは、コンピュータのリソースを使用して、問題を解決し、解決策を提供し、様々なユーザ(例えば、機械その他のコンピュータシステム、および/またはエンドユーザ)のデータを処理する手段を提供する。
オペレーティングシステムコンポーネント204は、オペレーティングシステム自体ならびにそのシェルおよびカーネルを含む。OS(オペレーティングシステム)は、アプリケーションプログラムとコンピュータハードウエアを仲介する働きをする特別なプログラムであり、オペレーティングシステムの目的は、ユーザがアプリケーションプログラムを実行し得る環境を提供することである。オペレーティングシステムの目標は、コンピュータシステムを使い易くし、コンピュータハードウエアを効率的に利用することである。
オペレーティングシステムは一般に、起動時にコンピュータシステム内にロードされ、その後で、このコンピュータシステム内のすべてのアプリケーションプログラム(または単に「アプリケーション」)を管理する。これらのアプリケーションプログラムは、API(アプリケーションプログラムインターフェース)を介してサービスを要求することによって、オペレーティングシステムと対話する。いくつかのアプリケーションプログラムにより、エンドユーザは、コマンド言語またはGUI(グラフィカルユーザインターフェース)などのユーザインターフェースを介してオペレーティングシステムと対話することができる。
従来、オペレーティングシステムは、アプリケーション用の様々なサービスを実施する。複数のプログラムが同時に実行されることがあるマルチタスクオペレーティングシステムでは、オペレーティングシステムは、どのアプリケーションをどんな順序で実行すべきか、また、各アプリケーションには、別のアプリケーションに番を切り換える前にどのくらいの時間を許容すべきかを決定する。オペレーティングシステムは、複数のアプリケーション間で内部メモリの共有も管理し、ハードディスク、プリンタ、およびダイヤルアップポートなど、取り付けられたハードウエア装置に対する入出力も処理する。オペレーティングシステムは、動作状態および発生したエラーに関して、各アプリケーションに(ある種の場合には、エンドユーザに)メッセージも送信する。オペレーティングシステムは、バッチジョブ(例えば、印刷)の管理を肩代わりすることもでき、それによって、それを開始したアプリケーションはその作業から解放され、他の処理および/または動作を再開することができる。並列処理を実現し得るコンピュータ上では、オペレーティングシステムは、プログラムが一度に2つ以上のプロセッサ上で実行されるように、そのプログラムを分割することも管理する。
オペレーティングシステムのシェルは、オペレーティングシステムとの(「コマンドインタプリタ」としても知られる)対話式エンドユーザインターフェースである。シェルは、アプリケーションプログラムが直接アクセス可能な、かつエンドユーザさえも直接アクセス可能なオペレーティングシステムの外側の層である。シェルとは異なり、カーネルは、ハードウエアコンポーネントと直接対話する、オペレーティングシステムの最も内側の層である。
当業者にはよく理解されるように、「ファイル」は、オペレーティングシステムが離散的な(記憶可能かつ引出し可能な)実体として操作し得る(オペレーティングシステム自体ならびにアプリケーションプログラム、データセットなどが含まれるが、これらに限定されるものではない)情報の実体である。最新のオペレーティングシステム(Windows(登録商標)、Unix(登録商標)、Linux、Mac OSなど)では、ファイルは、オペレーティングシステムによって操作される記憶可能な情報(例えば、データ、プログラムなど)の基本的な単位であり、ファイル群は「フォルダ」内に整理される。Microsoft Windows(登録商標)、Macintoshその他のオペレーティングシステムでは、フォルダは、1つの実体として引き出し、移動させ、その他の方法で操作し得るファイルの集合である。DOS、z/OS、およびほとんどのUnix(登録商標)ベースのオペレーティングシステムなど、ある種の他のオペレーティングシステムでは、フォルダではなく「ディレクトリ」という用語を用いる。初期のAppleコンピュータシステム(例えば、Apple IIe)では、「カタログ」という用語を用いた。ただし、本明細書では、これらの用語はすべて同義語であり、交換可能である。本発明では、これらの用語は、階層的な情報記憶構造に関する他のあらゆる等価な用語および言及をさらに含むためのものである。
当業者には周知であり、理解されているように、ディレクトリ(すなわち、複数のフォルダからなるディレクトリ)は、ツリーに基づく階層構造である。ファイルは、このツリー構造のノードであるフォルダ内の場所に基づいてグループ分けされる。例えば、図6に示すように、DOSベースのファイルシステムの基本フォルダ(または「ルートディレクトリ」)302は、複数のフォルダ304を含み、各フォルダ304はさらに、(その特定のフォルダの「サブフォルダ」として)追加のフォルダ306を含み得る。これらのフォルダ306もそれぞれ、追加のフォルダ308を含み得る。これが限りなく続く。これらのフォルダはそれぞれ、1つまたは複数のファイル310を含み得るが、オペレーティングシステムレベルでは、フォルダ内の個々のファイルには、このツリー階層内のこれらのファイルの場所以外に何も共通点がない。当然のことながら、ファイルをフォルダ階層に整理するこの手法は、これらのファイルを記憶するのに使用する典型的な記憶メディア(例えば、ハードディスク、フロッピー(登録商標)ディスク、CD−ROMなど)の物理的な編成を間接的に反映している。
上記に加えて、各フォルダは、そのサブフォルダおよびそのファイルの入れ物である。すなわち、これらのサブフォルダおよびファイルはこのフォルダに属している。例えば、オペレーティングシステムによってフォルダが消去されると、そのサブフォルダおよびファイルも消去される(これらのサブフォルダはそれぞれ、さらにそれ自体のサブフォルダおよびファイルを含む)。同様に、各ファイルは、1つのフォルダにしか属することができず、ファイルをコピーし、そのコピーを異なるフォルダ内に置くことができるが、ファイルのコピー自体は、元のファイルとは直接関連しない明確に別の実体である(例えば、オペレーティングシステムレベルでは、元のファイルに変更を加えても、それはコピーファイルに反映されない)。この点に関して、ファイルおよびフォルダはしたがって、特質上本質的に「物理的」なものである。というのは、フォルダは、物理的な入れ物の概念上の均等物であり、ファイルは、入れ物の中にある離散的かつ別個の物理的な要素の概念上の均等物だからである。
本発明とともに使用し得る、データを整理し、検索し、共有する記憶プラットホームは、オブジェクトと呼ぶデータの形態を含めて、あらゆるタイプのデータの記憶部となるように設計される。図7を参照すると、本発明による記憶プラットホーム400は、データベースエンジン414上で実施されるデータ記憶部402を備える。一実施形態では、このデータベースエンジンは、オブジェクトリレーショナル拡張子を伴うリレーショナルデータベースエンジンを備える。一実施形態では、リレーショナルデータベースエンジン414は、Microsoft SQL Serverリレーショナルデータベースエンジンを含む。
データ記憶部402は、データの整理、検索、共有、同期、およびセキュリティをサポートするデータモデル404を実施する。データの特定の型は、スキーマ440などのスキーマに記述する。記憶プラットホーム400は、これらのスキーマを配備するだけでなく、これらのスキーマを拡張するツール446を提供する。
データ記憶部402内で実施される変更追跡メカニズム406により、データ記憶部に加えられた変更を追跡することができる。データ記憶部402は、セキュリティ機能408およびプロモーション/デモーション(promotion/demotion)機能410も提供する。データ記憶部402は、データ記憶部402の機能を、他の記憶プラットホームコンポーネントおよびこの記憶プラットホームを使用するアプリケーションプログラム(例えば、アプリケーションプログラム450a、450b、および450c)に提示する1組のアプリケーションプログラミングインターフェース412も提供する。
本発明の記憶プラットホームはさらに、API(アプリケーションプログラミングインターフェース)422を含む。API422により、アプリケーションプログラム450a、450b、および450cなどのアプリケーションプログラムが、記憶プラットホームの上記すべての機能にアクセスし、スキーマに記述されたデータにアクセスすることができる。記憶プラットホームAPI422は、OLE DB API424およびMicrosoft Windows(登録商標)Win32 API426などの他のAPIと組み合わせてアプリケーションプログラムが使用し得る。
本発明の記憶プラットホーム400は、ユーザ間またはシステム間でのデータの共有を容易にする同期サービス430を含めて、アプリケーションプログラムに様々なサービス428を提供し得る。例えば、同期サービス430により、データ記憶部402と同じフォーマットを有する他のデータ記憶部440との相互運用、ならびに他のフォーマットを有するデータ記憶部442へのアクセスが可能になる。記憶プラットホーム400は、Windows(登録商標)NTFSファイルシステム418などの既存のファイルシステムとデータ記憶部402の相互運用を可能にするファイルシステム機能も提供する。
少なくともいくつかの実施形態では、記憶プラットホーム420は、データを他のシステムに作用させ、これらの他のシステムと対話し得る追加の機能を含むアプリケーションプログラムも提供する。これらの機能は、Info Agentサービス434および通知サービス432などの追加のサービス428の形態、ならびに他のユーティリティ436の形態で実施し得る。
少なくともいくつかの実施形態では、記憶プラットホームは、コンピュータシステムのハードウエア/ソフトウエアインターフェースシステムにおいて実施されるか、あるいはその一体部分を形成する。例えば、本発明の記憶プラットホームは、オペレーティングシステム、VMM(仮想マシンマネジャー)、CLR(共通言語ランタイム)またはその機能的な均等物、あるいはJVM(Java(登録商標)仮想マシン)またはその機能的な均等物において実施されるか、あるいはその一体部分を形成するが、これらに限定されるものではない。
本発明の記憶プラットホームにより、その共通の記憶基盤およびスキーマ化されたデータを介して、消費者、知識労働者、および企業のより効率的なアプリケーションの開発が可能になる。この記憶プラットホームは、そのデータモデルに固有な機能を利用可能にするだけでなく、既存のファイルシステムおよびデータベースアクセスの方法を包含し拡張する豊富で拡張可能なプログラミングの範囲を提供する。
本明細書の説明および様々な図において、本発明の記憶プラットホーム400は、「WinFS」と称することができる。ただし、記憶プラットホームを指すのにこの名前を用いることは、単に説明の都合であり、いかなる形でも限定することを意図するものではない。
本発明の記憶プラットホーム400のデータ記憶部402は、この記憶部内に存在するデータの整理、検索、共有、同期、およびセキュリティをサポートするデータモデルを実施する。本発明のデータモデルでは、「オブジェクト」は、記憶情報の基本単位である。このデータモデルは、オブジェクトおよびオブジェクトの拡張子を宣言し、オブジェクト間のリレーションシップを確立し、オブジェクトを整理し分類するメカニズムを提供する。
一実施形態ではMicrosoft SQL Serverエンジンを含むリレーショナルデータベースエンジン414は、組込みスカラー型をサポートする。組込みスカラー型は、「固有」かつ「簡単」である。これらは、ユーザがこれら自体の型を定義し得ないという点で固有であり、これらが、複雑な構造をカプセル化できないという点で簡単である。「UDT」(ユーザ定義型)は、複雑な構造化型を定義することによりユーザが型システムを拡張し得るようにすることによって、固有なスカラー型システムの先まで型を拡張し得るメカニズムを提供する。ユーザによって定義された後で、組込みスカラー型を使用し得る型システムのどこでもUDTを使用することができる。
記憶プラットホームのスキーマは、データベースエンジン記憶部内でUDTクラスにマッピングされる。データ記憶部のオブジェクトは、Base.Item型から派生するUDTクラスにマッピングされる。拡張子も、UDTクラスにマッピングされ、継承を利用する。ルート拡張子型は、Base.Extensionであり、これからすべての拡張子型が派生する。
UDTは、状態(すなわち、データフィールド)および挙動(すなわち、ルーチン)を有するCLRクラスである。UDTは、C#、VB.NETなどのマネージ言語のいずれかを用いて定義される。UDTメソッドおよび演算子は、この型のインスタンスに対して、T−SQL内で呼び出すことができる。UDTは、例えば、行内の列の型、T−SQL内のルーチンのパラメータの型、またはT−SQL内の変数の型とし得る。
本発明では、ベーステーブルとして知られる(というのは、このテーブルが、ビューを定義する基礎になるからである)テーブルに対してインデックス付きビュー(すなわち、実体化ビュー)を生成し、クエリ処理を強化するのに使用し得る追加の操作および構造においてこのインデックス付きビューを使用する。このインデックス付きビューは、ベーステーブルに対するインデックスとして働く。このインデックスを、ベーステーブルへのアクセスパスとして使用して、インデックス付きビューの構造とベーステーブルとが一致するクエリを解決することができる。
典型的なインデックス付きビューは、データエントリを含み、関連するサブエントリその他の従属する、すなわち派生したデータを含み得るはずである。インデックス付きビューは、これらのデータを変換する関数呼出しの結果を含み得る。例として、インデックス付きビューは、ネストを含み得る。この場合、1つのエントリは、複数の関連するサブエントリを有する。例えば、第1ベーステーブルが名前を含み、第2ベーステーブルが住所を含むと仮定する。これら2つのベーステーブルに対する「結合」操作により、個々の名前についての住所が得られる。図8に示すインデックス付きビュー500など、名前および関連する住所を含むインデックス付きビューを記憶することができる。インデックス付きビュー500では、名前「Alice」は、住所1、住所2、および住所3という関連する3つの住所を有する。インデックス付きビューの例500の他の名前(例えば、「Bob」および「Charlie」)はそれぞれ、関連する1つの住所を有する。このインデックス付きビューは、名前「Alice」に関連する複数の住所のためにネストしているとみなされる。このネストを解除し、それによって、Aliceに関連する住所の1つが変更された場合、この住所に直接アクセスすることができ、この変更を反映するためにインデックス付きビューを計算し直す必要がないことが望ましい。他の関数の結果も同様にインデックス化し得るはずである。
このネストを解除するために、図9に示すように、一意のクラスタリングキー550を構築する。以下でさらに詳細に示し説明するように、キー550は、インデックス付きビューにおいてネストした各エントリごとに別々のサブエントリを提供する。そのため、この実施例におけるキー550は、それぞれ住所1、住所2、および住所3の住所のうち異なる1つの住所に関連する3つのエントリ「Alice」を提供する。このキーにより、アプリケーションは、ベーステーブルとインデックス付きビューの間を行ったり来たりし得る。
インデックス付きビューは、複数値属性を伴うベーステーブルに対する2次インデックスとして扱うことができる。そのため、本発明では、インデックス付きビューを用いて、関数呼出しの結果(この実施例では、ネストになったデータなど)に関して検索を行う。インデックス処理は、(アンネスト操作などの)関数呼出しの結果に対して実施される。すなわち、派生したデータ(すなわちサブエントリ)がインデックス化される。本発明では、複雑な構造をインデックス化して、より多くのインデックス付きビューを求め、利用可能にすることができる。こうすると、クエリ実行プランについてのより多くの選択肢が提供され、それによってより最適化されたクエリが得られる。
以下でさらに説明するように、関数呼出し操作の結果に対してビューをインデックス化することにより、(ネストした集合の内容などの)データの複雑な変換をインデックス化する方法が提供される。本発明がサポートするアンネスト操作の例は、SQL Serverの「cross apply unnest」である。具体的には、「cross apply unnest」操作を行うと、インデックス付きビューにおけるネストの1つのレベルがアンネストされる。ただし、本発明によれば、任意の数のレベルをアンネストし得ることが企図されている。より一般には、このようにして関数呼出しの複数のレベルをインデックス化し得ることが企図されている。
さらに、インデックス付きビューからベーステーブルへの「逆結合」が提供される。これにより、インデックス付きビューに存在しないベーステーブルからのフィールドを、アクセスパスとしてインデックス付きビューを用いて処理した、このテーブルに対するクエリの結果に含めることができる。逆結合は、インデックス付きビューから、ビューを定義するベーステーブルまで用いられる。こうすると、インデックス付きビューにはないが、ベーステーブルにはある列をクエリの結果に含める手段が得られる。
望ましくは、逆結合は、論理行ロケータとして働く一意のクラスタリングキーによって、単一テーブルインデックス付きビューからベーステーブルまでサポートされる。この一意のクラスタリングキーによって、インデックス付きビューからベーステーブルに、システムが逆結合することができる。これらの特徴により、インデックス付きビューを用いて、複数組または複数値の属性に対する「cross apply unnest」操作など、データに関する関数呼出しの結果の内容に関してテーブルをインデックス化することができる。
上記で述べたように、インデックス付きビューは、(cross apply unnest操作などの)データに関する関数呼出しの結果に対して定義することができる。こうすると、逆結合機能と組み合わせて、テーブル内のレコードに、これらのレコードに含まれる値の集合の内容に基づいてアクセスすることができる。このように、インデックス付きビューを用いて、UDTの複数組属性に対するインデックスを生成し得る。例えば、以下のインデックス付きビューは、市(city)に関する検索の実施を高速化する助けとなり得る。
Figure 0004627777
望ましくは、addrIDおよびpidを用いて、このインデックスを一意なものにすることに留意されたい。また、addrIDは、単一の複数組住所(address)内では一意であると仮定する。以下の例に、このインデックス化機能によって一般の関数呼出しがどのように可能になるかを示す。
Figure 0004627777
この実施例では、「unnest」の代わりに、本明細書で論じた「データに関する関数呼出し」を表す「FUNCTION」を用いた。一般に、「FUNCTION」の代わりに異なる関数を使用し得るはずである。可能な例は、集合内でデータをアンネストすること、XML文書を分解すること、または(UDTなどの)複雑な構造からの複数のフィールドをインデックス化することである。このメカニズムは、データに関して他の関数にも利用することが可能である。
クエリに関するインデックス付きビューを用いて、ベーステーブル(例えば、「人(person)」というベーステーブル)を読み込まずにこのクエリに回答することができる。こうすると、インデックスはベーステーブルよりもはるかに小さいことがあるので有益なことがある。例えば、「人」というベーステーブルは望ましくは、属性pcolを含む。属性pcolはUDTである。pcolのフィールドの1つ(住所)は、複数組(集合値属性)のものである。「人」という仮定テーブルである表1を考える。
Figure 0004627777
表1に、最も細かいレベルの粒度を示す。この例に本質的でない列は割愛してあり、それらを省略記号で示す。pidおよび名前は原子性属性であり、そのため、値を1つしか含まないが、住所は集合であり、そのため、この例では2つ以上の値を含むことに留意されたい。市は、住所の各メンバのフィールドである。
「人」のテーブルでは、各名前ごとに複数の副行が示されている。例えば、Bobは、それぞれBellevueおよびCorvallisに対応するAddrID 1およびAddrID 2という2つの住所の副行を有し、Sueは、それぞれBellevueおよびBerkeleyに対応するAddrID 3およびAddrID 4という2つの住所の副行を有する。
インデックス付きビューiv_cityを考える。「人」のテーブルの上記の値に関して、iv_cityの内容は、表2に示すようになる。
Figure 0004627777
iv_cityの各行は、最も細かいレベルの粒度のデータの形の情報に対応する。そのため、このインデックス付きビューは、各副行エントリがこの時点でそれ自体の行内にあることを示している。Pidは、第1テーブルに戻る逆結合として用いることができることに留意されたい。例えば、iv_city内のPid 1は、「人」のテーブル内のPid 1に逆結合することになる。部分的なデータ(すなわち、対象とするデータのみ。例えば、Bellevueの住人のみ)をインデックス化することが可能である。
次に、Corvallisに少なくとも1つの住所をもつすべての人の名前を見つけるために、以下のクエリを考える。
Figure 0004627777
図10に示す実行プランにより、iv_city(アンネストの結果に関するインデックス付きビュー)およびperson,pidキーに関するベーステーブル「人」への逆結合をともに用いて、上記のクエリに回答することができる。
(図10に示すように)cross apply unnestによるインデックス付きビューiv_cityと逆結合操作の組合せにより、人のpcol UDTフィールド値の住所集合中の個々の住所の値に含まれる市に基づいて、「人」のテーブルの行の素早い結合ルックアップが可能になることに留意されたい。
与えられたデータの例では、左側のインデックススキャン(index scanにより、iv_cityの1つの行(iv_cityの内容を示す上記表2の最後の行)だけが識別されることになる。iv_cityのこの行は、Bobについての人の行と結合する。次いで、「人」のテーブルのBobの行は、その上の半結合演算子を通過する。図10では、「nest−loop right semi−join」演算子は、逆結合演算子として働く。次いで、pidフィールドおよびpcol.nameフィールドがprojectされ、この場合も1つの行になる。重複は存在せず、そのため並べ替えおよび重複の除去により、これらのフィールドの入力ストリームは変化しない。表3に最終的な結果を示す。
Figure 0004627777
より具体的には、インデックス付きビューからの逆結合に関して、インデックス付きビューVがN個のベーステーブルT1...TNからなる関数であると仮定する。さらに、Vは、select、project、join、group−by、およびaggregation演算子を使用するだけで構築されると仮定する。各テーブルT1...TNは、そのテーブルについてのメタデータ中で識別される1つまたは複数のキーを有する。キーは、テーブルの1つまたは複数の列からなる1つの組であり、そのため、この組に含まれる値により、このテーブル内の行が一意に識別される。
T1...TNに対して定義されたクエリQと一致するこの組の行を、V内の行だけを用いて識別し得ると仮定する。(Qは、より大きなクエリの一部とし得るはずである。一般性を失わずに、Qを独立クエリとみなす。)Vに照会することによってQの結果の行を識別し得るとしても、これは、Qから得られた行を、Vから完全に構築し得ることを意味するものではない。望ましくはQの結果に現れるべきある種の列が、T1...TNの1つにしか現れない場合がそうである。
インデックス付きビューVから、このビューVを定義するベーステーブルT(T1...TNの1つ)への逆結合は、任意のキーTに関するVとTの間の等結合、およびTのこのキーから引き出されたV内の1つ(または複数)のフィールドとして定義される。逆結合を実施するキーは、単一列または複数列の主キー、あるいは、単一列または複数列の候補キーとし得るが、これらに限定されるものではない。キーは、インデックスを含むこともできるし、含まないこともある。キーがインデックスを含まない場合、このインデックスをクラスタ化することもできるし、しないこともある。本明細書では、ベーステーブルのクラスタリングキーに関して実施するように逆結合を説明したが、本発明は、任意の型のキーに関して逆結合し得ることを含む。
逆結合の例として、以下のSQL文を用いて定義するテーブルを考える。
Figure 0004627777
以下のように、enoに関して順序づけたクラスタ化アクセスパスを用いてベーステーブル「emp」が記憶されると定義する。
Figure 0004627777
enoはempのキーである。次に、以下のように定義されたインデックス付きビューを考える。
Figure 0004627777
次に、以下のクエリを考える。
Figure 0004627777
インデックス付きビュー「highpaid」を逆結合とともに使用してこのクエリを解決する方法の例として、図11に示すアクセスプランにより、このクエリに対する回答の例が提供される。図11に示すように、インデックス付きビュー「highpaid」から選択した行は、逆結合操作として「nested−loop−join」操作を使用して、キーenoに関してベーステーブル「emp」に「逆結合」される。したがって、「逆結合」という用語を用いて、あるキーに関して、インデックス付きビューからベーステーブルへの逆結合を記述する。
逆結合とともに任意のタイプの結合アルゴリズム(例えば、ネストループ、ソート−マージ(sort−merge)、ハッシュ)を用いることができることが企図されている。
図12は、ネストしたデータを有するベーステーブル内のデータに対してクエリを行う方法の例の流れ図である。ステップ600で、クエリを受け取る。ステップ610で、ベーステーブル内のデータについてのインデックス付きビューを受け取るか、引き出すか、またはその他の方法で生成する。ステップ620で、クエリオプティマイザは、このクエリが、インデックス付きビューに一致するクエリパターンに一致するか、またはこのクエリパターンを含むかどうかを判定する。このクエリまたはその一部がインデックス付きビューに一致する場合、ステップ630でクエリオプティマイザは、関数を適用する代わりに、一致するインデックス付きビューをインデックスとして使用するプランを生成する。このインデックス付きビューが、元のクエリで要求された列をすべて渡すことができない場合、ステップ640でオプティマイザは、元のベーステーブルとの逆結合を導入して、クラスタリングキーによって欠けている列を取得する。こうすると、インデックス付きビューには存在しないベーステーブルからのフィールドを、クエリの結果に含めることができる。
クエリまたはクエリの一部が、どのインデックス付きビューとも一致しない場合、ステップ650でクエリオプティマイザは、データに元の関数を適用するプランを生成する。
本発明では、部分インデックスの一般化としてのインデックス付きビューも可能であるし、型階層に対する部分インデックスとしてのインデックス付きビューも可能である。インデックス付きビューと、インデックス付きビューからベーステーブルに逆結合する能力とを組み合わせることによって、本発明は、部分インデックスとして知られる技術への一般化を実現する。インデックス付きビューと逆結合機能を組み合わせると、部分インデックスよりも強力な1組の機能が得られる。
テーブル内の行のサブセットだけのインデックスを生成するために、インデックス付きビューの定義において適切な条件を(例えば、Where節で)設ける。例えば、「Fred」という人の検索を高速化するビューを生成するために、以下のインデックス付きビューを定義する。
Figure 0004627777
ベーステーブルのクラスタリングキーに関して逆結合を行う機能と、インデックス付きビューについての既存のクエリ一致機能とを仮定すると、このインデックス付きビューは、「pcol.nameが「Fred」である人から*を選択せよ」などのクエリに回答する助けとなり得る。このクエリは、インデックス付きビューの1つの行を読み込み、それを人のテーブルに逆結合することによって解決することができるはずである。
さらに、インデックス付きビューと、ベーステーブルへの逆結合機能とを組み合わせると、オブジェクトリレーショナルDBMS(データベース管理システム)における(UDTまたはオブジェクトとしても知られている)1組のユーザ定義型のインデックス化をサポートすることもできる。これらの型が、(型階層またはIS−A階層としても知られている)一般化階層内で構成される場合、インデックス付きビューと逆結合機能の組合せを用いて、型が所与の型のものであるか、またはそのサブタイプの1つであるテーブル内の値をインデックス化することが可能である。
型に関してフィルタリングされた部分インデックスが必要とされないか、あるいは望まれないサブタイプのフィールドに関してインデックス化を行うために、計算される列に関する従来方式のインデックスを実施し得る。望ましくは、インデックス化すべきフィールドを含まない型については、計算される列の値をNULLにする。このインデックスをクラスタ化することもできるし、クラスタ化を解除することもできる。例えば、ある人の給与に関するクラスタ化されたインデックスを生成するには、以下のようにする。この場合、非従業員の給与フィールドはNULLである。
Figure 0004627777
所与のUDT列についての型階層のサブセットをインデックス化するために(例えば、そのサブセットに含まれる値しか、インデックス化したい特定の属性をもたないので)、ビュー定義のWhere節においてIS OF述語を用いて部分インデックスを生成する。例えば、インデックス内に非従業員についてのレコードを含まない、従業員の給与に関するインデックスを生成するには、以下のようにする。
Figure 0004627777
このインデックス付きビューの例は、非従業員の給与についてのNULLエントリを含まない。好ましくは、非従業員は、このビューのWhere節中のIS OF条件によってフィルタリングにより除外されるので、インデックス化されない。
XMLフィールドのインデックス化
本発明の態様を用いて、XML値データフィールドをインデックス化することができる。データベースのテーブル内に記憶されたリレーショナルデータとは異なり、XMLは半構造化されている。すなわち、これらのデータは、事前宣言したスキーマには準拠しないが、スキーマ情報を表現するタグによって注釈がつけられている。従来方式のデータベースシステム内でXMLデータをインデックス化し処理するために、これらのデータをテーブルフォーマットに分解しなければならない。以下の例に、XML断片およびこれに対応する1つの可能なテーブルフォーマット(表4)を示す。
Figure 0004627777
Figure 0004627777
XMLをテーブルフォーマットに分解する様々な異なる方法が可能であり、本発明は、特定の1つを使用することに限定されるものではない。そうではなくて、例えば本明細書でXML変換と称する、XML断片が与えられるとテーブル値フォーマットを出力する任意の関数を用いることができる。
XML変換関数は、上記で説明したテーブル値関数である。本発明により、XML断片に対するXML変換の呼出し結果をインデックス化することができる。例えば、ユーザは、タグ、値、および階層情報の列、またはこれらの組合せに関するインデックスを形成したいことがある。
ユーザがXML断片に対してクエリを行い得る1つの可能な方法を以下のように記述し得るはずである。
Figure 0004627777
ただし、「<xml...>」は、所与のXML断片を表す。クエリは、「Sam Jones」という値を有し、「name」というタグがついた要素についてこのXML断片を検索することになる。
さらに、XML断片は、XML文字列として与えるのではなく、データベーステーブルにおけるXMLデータ型フィールドの形式で供給することができる。XMLデータ型列からのXMLを用いたクエリの例は、以下のように記述し得るはずである。
Figure 0004627777
上記は、XML断片型のsales(販売)というテーブル内にsalesperson(販売員)という列があること、すなわち、salesのどの行も、salespersonと称することができるXML断片を含むことを仮定している。上記のクエリは、salesテーブルに照会することと、XML断片に照会することを組み合わせる。このクエリは、2004年2月28日に商談をまとめた販売員の電話番号を返す。
複数の列またはフィールドの変換
別の実施形態の例では、複雑な構造の複数の列および/または複数のフィールドをインデックス化することができる。一般に、データベースシステム内の構造をインデックス化することにより、複雑な構造内の単一の列または場所からのデータをインデックス化することができる。例えば、表2に関して説明した例では、ネストした集合における住所フィールドをインデックス化するメカニズムを説明した。本発明の態様を用いて、複雑なオブジェクトまたは行に含まれる複数のフィールドから派生したデータをインデックス化することもできる。
Figure 0004627777
表5のインデックス付きビューの例には、人およびこれらの人たちの住んでいる場所のテーブルが記載されている。これらのデータに関する関数呼出しにより、表6に示すデータを返すことができるはずである。
Figure 0004627777
表6には、表5からのデータに関する異なる種類のインデックス付きビューの結果が記載されている。この例では、表5からの複数の列が、インデックス付きビュー内で合わせてインデックス化されている。この例では複数の列を用いているが、UDTなどの複雑なオブジェクトからの複数のフィールド、あるいは列とフィールドの組合せを用いることも可能である。さらに、この変換は、データの列またはフィールドに適用される特別な論理を含み得る。この例では、各州の短縮形は、参照先の変換および参照元データの一部である。ただし、各州のフルネームは、関数呼出しの一部として生成され、その結果にも挿入される。多くの変換が可能であり、単一の値についての追加のマッピングを導入することに限定されるものではない。可能なマッピングの例は、列に含まれるデータのサブストリングを取り出すこと、なんらかのやり方で複数の列またはフィールドからのデータを組み合わせること、または単一の列またはフィールドからの複数の語を複数の行に分割することを含み得るが、これらに限定されるものではない。表6は、単一のフィールドからの複数の語を複数の行に返す例も含む。このテーブルの追加の列を用いて、関数呼出しの結果の一意性を保証するために、逆結合を可能にするか、あるいは列を導入するロケータ列を含めることができる。
この例の変換により、複雑な変換の結果をインデックス化することができる。また、ある種のクラスのクエリについて、データに対するクエリをより効率よく行うこともできる。1つのこのようなクエリを、以下のように記述し得るはずである。
Figure 0004627777
このクエリでの所望の結果は、「Lake」または「California」という語になんらかの関連をもつ人を見つけることである。この関連は、テーブル内の列のいずれかと厳密に列が一致することとすることもできるし、テーブル内のデータに関する、場合によってはユーザが追加で定義した論理の結果とすることもできる。この例では、「Lake」は、「Sara」を含むレコードに関連する1つのフィールドの2番目の語であり、「California」は、「Bob」を含むレコードに関係する。この論理は、関数「SOMECOLUMNCONTAINS」にカプセル化されるが、これは、任意の検索状況において使用し得るはずである。例えば、同じ論理を、SQL関数「LIKE」を使用して適用し得るはずである。ただし、他の関数も、類似のやり方で本発明を利用することができる。
クエリプロセッサは、この関数呼出しの結果に対して生成されたインデックス付きビューを用いて、LIKEまたはSOMECOLUMNCONTAINSを含むクエリを効率よく解決し得る。望ましくは、この論理では、データについてのこの特定の関数呼出しの結果を含むインデックス付きビューを効率よく見つけるのに、一致論理を使用するだけでよい。
結論
本明細書で説明した様々なシステム、方法、および技術は、ハードウエアまたはソフトウエアによって、あるいは、適切な場合にはそれらの組合せによって実施することができる。そのため、本発明の方法および装置、あるいは本発明のある種の態様または一部は、フロッピー(登録商標)ディスク、CD−ROM、ハードドライブその他の機械可読の記憶メディアなど、有形のメディアにおいて実施されるプログラムコード(すなわち命令)の形態をとることができる。このプログラムコードが、コンピュータなどの機械にロードされ、その機械よって実行されると、この機械は、本発明を実施する装置になる。プログラム可能なコンピュータ上でプログラムコードを実行する場合には、このコンピュータは一般に、プロセッサ、このプロセッサによって読出し可能な記憶メディア(例えば、揮発性および不揮発性メモリおよび/または記憶要素)、少なくとも1つの入力装置、および少なくとも1つの出力装置を含むことになる。好ましくは、コンピュータシステムと通信するために、高水準の手続き型プログラミング言語またはオブジェクト指向プログラミング言語で1つまたは複数のプログラムを実施する。ただし、これら1つ(または複数)のプログラムは、所望の場合には、アセンブリまたは機械語で実施し得る。いずれの場合でも、この言語は、コンパイル型またはインタプリタ型の言語とすることができ、ハードウエアの実施形態と組み合わせることができる。
本発明の方法および装置は、電気的な配線またはケーブル布線、光ファイバ、または他の任意の送信形態など、なんらかの送信メディアを介して送信されるプログラムコードの形態でも実施し得る。このプログラムコードが、EPROM、ゲートアレイ、PLD(プログラム可能な論理デバイス)、クライアントコンピュータ、ビデオレコーダなどの機械によって受信され、その機械にロードされ、その機械によって実行されると、この機械は、本発明を実施する装置になる。汎用プロセッサ上で実施されると、このプログラムコードは、プロセッサと結合して、本発明のインデックス化機能を実施するように動作する固有な装置を提供する。
様々な図の好ましい実施形態に関して本発明を説明してきたが、他の類似の実施形態を用いて、あるいは、上記で説明した実施形態に改変および追加を施して、本発明から逸脱することなく本発明の同じ機能を実施し得ることを理解されたい。例えば、パーソナルコンピュータの機能をエミュレートするデジタル装置の状況で本発明の実施形態の例を説明したが、本発明は、このようなデジタル装置に限定されるものではなく、この応用例で説明したように、有線または無線にかかわらず、ゲーム用コンソール、ハンドヘルドコンピュータ、携帯型コンピュータなど、任意の数の既存のまたは新たに生まれつつあるコンピューティング装置または環境に適用することもできるし、通信ネットワークを介して接続され、このネットワークを介して対話する任意の数のこのようなコンピューティング装置に適用し得ることが当業者には理解されよう。さらに、本明細書では、特に無線ネットワーク装置の数が増加し続けているので、ハンドヘルド装置用オペレーティングシステムその他の特定用途向けオペレーティングシステムを含めて、様々なコンピュータプラットホームが企図されていることを強調しておく。したがって、本発明は、単一の実施形態のいずれにも限定されるべきではなく、添付の特許請求の範囲による広さおよび範囲において解釈すべきである。
従来方式のクエリオプティマイザのブロック図である。 演算子ツリーの例の図である。 実体化ビューを組み込んだ図2の演算子ツリーの図である。 本発明の態様を組み込むことができるコンピュータシステムを表すブロック図である。 ハードウエアコンポーネント、オペレーティングシステムコンポーネント、およびアプリケーションプログラムコンポーネントの3つのコンポーネント群に分割されたコンピュータシステムを示すブロック図である。 フォルダ内にグループ分けされるファイル用の、ツリーに基づく階層構造を示す図である。 本発明とともに使用し得る記憶プラットホームの例を示す図である。 本発明によるインデックス付きビューの例の図である。 本発明によるクラスタリングキーの例の図である。 本発明による実行プランの例を示す図である。 本発明によるアクセスプランの例を示す図である。 本発明による、データに対してクエリを行う方法の例の流れ図である。

Claims (8)

  1. コンピュータがデータベースに格納されたベーステーブル内に存在するデータに対してクエリを行う方法であって、
    クエリを受け取るステップと、
    前記データベースに格納された前記データに関する関数呼出しについてのインデックス付きビューを受け取るステップであって、前記関数呼出しはテーブル値関数を含み、前記データはXML値データフィールドを含む、ステップと、
    前記クエリが前記インデックス付きビューと一致するか判定することによって、前記インデックス付きビューで前記クエリに対し回答可能であるか決定するステップと、
    前記インデックス付きビューで前記クエリに対し回答可能である場合、前記インデックスビューを前記データに関する関数呼出しのインデックスとして適用するステップと、
    前記インデックス付きビューで前記クエリに対し回答不可能である場合、逆結合を前記インデックス付きビューに導入して前記インデックス付きビューには存在しない前記ベーステーブルからのフィールドを前記クエリ結果に含め、前記インデックス付きビューを前記データに関する関数呼出しのインデックスとして適用するステップと、
    前記インデックスを前記データに関する関数呼出しに使用してクエリ結果を決定するステップであって、ネストされたデータにアンネスト操作を行い、前記アンネスト操作により得られたアンネスト結果に対してビューをインデックス化する、ステップと
    を含むことを特徴とする方法。
  2. 前記コンピュータが、データの論理行ロケータとして働くクラスタリングキーを決定するステップをさらに含むことを特徴とする請求項1に記載の方法
  3. 前記クラスタリングキーは一意のものであることを特徴とする請求項2に記載の方法
  4. 前記コンピュータが、前記クラスタリングキーによって、前記インデックス付きビューから前記ベーステーブルに逆結合するステップをさらに含むことを特徴とする請求項2に記載の方法
  5. コンピュータがデータベースに格納されたベーステーブル内に存在するデータに対してクエリを行う方法であって、
    クエリを受け取るステップと、
    前記データベースに格納された前記データに関する関数呼出しについてのインデックス付きビューを受け取るステップであって、前記関数呼出しはテーブル値関数を含み、前記データはXML値データフィールドを含む、ステップと、
    前記クエリが前記インデックス付きビューと一致するか判定することによって、前記インデックス付きビューで前記クエリに対し回答可能であるか決定するステップと、
    前記インデックス付きビューで前記クエリに対し回答可能である場合、前記インデックス付きビューを前記データに関する関数呼出しのインデックスとして適用するステップと、
    前記インデックス付きビューで前記クエリに対し回答不可能である場合、逆結合を前記インデックス付きビューに導入して前記インデックス付きビューには存在しない前記ベーステーブルからのフィールドを前記クエリ結果に含め、前記インデックス付きビューを前記データに関する関数呼出しのインデックスとして適用するステップと、
    前記インデックスを前記データに関する関数呼出しに使用してクエリ結果を決定し、前記クエリ結果を格納するステップであって、ネストされたデータにアンネスト操作を行う、ステップと、
    を含み、前記インデックス付きビューが複数の部分インデックスの一般化であることを特徴とする方法
  6. コンピュータがデータベースに格納されたベーステーブル内に存在するデータに対してクエリを行う方法であって、
    クエリを受け取るステップと、
    前記データベースに格納された前記データに関する関数呼出しについてのインデックス付きビューを受け取るステップであって、前記関数呼出しはテーブル値関数を含み、前記データはXML値データフィールドを含む、ステップと、
    前記クエリが前記インデックス付きビューと一致するか判定することによって、前記インデックス付きビューで前記クエリに対し回答可能であるか決定するステップと、
    前記インデックス付きビューで前記クエリに対し回答可能である場合、前記インデックス付きビューを前記データに関する関数呼出しのインデックスとして適用するステップと、
    前記インデックス付きビューで前記クエリに対し回答不可能である場合、逆結合を前記インデックス付きビューに導入して前記インデックス付きビューには存在しない前記ベーステーブルからのフィールドを前記クエリ結果に含め、前記インデックス付きビューを前記データに関する関数呼出しのインデックスとして適用するステップと、
    前記インデックスを前記データに関する関数呼出しに使用してクエリ結果を決定し、前記クエリ結果を格納するステップであって、ネストされたデータにアンネスト操作を行う、ステップと、
    を含み、前記インデックス付きビューが型階層に関する部分インデックスであることを特徴とする方法
  7. 前記コンピュータが、前記データに関する前記関数呼出しのインデックスとして前記インデックス付きビューを適用する前に、前記インデックス付きビューがクエリパターンと一致するか判定することをさらに含むことを特徴とする請求項1に記載の方法
  8. 前記データは、複合体構造の複数の列または複数のフィールドを含むことを特徴とする請求項1に記載の方法
JP2007502785A 2004-03-08 2004-07-29 データに関数を適用した結果に対する構造化インデックス Expired - Fee Related JP4627777B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/795,623 US7254574B2 (en) 2004-03-08 2004-03-08 Structured indexes on results of function applications over data
PCT/US2004/024566 WO2005096185A1 (en) 2004-03-08 2004-07-29 Structured indexes on results of function applications over data

Publications (2)

Publication Number Publication Date
JP2007528075A JP2007528075A (ja) 2007-10-04
JP4627777B2 true JP4627777B2 (ja) 2011-02-09

Family

ID=34912488

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007502785A Expired - Fee Related JP4627777B2 (ja) 2004-03-08 2004-07-29 データに関数を適用した結果に対する構造化インデックス

Country Status (6)

Country Link
US (4) US7254574B2 (ja)
EP (1) EP1609095A4 (ja)
JP (1) JP4627777B2 (ja)
KR (1) KR101022929B1 (ja)
CN (1) CN100541486C (ja)
WO (1) WO2005096185A1 (ja)

Families Citing this family (76)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6778977B1 (en) * 2001-04-19 2004-08-17 Microsoft Corporation Method and system for creating a database table index using multiple processors
US8238696B2 (en) 2003-08-21 2012-08-07 Microsoft Corporation Systems and methods for the implementation of a digital images schema for organizing units of information manageable by a hardware/software interface system
US8166101B2 (en) 2003-08-21 2012-04-24 Microsoft Corporation Systems and methods for the implementation of a synchronization schemas for units of information manageable by a hardware/software interface system
US7590643B2 (en) 2003-08-21 2009-09-15 Microsoft Corporation Systems and methods for extensions and inheritance for units of information manageable by a hardware/software interface system
US7349913B2 (en) * 2003-08-21 2008-03-25 Microsoft Corporation Storage platform for organizing, searching, and sharing data
US7401104B2 (en) 2003-08-21 2008-07-15 Microsoft Corporation Systems and methods for synchronizing computer systems through an intermediary file system share or device
US8131739B2 (en) * 2003-08-21 2012-03-06 Microsoft Corporation Systems and methods for interfacing application programs with an item-based storage platform
US7890497B2 (en) * 2004-04-14 2011-02-15 Oracle International Corporation Using estimated cost to schedule an order for refreshing a set of materialized views (MVS)
US8478742B2 (en) * 2004-04-14 2013-07-02 Oracle Corporation Using estimated cost to refresh a set of materialized views (MVS)
US7778962B2 (en) * 2004-04-30 2010-08-17 Microsoft Corporation Client store synchronization through intermediary store change packets
US20050283471A1 (en) * 2004-06-22 2005-12-22 Oracle International Corporation Multi-tier query processing
US7702627B2 (en) * 2004-06-22 2010-04-20 Oracle International Corporation Efficient interaction among cost-based transformations
US7814042B2 (en) * 2004-08-17 2010-10-12 Oracle International Corporation Selecting candidate queries
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
US7620641B2 (en) * 2004-12-22 2009-11-17 International Business Machines Corporation System and method for context-sensitive decomposition of XML documents based on schemas with reusable element/attribute declarations
US7805422B2 (en) 2005-02-28 2010-09-28 Microsoft Corporation Change notification query multiplexing
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
US7650353B2 (en) * 2005-12-16 2010-01-19 Microsoft Corporation XML specification for electronic data interchange (EDI)
US8027969B2 (en) * 2005-12-29 2011-09-27 Sap Ag Efficient calculation of sets of distinct results in an information retrieval service
US7487174B2 (en) * 2006-01-17 2009-02-03 International Business Machines Corporation Method for storing text annotations with associated type information in a structured data store
US7529758B2 (en) * 2006-02-10 2009-05-05 International Business Machines Corporation Method for pre-processing mapping information for efficient decomposition of XML documents
US7809713B2 (en) * 2006-03-15 2010-10-05 Oracle International Corporation Efficient search space analysis for join factorization
US7676450B2 (en) * 2006-03-15 2010-03-09 Oracle International Corporation Null aware anti-join
US7644062B2 (en) * 2006-03-15 2010-01-05 Oracle International Corporation Join factorization of union/union all queries
US7945562B2 (en) * 2006-03-15 2011-05-17 Oracle International Corporation Join predicate push-down optimizations
US7877373B2 (en) * 2006-06-30 2011-01-25 Oracle International Corporation Executing alternative plans for a SQL statement
US20080010238A1 (en) * 2006-07-07 2008-01-10 Microsoft Corporation Index having short-term portion and long-term portion
US20100318552A1 (en) * 2007-02-21 2010-12-16 Bang & Olufsen A/S System and a method for providing information to a user
US8326852B2 (en) * 2007-03-13 2012-12-04 International Business Machines Corporation Determining query entities for an abstract database from a physical database table
WO2008139936A1 (ja) 2007-05-11 2008-11-20 Nec Corporation データベース構造化支援システム
US7974981B2 (en) 2007-07-19 2011-07-05 Microsoft Corporation Multi-value property storage and query support
US20090063417A1 (en) * 2007-08-30 2009-03-05 Kinder Nathan G Index attribute subtypes for LDAP entries
US8903801B2 (en) 2007-09-14 2014-12-02 Oracle International Corporation Fully automated SQL tuning
US8341178B2 (en) 2007-09-18 2012-12-25 Oracle International Corporation SQL performance analyzer
US7966312B2 (en) * 2007-10-10 2011-06-21 Teradata Us, Inc. Updatable result set for multiple joined tables
US8700608B2 (en) 2007-10-17 2014-04-15 Oracle International Corporation SQL execution plan verification
US8438152B2 (en) * 2007-10-29 2013-05-07 Oracle International Corporation Techniques for bushy tree execution plans for snowstorm schema
US20100030727A1 (en) * 2008-07-29 2010-02-04 Sivasankaran Chandrasekar Technique For Using Occurrence Constraints To Optimize XML Index Access
US8055559B2 (en) * 2008-08-01 2011-11-08 Hantz Group, Inc. Multi-company business accounting system and method for same including account receivable
US7958112B2 (en) 2008-08-08 2011-06-07 Oracle International Corporation Interleaving query transformations for XML indexes
US9727628B2 (en) * 2008-08-11 2017-08-08 Innography, Inc. System and method of applying globally unique identifiers to relate distributed data sources
EP2169563A1 (en) * 2008-09-26 2010-03-31 Siemens Aktiengesellschaft Method for performing a database query in a relational database
US20100262593A1 (en) * 2009-04-08 2010-10-14 Microsoft Corporation Automated filtered index recommendations
US8458186B2 (en) * 2009-11-06 2013-06-04 Symantec Corporation Systems and methods for processing and managing object-related data for use by a plurality of applications
CN102117305B (zh) * 2010-01-06 2013-09-11 中国移动通信集团公司 查询数据的系统、方法和数据管理系统
CN102207935A (zh) * 2010-03-30 2011-10-05 国际商业机器公司 用于创建索引的方法和系统
US8332388B2 (en) * 2010-06-18 2012-12-11 Microsoft Corporation Transformation rule profiling for a query optimizer
EP2682878A1 (en) * 2012-07-04 2014-01-08 Software AG Method of processing relational queries in a database system and corresponding database system
KR101432700B1 (ko) * 2012-10-10 2014-08-25 (주)티베로 쿼리의 최적화를 위한 방법
KR101482868B1 (ko) 2013-07-24 2015-01-15 닉스테크 주식회사 Dlp 성능 향상을 위한 분산 인덱싱 시스템
US9870390B2 (en) 2014-02-18 2018-01-16 Oracle International Corporation Selecting from OR-expansion states of a query
US10007692B2 (en) * 2014-03-27 2018-06-26 Microsoft Technology Licensing, Llc Partition filtering using smart index in memory
US9355114B1 (en) 2014-06-25 2016-05-31 Groupon, Inc. Graph-based compression of data records
US10621064B2 (en) 2014-07-07 2020-04-14 Oracle International Corporation Proactive impact measurement of database changes on production systems
US10585887B2 (en) 2015-03-30 2020-03-10 Oracle International Corporation Multi-system query execution plan
US9760591B2 (en) 2015-05-14 2017-09-12 Walleye Software, LLC Dynamic code loading
EP3203388B1 (en) * 2016-02-05 2022-08-03 Amadeus S.A.S. Database table index
CN107193813B (zh) 2016-03-14 2021-05-14 阿里巴巴集团控股有限公司 数据表连接方式处理方法及装置
CN107784030B (zh) * 2016-08-31 2020-04-28 华为技术有限公司 一种处理连接查询的方法及装置
US10621195B2 (en) 2016-09-20 2020-04-14 Microsoft Technology Licensing, Llc Facilitating data transformations
US10706066B2 (en) 2016-10-17 2020-07-07 Microsoft Technology Licensing, Llc Extensible data transformations
US10776380B2 (en) 2016-10-21 2020-09-15 Microsoft Technology Licensing, Llc Efficient transformation program generation
US11170020B2 (en) 2016-11-04 2021-11-09 Microsoft Technology Licensing, Llc Collecting and annotating transformation tools for use in generating transformation programs
US11163788B2 (en) 2016-11-04 2021-11-02 Microsoft Technology Licensing, Llc Generating and ranking transformation programs
US10198469B1 (en) 2017-08-24 2019-02-05 Deephaven Data Labs Llc Computer data system data source refreshing using an update propagation graph having a merged join listener
US11386058B2 (en) 2017-09-29 2022-07-12 Oracle International Corporation Rule-based autonomous database cloud service framework
US11327932B2 (en) 2017-09-30 2022-05-10 Oracle International Corporation Autonomous multitenant database cloud service framework
US11010387B2 (en) * 2017-10-06 2021-05-18 Microsoft Technology Licensing, Llc Join operation and interface for wildcards
CN108509625A (zh) * 2018-04-08 2018-09-07 中国人民解放军63601部队 一种数据静态表位置定位方法
CN110874366B (zh) * 2018-08-31 2024-06-25 阿里巴巴集团控股有限公司 数据处理、查询方法和装置
US11113278B2 (en) * 2019-05-31 2021-09-07 Snowflake Inc. Data sharing and materialized views in multiple tenant database systems
CN111860502A (zh) * 2020-07-15 2020-10-30 北京思图场景数据科技服务有限公司 图片表格的识别方法、装置、电子设备及存储介质
US11921878B2 (en) * 2021-01-21 2024-03-05 Servicenow, Inc. Database security through obfuscation
US11640380B2 (en) 2021-03-10 2023-05-02 Oracle International Corporation Technique of comprehensively supporting multi-value, multi-field, multilevel, multi-position functional index over stored aggregately stored data in RDBMS

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5742806A (en) * 1994-01-31 1998-04-21 Sun Microsystems, Inc. Apparatus and method for decomposing database queries for database management system including multiprocessor digital data processing system
US5713015A (en) * 1996-05-30 1998-01-27 International Business Machines Corporation Reordering of complex SQL queries involving GROUPBYs, joins, outer joins and full outer joins
US6356920B1 (en) * 1998-03-09 2002-03-12 X-Aware, Inc Dynamic, hierarchical data exchange system
US6134543A (en) * 1998-07-02 2000-10-17 Oracle Corporation Incremental maintenance of materialized views containing one-to-one lossless joins
US6477525B1 (en) * 1998-12-28 2002-11-05 Oracle Corporation Rewriting a query in terms of a summary based on one-to-one and one-to-many losslessness of joins
US5991754A (en) * 1998-12-28 1999-11-23 Oracle Corporation Rewriting a query in terms of a summary based on aggregate computability and canonical format, and when a dimension table is on the child side of an outer join
US6496819B1 (en) * 1998-12-28 2002-12-17 Oracle Corporation Rewriting a query in terms of a summary based on functional dependencies and join backs, and based on join derivability
US6334128B1 (en) * 1998-12-28 2001-12-25 Oracle Corporation Method and apparatus for efficiently refreshing sets of summary tables and materialized views in a database management system
US6618719B1 (en) * 1999-05-19 2003-09-09 Sybase, Inc. Database system with methodology for reusing cost-based optimization decisions
US6484179B1 (en) * 1999-10-25 2002-11-19 Oracle Corporation Storing multidimensional data in a relational database management system
US6418448B1 (en) * 1999-12-06 2002-07-09 Shyam Sundar Sarkar Method and apparatus for processing markup language specifications for data and metadata used inside multiple related internet documents to navigate, query and manipulate information from a plurality of object relational databases over the web
US20030154189A1 (en) * 1999-12-30 2003-08-14 Decode Genetics, Ehf. Indexing, rewriting and efficient querying of relations referencing spatial objects
US6785673B1 (en) * 2000-02-09 2004-08-31 At&T Corp. Method for converting relational data into XML
WO2001059602A1 (en) * 2000-02-11 2001-08-16 Acta Technologies, Inc. Nested relational data model
US6493708B1 (en) * 2000-03-02 2002-12-10 Oracle Corporation Techniques for handling function-defined hierarchical dimensions
US7124144B2 (en) * 2000-03-02 2006-10-17 Actuate Corporation Method and apparatus for storing semi-structured data in a structured manner
US6934712B2 (en) * 2000-03-21 2005-08-23 International Business Machines Corporation Tagging XML query results over relational DBMSs
US6947945B1 (en) * 2000-03-21 2005-09-20 International Business Machines Corporation Using an XML query language to publish relational data as XML
US7111076B2 (en) * 2000-04-13 2006-09-19 Intel Corporation System using transform template and XML document type definition for transforming message and its reply
US6513029B1 (en) * 2000-04-20 2003-01-28 Microsoft Corporation Interesting table-subset selection for database workload materialized view selection
US6505189B1 (en) * 2000-06-15 2003-01-07 Ncr Corporation Aggregate join index for relational databases
JP2002007435A (ja) 2000-06-20 2002-01-11 Nec Corp 対話的分析データベースシステム及び対話的分析プログラムを記録した記録媒体
US6708186B1 (en) * 2000-08-14 2004-03-16 Oracle International Corporation Aggregating and manipulating dictionary metadata in a database system
US6912538B2 (en) * 2000-10-20 2005-06-28 Kevin Stapel System and method for dynamic generation of structured documents
US6601065B1 (en) * 2000-12-21 2003-07-29 Cisco Technology, Inc. Method and apparatus for accessing a database through a network
US7114123B2 (en) * 2001-02-14 2006-09-26 International Business Machines Corporation User controllable data grouping in structural document translation
US6643636B1 (en) * 2001-06-05 2003-11-04 Ncr Corporation Optimizing a query using a non-covering join index
US6799184B2 (en) * 2001-06-21 2004-09-28 Sybase, Inc. Relational database system providing XML query support
US7103590B1 (en) * 2001-08-24 2006-09-05 Oracle International Corporation Method and system for pipelined database table functions
US6850933B2 (en) * 2001-11-15 2005-02-01 Microsoft Corporation System and method for optimizing queries using materialized views and fast view matching
WO2003107174A1 (en) * 2002-06-13 2003-12-24 Cerisent Corporation Xml database mixed structural-textual classification system
US7120645B2 (en) * 2002-09-27 2006-10-10 Oracle International Corporation Techniques for rewriting XML queries directed to relational database constructs
US7246115B2 (en) * 2002-12-19 2007-07-17 International Business Machines Corporation Materialized view signature and efficient identification of materialized view candidates for queries
US7315852B2 (en) * 2003-10-31 2008-01-01 International Business Machines Corporation XPath containment for index and materialized view matching
US7089225B2 (en) * 2003-11-25 2006-08-08 International Business Machines Corporation Efficient heuristic approach in selection of materialized views when there are multiple matchings to an SQL query

Also Published As

Publication number Publication date
KR20070001781A (ko) 2007-01-04
US7349897B2 (en) 2008-03-25
US7254574B2 (en) 2007-08-07
EP1609095A1 (en) 2005-12-28
US20050198019A1 (en) 2005-09-08
US7272598B2 (en) 2007-09-18
US20050198016A1 (en) 2005-09-08
CN1759397A (zh) 2006-04-12
CN100541486C (zh) 2009-09-16
KR101022929B1 (ko) 2011-03-16
JP2007528075A (ja) 2007-10-04
US7340445B2 (en) 2008-03-04
WO2005096185A1 (en) 2005-10-13
EP1609095A4 (en) 2009-11-18
US20050198013A1 (en) 2005-09-08
US20050198001A1 (en) 2005-09-08

Similar Documents

Publication Publication Date Title
JP4627777B2 (ja) データに関数を適用した結果に対する構造化インデックス
US7379927B2 (en) Type path indexing
US7933913B2 (en) Secondary index and indexed view maintenance for updates to complex types
JP4552242B2 (ja) 仮想表インタフェースと該インタフェースを用いた問合せ処理システム及び方法
US6338056B1 (en) Relational database extender that supports user-defined index types and user-defined search
US6578046B2 (en) Federated searches of heterogeneous datastores using a federated datastore object
US6272488B1 (en) Managing results of federated searches across heterogeneous datastores with a federated collection object
EP2843567B1 (en) Computer-implemented method for improving query execution in relational databases normalized at level 4 and above
US7801882B2 (en) Optimized constraint and index maintenance for non updating updates
US7197491B1 (en) Architecture and implementation of a dynamic RMI server configuration hierarchy to support federated search and update across heterogeneous datastores
US8639717B2 (en) Providing access to data with user defined table functions
Leymann UDH: A universal relation system
Theodoratos et al. Assigning semantics to partial tree-pattern queries
WO2017131753A1 (en) Text search of database with one-pass indexing including filtering
Ortega‐Binderberger et al. Database support for multimedia applications
ORTEGA-BINDERBERGER et al. 7 Database Support for Multimedia
Larson et al. Accessing out-of-tuple data: A performance study
EP1128281A2 (en) System and method for accessing non-relational data by relational access methods

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070730

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100330

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100630

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: 20101102

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: 20101108

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

Free format text: PAYMENT UNTIL: 20131119

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4627777

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

LAPS Cancellation because of no payment of annual fees