JP2007509431A - タイプ・パス索引付け - Google Patents

タイプ・パス索引付け Download PDF

Info

Publication number
JP2007509431A
JP2007509431A JP2006536600A JP2006536600A JP2007509431A JP 2007509431 A JP2007509431 A JP 2007509431A JP 2006536600 A JP2006536600 A JP 2006536600A JP 2006536600 A JP2006536600 A JP 2006536600A JP 2007509431 A JP2007509431 A JP 2007509431A
Authority
JP
Japan
Prior art keywords
type
computer
objects
hardware
data
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.)
Granted
Application number
JP2006536600A
Other languages
English (en)
Other versions
JP2007509431A5 (ja
JP4653106B2 (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 JP2007509431A publication Critical patent/JP2007509431A/ja
Publication of JP2007509431A5 publication Critical patent/JP2007509431A5/ja
Application granted granted Critical
Publication of JP4653106B2 publication Critical patent/JP4653106B2/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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • 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/99936Pattern matching access
    • 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/99937Sorting
    • 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/99942Manipulating data structure, e.g. compression, compaction, compilation
    • 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/99944Object-oriented database structure

Landscapes

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

Abstract

効率的な階層型検索は、オブジェクト・タイプに基づいている。追加情報を事前に計算し、それを高速ルックアップ構造に格納することにより、オブジェクト取り出し要求を満たすオブジェクトを迅速に識別することができる。さらに、この技法を使用して、ストア内のオペレーションに対するオブジェクト・ハイドレーションを回避することも可能になる。さらに、ヒストグラムなどのデータベースの統計的構造を活用して、各オブジェクトを検査する必要なく修飾オブジェクトの数を推定することができる。

Description

本発明は一般に、情報の格納および取り出しの分野に関し、具体的には、オブジェクト・タイプに基づく効率的な階層型検索に関する。
本出願は、全体として参照により本明細書に組み込まれている、2003年10月23日に出願した米国特許出願第10/692、350号の優先権を主張するものである。
消費者は、従来のパーソナル・インフォメーション・マネージャ(PIM)スタイルのデータであるかまたはデジタル音楽やデジタル写真などの媒体であるかどうかにかかわらず、主に通信と個人情報の整理(organizing personal information)のためにコンピュータを使用する。デジタル・コンテンツの量、および未加工バイト(raw bytes)を格納する機能は、すさまじい成長を遂げた。しかし、このデータを編成し一元管理するために消費者が利用できる方法は、はるかに後れをとっている(追随していない)。知識労働者は、情報の管理および共有に膨大な時間を費やしており、ある調査によれば、知識労働者はその時間の15〜25%を非生産的な情報関連の業務に費やしていると推定されている。また、一般的な知識労働者が情報の検索に1日当たり約2.5時間を費やしていると推定する調査もある。
コンピュータ・システムにおいて情報を整理する従来の方法では、ファイル、フォルダおよびディレクトリをベースとするシステム(「ファイルシステム」)の使用に重点を置いて、複数のファイルを、ファイルを格納するために使用される記憶媒体の物理編成の抽象化に基づいてフォルダのディレクトリ階層に複数のファイルを編成してきた。1960年代に開発されたMulticsオペレーティング・システムは、ファイル、フォルダ、ディレクトリを使用してオペレーティング・システム・レベルで格納可能なデータの単位を管理することを開拓したと信じられている。特に、Multicsでは、ファイルの物理アドレスがユーザ(アプリケーションおよびエンド・ユーザ)に透過的ではなかったファイルの階層内に、シンボリック・アドレスを使用した(これによりファイル・パスの概念を導入した)。このファイル・システムは個々のファイルのファイル形式(file format)に完全に無関心であり、ファイル間のリレーションシップはオペレーティング・システム・レベル(つまり、階層内のファイルの場所以外)では無関係であると見なされていた。Multicsの出現以来、格納可能なデータは、オペレーティング・システム・レベルでファイル、フォルダおよびディレクトリに編成されてきた。これらのファイルは一般に、ファイル・システムによって保持される特殊ファイルに組み込まれたファイル階層自体(「ディレクトリ」)を含んでいる。このディレクトリが、ディレクトリ内の他のすべてのファイルに対応するエントリのリストと、階層内のそのようなファイルのノード上の場所(本明細書においてフォルダと呼ぶ)を保持する。以上のような状態が、ほぼ40年間にわたるこの分野の状態であった。
しかしながら、コンピュータの物理ストレージ・システムに収められた情報の合理的表現を与え、ファイル・システムがその物理ストレージ・システムの抽象である限り、したがってファイルの利用には、ユーザが操作するもの(コンテクスト、機能、および他の単位とのリレーションシップを有する単位)とオペレーティング・システムが提供するもの(ファイル、フォルダ、およびディレクトリ)との間のあるレベルの間接化(a level of indirection (interpretation;解釈)が必要となる。必然的に、ユーザ(アプリケーションおよび/またはエンド・ユーザ)は、たとえそうすることが非効率であり、整合性に欠けるか、または望ましくない場合であっても、選択の余地がなく、情報の単位をファイル・システム構造に押し込まざるを得なかった。ほとんどの既存のファイル・システムはファイルおよびフォルダの整理にネストされたフォルダのメタファーを使用するので、ファイルの数が増加するにつれて、柔軟かつ効率的な編成方式を維持するために必要な取り組みはまさに試練となってしまう。
過去において、ファイル・システムの欠点に対処する試みがいくつか失敗に終わっている。こうしたこれまでの試みの中には、連想記憶装置(content addressable memory)を使用して、物理アドレスによってではなくコンテンツによってデータにアクセスできるようなメカニズムを提供するものも含まれていた。しかし一方、連想記憶装置はキャッシュおよびメモリ管理装置などの装置による小規模な利用に有効であることが判明したが、物理記憶媒体のような装置の大規模な利用は種々の理由からまだ可能ではなかったために、こうした取り組みは不成功に終わった。そのため、そのようなソリューションは単に存在していない。オブジェクト指向データベース(OODB)システムを使用する他の試みも行われたが、こうした試みは、強力なデータベース特性と優れた非ファイル表現にもかかわらず、ファイル表現の処理には効果的ではなく、速度、効率、およびハードウェア/ソフトウェア・インターフェース・システム・レベルにおけるファイルおよびフォルダ・ベースの階層構造の簡易さを再現することはできなかった。
「WinFS」(以下で詳細に説明)などの新しく開発されたストレージ・システムは、データベース内にテーブルとしてファイルのディレクトリを格納する。各ファイルはテーブル内の行(row)によって表され、「ディレクトリ内のすべてのファイルを列挙する」などのファイル・システム・オペレーションは、データベース・エンジンに対してクエリを使用することで満足される。したがって、ストアに対して基本オペレーションを効率的に実行することは、データベース・クエリを効率的に最適化するオペレーションとなる。
そのようなストレージ・システムにおいて、ファイルの概念は「オブジェクト」の概念まで拡大される。ファイルに関するメタデータは、スキーマ(ストレージ・システムにおいて定義される)と共に管理対象のCLR(共通言語ランタイム)オブジェクトに格納され、そのオブジェクトに対して許容可能な記述データを表す。たとえば、ピクチャは、その解像度、撮像時刻、ロケーション情報などのデータを格納している代表的CLRオブジェクトを備える場合もある。このオブジェクト・モデルは、データ継承(data inheritance)をサポートする。データ継承により、タイプを別のタイプから派生させて、新しいフィールドを追加することが可能になる。たとえば、「DriversLicensePicture」などの、ピクチャのサブクラスを作成することもできる。そのようなサブクラスは、Driver’s License IDフィールドのような、その他の情報(extra information)を含んでいる。
WinFSなど、これらの新しく開発されたストレージ・システムにおいて、公開されたスキーマはトランスレーション層を通じてテーブルにマップされる。ユーザは、基本テーブルで操作を行うのではなく、一連のデータのビューを見るだけである。このマッピングの精密な設計は重要ではないが、これは、WinFS APIとその基盤となるストレージ・フォーマットとの間の接着剤の役割を果たす。ユーザは、このマッピングを直接制御したり、見たりすることはない。
WinFS Storeはまた、以前の従来型ファイル・システムにおけるファイル名とは対照的に、そのタイプに基づいてオブジェクトにクエリを実行する概念も公開する。タイプ・ベースのクエリは、厳密なタイプまたは所定のタイプから派生する任意のタイプを検索することができる。この後者の形式は、階層型マッチングと呼ばれ、共通のWinFSオペレーションとなることが期待されている。
WinFSのスキーマ・モデルは、クエリ・プロセッサにいくつかの新たな難題をもたらす。ユーザ定義タイプ、つまりUDTは広範囲に使用されおり、UDTタイプに基づいてテーブルからすべてのUDTを取り出すことが一般的である。さらに、WinFSはUDT継承を使用し、所定のタイプおよび任意のサブタイプのすべての要素をテーブルから取り出すことも要件となっている。それぞれ異なる数のUDT、タイプ、タイプ・トポロジ、およびそのトポロジ内のUDT分布を含む複数のテーブルが存在する。これらのプロパティにより、正確な濃度(cardinality)およびコストの見積りを行うことが困難になり、さらにタイプ/サブタイプ階層に基づいて効率的に値を取り出すことも困難になる。
既存のデータ・ストレージおよびデータベース・テクノロジにおける以上の不備を考慮すると、効率的なタイプ階層型取り出しおよびコスト見積りに対するニーズが存在する。本発明はこれらニーズを満たす。
以下で、本発明のさまざまな態様の概要を述べる。これは、本発明の重要な態様のすべてを包括的に説明するものではなく、また本発明の範囲を定義するものでもない。むしろ、詳細な説明およびそれに続く図を導く案内としての役割を果たすことを目的としている。
本発明は、オブジェクト・タイプに基づく効率的な階層型検索に向けられる。追加の特殊情報を事前に計算し、それを高速ルックアップ構造に格納することにより、オブジェクト取り出し要求を満足するオブジェクトを迅速に識別することができる。さらに、これらの技法を使用して、ストア内の特定のオペレーションに対する高価なオブジェクト・ハイドレーション(Object Hydration)を回避することも可能になる。加えて、新しい方法でデータベースの統計的構造を活用して、各オブジェクトを検査する必要なく修飾オブジェクトの数を推定することができる。
本発明の他の特徴および利点は、本発明の以下の詳細な説明および付属の図を参照すれば明らかになろう。
上記の要約および上記の好ましい実施形態の詳細な説明は、付属の図を参照しながら読めばよりよく理解できよう。本発明を例示する目的で、本発明の例示的な構造が図に示されている。ただし、本発明は、開示されている特定の方法および手段に限定されることはない。
主題について、法定要件を満たすために限定性を持って説明する。ただし、説明自体は、本発明の範囲を限定することを意図していない。むしろ、発明者は、主張されている主題が他の方法で実施することもでき、他の現在または将来の技術と併せて、本明細書に説明されているさまざまなステップまたはステップの組み合わせと類似したものを含めることができることを意図している。さらに、採用された方法のさまざまな要素を示すために本明細書において「ステップ」という用語が使用されるが、この用語は、個々のステップの順序が明示的に記述されている場合を除き、本明細書に開示されているさまざまなステップの間の特定の順序を暗示するものとして解釈すべきではない。
概要
本発明は、オブジェクト・タイプに基づく効率的な階層型検索に向けられる。追加情報を事前に計算し、それを高速ルックアップ構造に格納することにより、オブジェクト取り出し要求を満足するオブジェクトを迅速に識別することができる。さらに、この技法を使用して、ストア内のオペレーションに対するオブジェクト・ハイドレーション(Object Hydration)を回避することも可能になる。加えて、新しい方法でデータベースの統計的構造を活用して、各オブジェクトを検査する必要なく修飾オブジェクトの数を推定することができる。
本発明は、特定のタイプを持つテーブル内の値の、または、そのタイプがタイプ階層内の所定のタイプにルートを持つツリー内にある値の、高速取り出し(fast retrieval)を提供する。Bツリー索引は、特定のロケーションをシークして、1つの値(たとえばパス・タイプ)を有するオブジェクトまたは同じ値を備える一連のオブジェクトを取り出すことができる。さらに、オブジェクト値のプレフィックスをシークして、同じプレフィックスを含むすべての値の範囲を返すこともできる。これらのプロパティを活用して、タイプまたはタイプ階層に基づく効率的な取り出しを行えるようにすることができる。
WinFSは、ファイル・システムでオブジェクトの概念を導入するファイル・システム/データ・ストアである。このストア内のオペレーションの1つは、オブジェクトをそれらのタイプに基づいて効率的に見つけてクエリを行えるようにすることである。本発明は、このオペレーションを極めて効率的に行えるようにする方法を説明する。
本発明は、UDTの階層タイプIDを提供する組み込み機能のためのインターフェースを提供する。階層タイプIDは、タイプ階層内のUDT表現のタイプを一意に識別するvarbinary値である。この機能を、適切な計算されたカラム(computed column)索引のクエリおよび作成に使用することにより、効率的なUDTタイプ階層型取り出しがサポートされる。
例示的なコンピューティング環境
本明細書および特許請求の範囲において使用されている以下の用語は、以下のような意味を表している。
「オブジェクト」は、ハードウェア/ソフトウェア・インターフェース・システムにアクセスできる格納可能な情報の単位であり、ハードウェア/ソフトウェア・インターフェース・システム・シェルによってエンド・ユーザに見えるすべてのオブジェクトにわたって共通にサポートされるプロパティの基本セットを備えている。オブジェクトはさらに、新しいプロパティとリレーションシップを導入できるようにする機能を含むすべてのタイプにわたって共通にサポートされる、プロパティおよびリレーションシップも備えている。
「オペレーティング・システム」(OS)は、アプリケーション・プログラムとコンピュータ・ハードウェアの間の仲介としての役割を果たす特殊なプログラムである。オペレーティング・システムはほとんどの場合、シェルおよびカーネルを備えている。
「ハードウェア/ソフトウェア・インターフェース・システム」は、ソフトウェア、またはハードウェアおよびソフトウェアの組み合わせであり、コンピュータ・システムの基礎を成すハードウェア・コンポーネントとコンピュータ・システム上で実行するアプリケーションとの間のインターフェースとしての役割を果たす。ハードウェア/ソフトウェア・インターフェース・システムは通常、オペレーティング・システムを備えている(一部の実施例においてはオペレーティング・システムのみで構成される)。ハードウェア/ソフトウェア・インターフェース・システムはさらに、仮想マシン・マネージャ(VMM)、共通言語ランタイム(CLR)またはその機能的な相当物、Java(登録商標)仮想マシン(JVM)またはその機能的な相当物、またはコンピュータ・システムのオペレーティング・システムに代わるかまたはこれに追加する他のそのようなソフトウェア・コンポーネントも備えている。ハードウェア/ソフトウェア・インターフェース・システムの目的は、ユーザがアプリケーション・プログラムを実行できる環境を提供することにある。ハードウェア/ソフトウェア・インターフェース・システムの目標は、コンピュータ・システムを使いやすくし、効率的よくコンピュータ・ハードウェアを利用することである。
本発明の多数の実施形態は、コンピュータ上で実行することができる。図1および以下の説明は、本発明が実装される適切なコンピューティング環境について簡単に概要を説明することを意図している。要求されてはいないが、本発明は、クライアント・ワークステーションまたはサーバのようなコンピュータによって実行されるプログラム・モジュールなど、コンピュータ実行可能命令の一般的なコンテクストに即して説明される。一般に、プログラム・モジュールには、特定のタスクを実行するかまたは特定の抽象データ・タイプを実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。さらに、本発明が、ハンドヘルド機器、マルチ・プロセッサ・システム、マイクロ・プロセッサ・ベースまたはプログラマブル家庭用電化製品、ネットワークPC、ミニ・コンピュータ、メインフレーム・コンピュータなど、他のコンピュータ・システムの構成により実施できることを当業者は理解するであろう。本発明はさらに、タスクが通信ネットワークを通じてリンクされたリモート処理装置によって実行される分散コンピューティング環境においても実施することができる。分散コンピューティング環境において、プログラム・モジュールは、ローカルおよびリモートのコンピュータ記憶装置に配置することができる。
図1に示すように、例示的な汎用コンピューティング・システムは、処理装置21、システム・メモリ22、およびシステム・メモリを含むさまざまなシステム・コンポーネントを処理装置21に接続するシステム・バス23を含む、従来型のパーソナル・コンピュータ20などを含んでいる。システム・バス23は、メモリ・バスまたはメモリ・コントローラ、周辺バス、およびさまざまなバス・アーキテクチャのいずれかを使用するローカル・バスを含む、いくつかのタイプのバス構造であってもよい。システム・メモリは、読み取り専用メモリ(ROM)24およびランダム・アクセス・メモリ(RAM)25を含んでいる。起動時などにパーソナル・コンピュータ20内の要素間の情報の転送を助ける基本ルーチンを含む基本入出力システム26(BIOS)は、ROM24に格納される。
パーソナル・コンピュータ20はさらに、ハードディスク(図示せず)との間の読み取りまたは書き込みを行うハードディスク・ドライブ27、取り外し可能の磁気ディスク29との間の読み取りまたは書き込みを行う磁気ディスク・ドライブ28、およびCD−ROMその他の光媒体など、取り外し可能の光ディスク31との間の読み取りまたは書き込みを行う光ディスク・ドライブ30を含むことができる。ハードディスク・ドライブ27、磁気ディスク・ドライブ28、および光ディスク・ドライブ30は、それぞれハードディスク・ドライブ・インターフェース32、磁気ディスク・ドライブ・インターフェース33、および光ドライブ・インターフェース34によってシステム・バス23に接続されている。ドライブおよびその関連するコンピュータ可読媒体は、パーソナル・コンピュータ20のコンピュータ可読命令、データ構造、プログラム・モジュール、およびその他のデータの不揮発性記憶装置を提供する。
本明細書に記載の例示的な環境では、ハードディスク、取り外し可能磁気ディスク29、および取り外し可能光ディスク731を採用しているが、磁気カセット、フラッシュメモリ・カード、デジタル・ビデオ・ディスク、ベルヌーイ・カートリッジ、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)などの、コンピュータによりアクセス可能なデータを格納できる他の種類のコンピュータ可読媒体も、例示的なオペレーティング環境に使用できることは当業者であれば理解するであろう。
ハードディスク、磁気ディスク29、光ディスク31、RAM24またはROM25には、オペレーティング・システム35、1つまたは複数のアプリケーション・プログラム36、その他のプログラム・モジュール37、およびプログラム・データ38を含む、多数のプログラム・モジュールを格納することができる。ユーザは、キーボード40およびポインティング・デバイス42などの入力装置を介してパーソナル・コンピュータ20にコマンドおよび情報を入力することができる。他の入力装置(図示せず)としては、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送用パラボラ・アンテナ、スキャナなどを含むことができる。上記およびその他の入力装置は、システム・バスに接続されているシリアル・ポート・インターフェース46を介して処理装置21に接続されることが多いが、パラレル・ポート、ゲーム・ポート、またはユニバーサル・シリアル・バス(USB)など他のインターフェースによって接続することもできる。モニタ47またはその他の種類の表示装置も、ビデオ・アダプタ48などのインターフェースを介してシステム・バス23に接続することができる。モニタ47に加えて、パーソナル・コンピュータは通常、スピーカおよびプリンタなど、他の周辺出力装置(図示せず)を含んでいる。図1の例示的なシステムはさらに、ホスト・アダプタ55、Small Computer System Interface(SCSI)バス56、およびSCSIバス56に接続されている外部記憶装置62も含んでいる。
パーソナル・コンピュータ20は、リモート・コンピュータ49など、1つまたは複数のリモート・コンピュータへの論理接続を使用するネットワーク化された環境において動作することができる。リモート・コンピュータ49は、別のパーソナル・コンピュータ、サーバ、ルータ、ネットワークPC、ピア・デバイスまたはその他の共通ネットワーク・ノードであってもよく、通常は上記でパーソナル・コンピュータ20に関連して説明されている要素の多くまたはすべてを含んでいるが、図1においては記憶装置50のみが示されている。図1に示される論理接続は、ローカル・エリア・ネットワーク(LAN)51およびワイド・エリア・ネットワーク(WAN)52を含んでいる。そのようなネットワーク環境は、オフィス、企業規模のコンピュータ・ネットワーク、イントラネット、およびインターネットで一般化している。
LANネットワーク環境に使用される場合、パーソナル・コンピュータ20はネットワーク・インターフェースまたはアダプタ53を介してLAN51に接続される。WANネットワーク環境に実装される場合、パーソナル・コンピュータ20は通常、モデム54またはインターネットなどのワイド・エリア・ネットワーク52にわたる通信を確立するための他の手段を含んでいる。モデム54は、内蔵または外付けであってもよく、シリアル・ポート・インターフェース46を介してシステム・バス23に接続することができる。ネットワーク化された環境において、パーソナル・コンピュータ20に関連して示されるプログラム・モジュール、またはその部分は、リモート記憶装置に格納することもできる。示されているネットワーク接続が例示的なものであり、コンピュータ間の通信リンクを確立する他の手段も使用できることを理解されたい。
本発明の多数の実施形態がコンピュータ制御システムに特に適切であることが想定されるが、本明細書においては本発明をそのような実施形態に限定する意図はない。これに対して、本明細書において使用されている「コンピュータ・システム」という用語は、押しボタンを備えるか、あるいはボタン押し下げ、またはボタン押し下げに相当する操作を判断することができるあらゆる装置を、このような装置が事実上、電子的、機械的、論理的、または仮想的のいずれであるかにかかわりなく、包含することを意図している。
図2のブロック図に示されているように、コンピュータ・システム200は、ハードウェア・コンポーネント202、オペレーティング・システム・コンポーネント204、およびアプリケーション・プログラム・コンポーネント206という、3つのコンポーネント・グループに大きく分割することができる。
特定のコンピュータ・システム200において、図1に戻って参照すると、ハードウェア202は、中央演算処理装置(CPU)21、メモリ(ROM24およびRAM25)、基本入出力システム(BIOS)26、および特にキーボード40、マウス42、モニタ47、および/またはプリンタ(図示せず)などのさまざまな入出力(I/O)装置を備えることができる。ハードウェア・コンポーネント202は、コンピュータ・システム200の基本リソースを備えている。
アプリケーション・プログラム・コンポーネント206は、コンパイラ、データベース・システム、ワード・プロセッサ、ビジネス・プログラム、ビデオ・ゲームなどを含むさまざまなソフトウェア・プログラムを備えているが、これらに限定されることはない。アプリケーション・プログラムは、さまざまなユーザ(たとえばマシン、他のコンピュータ・システムおよび/またはエンド・ユーザ)に対して問題の解決、ソリューションの提供、およびのデータの処理を行うためにコンピュータ・リソースが利用される手段を提供する。
オペレーティング・システム・コンポーネント204は、オペレーティング・システム自体とそのシェルおよびカーネルを備えている。オペレーティング・システム(OS)は、アプリケーション・プログラムとコンピュータ・ハードウェアの間の仲介としての役割を果たす特殊なプログラムであり、オペレーティング・システムの目的は、ユーザがアプリケーション・プログラムを実行できる環境を提供することにある。オペレーティング・システムの目標は、効率的な方法でコンピュータ・ハードウェアを利用するだけでなく、コンピュータ・システムを使いやすくすることにある。
オペレーティング・システムは一般に、起動時にコンピュータ・システムにロードされ、その後コンピュータ・システム内のすべてのアプリケーション・プログラム(または単に「アプリケーション」)を管理する。アプリケーション・プログラムは、アプリケーション・プログラム・インターフェース(API)を介してサービスを要求することによってオペレーティング・システムと対話する。一部のアプリケーション・プログラムは、コマンド言語またはグラフィカル・ユーザ・インターフェース(GUI)などのユーザ・インターフェースを介してエンド・ユーザがオペレーティング・システムと対話できるようにする。
オペレーティング・システムは従来、アプリケーション向けのさまざまなサービスを実行している。複数のプログラムが同時に実行することができるマルチ・タスキング・オペレーティング・システムにおいて、オペレーティング・システムは、どのアプリケーションをどの順序で実行すべきか、また別のアプリケーションに切り替えるまでに各アプリケーションにどのくらいの時間を与えるかを決定する。オペレーティング・システムはさらに、複数のアプリケーション間の内部メモリの共有も管理し、ハードディスク、プリンタ、およびダイヤルアップ・ポートなどの接続されたハードウェア装置との間の入出力も処理する。オペレーティング・システムはまた、オペレーションの状態および発生した可能性のあるエラーについて各アプリケーション(および特定の場合にはエンド・ユーザ)にメッセージを送信する。オペレーティング・システムはさらに、バッチ・ジョブ(たとえば印刷など)の管理をオフロードすることもでき、それによりアプリケーションの初期化がこの作業から解放されて他の処理および/またはオペレーションを再開できるようになっている。並列処理を提供できるコンピュータにおいて、オペレーティング・システムは、同時に複数のプロセッサ上で実行するようにプログラムの分割も管理する。
オペレーティング・システムのシェルは、オペレーティング・システムへのインタラクティブ・エンド・ユーザ・インターフェースである(また「コマンド・インタープリタ」とも呼ばれる)。シェルは、アプリケーション・プログラムおよびエンド・ユーザによっても直接アクセス可能なオペレーティング・システムの外側のレイヤである。シェルとは対照的に、カーネルは、ハードウェア・コンポーネントと直接対話するオペレーティング・システムの最も内側のレイヤである。
当業者には十分に理解されているように、「ファイル」とは、オペレーティング・システムによって独立した(格納可能および取り出し可能な)エンティティとして操作することが可能な(オペレーティング・システム自体、アプリケーション・プログラム、データセットなどを含むが、これらに限定されることはない)情報のエンティティである。最新のオペレーティング・システム(Windows(登録商標)、Unix(登録商標)、Linux、Mac OSなど)において、ファイルとは、オペレーティング・システムによって操作される格納可能な情報(たとえばデータ、プログラムなど)の基本単位であり、ファイルのグループは「フォルダ」に編成される。Microsoft Windows(登録商標)、Macintosh、および他のオペレーティング・システムにおいて、フォルダとは、1つのエンティティとして取り出し、移動、その他操作を行うことができるファイルの集合である。DOS、z/OS、およびほとんどのUnix(登録商標)ベースのオペレーティング・システムのような他の特定のオペレーティング・システムにおいては、フォルダよりも「ディレクトリ」という用語が使用され、初期のAppleコンピュータ・システム(たとえばApple IIe)では「カタログ」という用語を使用していた。ただし、本明細書で使用するように、これらの用語はすべて同義語であり、相互置き換え可能であって、階層情報ストレージ構造に対する他のすべての等価語と参照をさらに含むことを意図している。
当業者には周知であり理解されているように、ディレクトリ(つまりフォルダのディレクトリ)は、ツリー構造のノードを備えるフォルダ内のロケーションに基づいてグループ化されるツリー・ベースの階層構造である。たとえば、図3に示すように、DOSベースのファイル・システムのベース・フォルダ(つまり「ルート・ディレクトリ」)302は、複数のフォルダ304を備え、各フォルダがさらに(その特定のフォルダの「サブフォルダ」として)追加フォルダ306を備え、その各々がさらに追加フォルダ308を備えるというように際限なく続く。これらのフォルダはそれぞれ、オペレーティング・システムのレベルで1つまたは複数のファイル310を持つことができるが、フォルダ内の個々のファイルはツリー階層におけるそのロケーション以外は何も共通点がない。当然のことながら、ファイルをフォルダ階層に編成するこの方法は、これらのファイルを格納するために使用される通常の記憶媒体(たとえばハードディスク、フロッピー(登録商標)ディスク、CD−ROMなど)の物理的編成を間接的に反映している。
前述のことに加えて、各フォルダは、そのサブフォルダおよびそのファイルのためのコンテナである。つまり、各フォルダはそのサブフォルダとファイルを所有している。たとえば、フォルダがオペレーティング・システムによって削除された場合、そのサブフォルダおよびファイルも削除される(各サブフォルダの場合は、その所有するサブフォルダおよびファイルも循環的に含まれる)。同様に、各ファイルは1つのフォルダによってのみ所有することができ、ファイルはコピーすることができ、そのコピーが異なるフォルダに配置される場合でも、ファイルのコピーは、それ自体が別個の独立したエンティティであり、オリジナルに直接のリレーションシップはない(たとえば、オリジナル・ファイルに加えられた変更は、オペレーティング・システム・レベルでコピー・ファイルに反映されない)。したがって、この点で、フォルダは物理コンテナの概念的な等価物であり、ファイルはコンテナ内部の別個の独立した物理要素の概念的な等価物であるという理由で、事実上、ファイルおよびフォルダは、「物理的」な特徴を有する。
本発明に使用することができる、データを、編成し、検索し、共有するためのストレージ・プラットフォームは、オブジェクトと呼ばれるデータの形態を含むすべてのデータのタイプのストアとなるように設計されている。図4を参照すると、本発明によるストレージ・プラットフォーム400は、データベース・エンジン414上に実装されたデータ・ストア402を備えている。1つの実施形態において、データベース・エンジンは、オブジェクト・リレーションシップ拡張(object relational extensions)を備えるリレーショナル・データベース・エンジンを備えている。1つの実施形態において、リレーショナル・データベース・エンジン414は、Microsoft SQL Serverリレーショナル・データベース・エンジンを備えている。
データ・ストア402は、データの編成、検索、共有、同期化、およびセキュリティをサポートするデータ・モデル404を実装する。データの特定のタイプについては、スキーマ440などのスキーマに記述される。ストレージ・プラットフォーム400は、以下に詳細に説明するように、これらのスキーマを展開するため、およびこれらのスキーマを拡張するためのツール446を提供する。
データ・ストア402内に実装されている変更追跡メカニズム406は、データ・ストアへの変更を追跡する機能を提供する。データ・ストア402はさらに、セキュリティ機能408およびプロモーション/デモーション機能410も提供する。データ・ストア402はまた、アプリケーションプログラミング・インターフェース412のセットを提供し、データ・ストア402の機能を、ストレージ・プラットフォームを利用する他のストレージ・プラットフォーム・コンポーネントおよびアプリケーション・プログラム(たとえば、アプリケーション・プログラム450a、450b、および450c)に見えるようにする。
本発明のストレージ・プラットフォームは、アプリケーション・プログラム450a、450b、および450cなどのアプリケーション・プログラムがストレージ・プラットフォームの前述のすべての機能にアクセスできるようにし、スキーマに記述されているデータにアクセスできるようにするアプリケーション・プログラミング・インターフェース(API)422をさらに備えている。ストレージ・プラットフォームAPI422は、OLE DB API424およびMicrosoft Windows(登録商標)Win32 API 426など他のAPIと組み合わせてアプリケーション・プログラムが使用することができる。
本発明のストレージ・プラットフォーム400は、ユーザまたはシステム間のデータの共有を容易にする同期化サービス430を含む、さまざまなサービス428をアプリケーション・プログラムに提供することができる。たとえば、同期化サービス430により、データ・ストア402と同じフォーマットを持つ他のデータ・ストア440との相互運用性、および他のフォーマットを持つデータ・ストア442へのアクセスが可能になる。ストレージ・プラットフォーム400はさらに、Windows(登録商標)NTFSファイル・システム418など、既存のファイル・システムとのデータ・ストア402の相互運用を可能にするファイル・システム機能も提供する。
少なくとも一部の実施形態において、ストレージ・プラットフォーム420はさらに、データが他のシステムに基づいて作用することを可能にし、他のシステムとの対話を可能にする追加の機能をアプリケーション・プログラムに提供することができる。これらの機能は、Info Agentサービス434および通知サービス432などの追加サービス428の形態で、また他のユーティリティ436の形態で実施することができる。
少なくとも一部の実施形態において、ストレージ・プラットフォームは、コンピュータ・システムのハードウェア/ソフトウェア・インターフェース・システムに組み入れられるか、またはその不可欠部分(integral part)を形成する。たとえば、制限なく、本発明のストレージ・プラットフォームは、オペレーティング・システム、仮想マシン・マネージャ(VMM)、共通言語ランタイム(CLR)またはその機能的な相当物、あるいはJava(登録商標)仮想マシン(JVM)またはその機能的な相当物に組み入れられるか、またはその不可欠部分を形成することができる。
本発明のストレージ・プラットフォームは、その共通のストレージ基盤および体系化されたデータを通じて、消費者、知識労働者および企業に対するさらに効率的なアプリケーション開発を実現することができる。このストレージ・プラットフォームは、機能豊富で拡張可能なプログラミングの外見上の面を提供し、これはそのデータ・モデルに固有の機能を利用できるようにするだけではなく、既存のファイル・システムおよびデータベース・アクセス方法も取り入れ、拡張している。
本明細書の説明、およびさまざまな図において、本発明のストレージラットフォーム400は、「WinFS」と呼ばれる。ただし、このストレージラットフォームを参照するこの名称の使用は、もっぱら説明上の便宜のためであり、決して限定することを意図するものではない。
本発明のストレージ・プラットフォーム400のデータ・ストア402は、ストア内に常駐するデータの編成(organization)、検索、共有、同期化、およびセキュリティをサポートするデータ・モデルを実装する。本発明のデータ・モデルにおいて、「オブジェクト」とはストレージ情報の基本単位である。データ・モデルは、以下でさらに詳細に説明するように、オブジェクトおよびオブジェクト拡張を宣言し、オブジェクト間のリレーションシップを確立し、オブジェクトを編成して分類するためのメカニズムを提供する。
データ・モデルは、タイプの間のサブタイプ−スーパータイプというリレーションシップを定義できるようにする。サブタイプ−スーパータイプのリレーションシップは、タイプAがタイプBのBaseTypeであればBのすべてのインスタンスもAのインスタンスでなければならい、というような方法で定義される。これを言い換えると、Bに適合するすべてのインスタンスはAにも適合する必要があるということである。たとえば、AがタイプStringのプロパティNameを持ち、BがタイプInt16のプロパティAgeを持つ場合、Bの任意のインスタンスはNameおよびAgeの両方を持つことになる。このタイプの階層は、ルートにおいて単一のスーパータイプを持つツリーとして考えることができる。ルートからの分岐は第1レベルのサブタイプを提供し、このレベルにおける分岐は第2レベルのサブタイプを提供する、というように続き、自らはサブタイプを持たない末端のリーフのサブタイプまで至る。このツリーは、均一の深さとなるように制約されていないが、循環(cycles)を含むことはできない。所定のタイプは、ゼロまたは多数のサブタイプおよびゼロまたは1つのスーパータイプを持つことができる。所定のインスタンスは、そのタイプのスーパータイプと併せて多くともその1つのタイプに適合することができる。言い換えれば、ツリー内の任意のレベルの所定のインスタンスの場合、インスタンスはそのレベルの多くとも1つのサブタイプに適合することができる。
リレーショナル・データベース・エンジン414は、1つの実施形態においてMicrosoft SQL Serverエンジンを備えており、組み込みスカラ・タイプをサポートする。組み込みスカラ・タイプは、「ネイティブ」でしかも「単純」である。これは、ユーザが独自のタイプを定義できないという意味でネイティブであり、複雑な構造をカプセル化できないという点で単純である。ユーザ定義タイプ(「UDT」)は、複雑な構造化タイプを定義してユーザがタイプ・システムを拡張できるようにすることによってネイティブのスカラ・タイプ・システムを超えるタイプ拡張性のメカニズムを提供する。ユーザによって定義されると、UDTは、組み込みスカラ・タイプが使用されるタイプ・システム内のどこでも使用することができる。
ストレージ・プラットフォーム・スキーマは、データベース・エンジン・ストア内のUDTクラスにマップされる。データ・ストア・オブジェクトは、Base.Itemタイプから派生するUDTクラスにマップされる。拡張もまたUDTクラスにマップされ、継承を利用する。ルートExtensionタイプはBase.Extensionであり、これからすべてのExtensionタイプが派生する。
UDTはCLRクラスである。これは状態(データ・フィールドなど)および振る舞い(ルーチンなど)を備えている。UDTは、C#、VB.NETなど、任意の管理対象の言語を使用して定義される。UDTメソッドおよび演算子は、そのタイプのインスタンスに対してT−SQLで呼び出すことができる。UDTは、たとえば、行(rows)内のカラムのタイプ、T−SQL内のルーチンのパラメータのタイプ、またはT−SQL内の変数のタイプのいずれかにできる。
以下の例はUDTの基本を示している。MapLib.dllがMapLibという名前のアセンブリを備えていると仮定する。このアセンブリにおいて、ネーム・スペースBaseTypesの下にはPointという名前のクラスがある。
Figure 2007509431
以下のT−SQLコードは、クラスPointを、Pointという名前のSQL Server UDTにバインドする。第1のステップは「CreateAssembly」を呼び出し、これは、MapLibアセンブリをデータベースにロードする。第2のステップは、「Create Type」を呼び出してユーザ定義タイプ「Point」を作成し、これを管理対象タイプBaseTypes.Pointにバインドする。
Figure 2007509431
作成されると、「Point」UDTはテーブル内のカラムとして使用することができ、メソッドは以下に示すようにT−SQLで呼び出すことができる。
Figure 2007509431
ストレージ・プラットフォームのスキーマのUDTクラスへのマッピングは、高レベルにおいてかなり直接的である。一般に、ストレージ・プラットフォーム・スキーマはCLRネーム・スペースにマップされる。ストレージ・プラットフォーム・タイプは、CLRクラスにマップされる。CLRクラス継承は、ストレージ・プラットフォーム・タイプ継承をミラーし、ストレージ・プラットフォーム・プロパティはCLRクラス・プロパティにマップされる。
例示的な実施形態
標準的なデータ・ストアは、それぞれがUDTのような、タイプを持つ、基本オブジェクトのテーブルを備えている。振る舞い(メソッドとも呼ばれる)は、そのタイプに追加することができる。一部の最新のデータ・ストアは、新しいタイプを作成するように追加のメソッドでタイプを拡張することができる継承を提供する。たとえば、タイプは、「.doc」または「.jpeg」などの拡張子にすることができる。これらのタイプへの継承拡張子は、たとえば、「.doc2」または「.jpg2」であってもよい。本発明により、タイプ性に対するクエリ(「.doc」のみならず「.doc」への拡張に対するクエリなど)を行うことができる。
例示的なタイプの継承階層が図5に示されている。図5において、タイプは「document」500である。「Legal document」510および「review document」530は、「document」500のサブタイプとして示されている。「legal document」510のサブタイプは、「Washington legal document」520である。タイプ(たとえば「document」)および/またはサブタイプ(たとえば「document」および/または「legal document」および/または「Washington legal document」)に対してクエリを行うことができる。
従来の検索技法では、複数のカラム列を持つテーブルを使用し、そこでは、カラムの1つが、対応するオブジェクト・カラムの各オブジェクトのタイプ・カラムであった。検索を実行するために、検索エンジンは各行(row)を経由し、すべてのオブジェクトをメモリにロードして、一致があるかどうかを決定するためにタイプを検査することによって、すべてのオブジェクトをインスタンス化していた。この技法は非常に速度が遅く、検索を効率的に行うための最善の実行プランを決定する方法はない。
最新の検索技法では計算済みのカラム(computed columns)を備えており、そこでは、追加のカラムが、他の関連付けられたカラムの値に基づく事前計算済みの値(pre-computed values)を持つテーブルの形で提供される。この技法は検索を高速化するが、追加の計算されたカラムを格納するために追加のメモリが必要になる。タイプまたはUDTの関数である「タイプ・パス」カラムと呼ばれる特殊な計算済みカラム(computed column)を提供することができる。これは、任意のタイプまたはサブタイプを検索するために使用することができる。
本発明の態様は、タイプ性(type-ness)に基づいて一連のオブジェクト・インスタンスを効率的に検索できる機能である。値が事前に計算され、オブジェクト・インスタンスをそのタイプに基づいて識別するために十分な情報を好ましく格納する。この値は、タイプの階層内の特定のタイプまたはすべてのタイプ(すべてが共通の祖先を共有)の効率的な検索をサポートするのに十分な情報を含んでいる。さらに、この値は、Bツリーまたは他の索引付け構造などの、高速アクセス構造に使用して、タイプに基づくかまたはタイプ階層に基づいてオブジェクトを検索することができる。
システム内の各タイプごとに、値は好ましくタイプに割り当てられる。値は、タイプ階層の各「レベル」(ルートから同じ深さ)において少なくとも一意でなければならない。タイプごとに、各親クラスのタイプ値は、すべての以前のプレフィックス・オペレーションの結果、またはプレフィックス・オペレーションが行われなかった場合には元のタイプに、プレフィックスされる。同じレベルのすべての要素は、同じストレージ形式(長さ)で格納される必要がある。
タイプのインスタンスを表す場合、値は前述のように決定され、その値はオブジェクトと共に格納される。これをデータベースに格納する場合、オブジェクトおよび事前計算済みの値は、同じテーブルの別個のカラムまたは表1に示すような他のストレージ構造に格納することができる。表1は、例示的なIDおよびその対応する文書タイプを示すサンプルのデータ・タイプの表である。
Figure 2007509431
したがって、図6の注釈付きのタイプ階層に示すように、各タイプには番号または他の識別子が与えられる。図6に示されているように、「document」タイプには識別子ID=1、「legal document」には識別子ID=2、「review document」には識別子ID=3、「Washington legal document」には識別子ID=4が与えられる。オブジェクトのインスタンスが作成されるごとに、適切な識別子がタイプに付加される。そのようにして、たとえば、「document」はタイプ・パス「1」で符号化され、「legal document」は「1.2」で符号化される。さらに「Washington legal document」は、表1に示されるように「1.2.4」で符号化される。
以下の表2は、オブジェクト名、UDT、およびタイプ・パスを格納するもう1つの例示的なストレージの表を示している。オブジェクトのインスタンスが作成されるごとに、適切な識別子がタイプに付加される。そのようにして、たとえば、「document」はタイプ・パス「1」で符号化され、「legal document」は「1.2」で符号化される。さらに「Washington legal document」は、表2に示されるように「1.2.4」で符号化される。
Figure 2007509431
Bツリー索引(B-tree index)などの高速アクセス・ストレージ構造は、事前計算済みの値を含むカラムにわたって作成することができる。この索引付け構造は好ましいことに、所定の値または値の所定のプレフィックスを含む項目を効率的に見つけ出す機能を備えている。特定の値を見つけることは共通しているが、プリフィックス・オペレーションは通常、SQLのLIKE‘PREFIX%’構成体などの、ストリングの値を見つけるためにしか使用されない。LIKE構成体は、索引付け構造でプレフィックスを検索するオペレーションを使用して効率的に計算することができる。
そのようなオペレーションは、符号化された階層のタイプおよびサブタイプを検索するために使用することができる。たとえば、命令「LIKE‘1.2%’」は、(‘%’がワイルド・カードであると仮定すする)「1.2」で始まる符号化を持つ任意のオブジェクトを見つけ出す。したがって、この例示的な命令は、現行の例において、「legal document」タイプまたは「Washington legal document」タイプであるすべてのオブジェクトを検索して返す。
特定のタイプまたはタイプ階層を検索する必要のあるオペレーションは、索引に基づいて動作して、特定のタイプのすべてのオブジェクトまたは特定タイプから派生するすべてのオブジェクトを識別することができる。索引付け構造での等価一致は、前者に使用され、プレフィックス一致は後者を満たす。この符号化により、タイプまたはタイプ階層ロケーションに基づくオブジェクトの高速ルックアップを行うことができる。データベース・システムのBツリーは通常、(LIKE‘aaa%’クエリを満足するためにプリフィックス機能を使用して)これらのオペレーションのいずれもサポートする。
本発明の態様により、データ・テーブルの行は効率的に取り出すことができる。タイプ・パス・カラムの索引は、Bツリーの形態で作成することができる。たとえば、タイプ・パス「1.2」を表しているすべての行は、リーフ・ノードに格納される。リーフ・ノードは、行を持つテーブルに対応する。比較は、たとえば、Bツリー構造が「seek」コマンドに応じて下ってゆく際に行われる。特定のプレフィックスだけでなく特定の値で検索を行うために「seek」オペレーション算を使用できることが意図される。
データベース構造の代わりにメモリ内構造を使用できることが意図されている。逆索引を作成し、サフィックス・オペレーションを使用することができる。さらに、可変長符号化を各階層レベルに使用することができる。さらにその上、同じプロパティを備える一部の非数値表現を使用することができる。
タイプ代替性を使用して、すべてのタイプのオブジェクトは格納することができ、検索は「IS OF(タイプ)」演算子を使用してオブジェクト・タイプおよびサブタイプによってフィルタすることができる。本発明の態様により、「IS OF」などのオペレーション述部はタイプ・パス・カラムにマップすることができる。「IS OF ONLY」など、他のオペレーション述部を使用することができる。したがって、高価なオブジェクト・ハイドレーション(Object Hydration)またはインスタンス化を回避することができる。
タイプ階層に基づく値の事前計算は、オブジェクトのハイドレーティング(Hydrating an object)を回避して、そのタイプを判断するために使用することができる。オブジェクト・ハイドレーション/インスタンス化が高価であり、タイプによるクエリを行うことが一般的であることを想定すると、タイプの制約を限定しないオブジェクトのオブジェクト・インスタンス化を回避することが望ましい。オブジェクトのインスタンス化を回避し、しかも完全に忠実なフィルタリングを可能にするような方法でタイプが符号化できる場合、これはパフォーマンスを向上させることができる。
さらになお、ユーザのタイプ検査要求(user type-check requests)をインターセプトして、代わりに事前計算済みの値に対して等価的なオペレーションを内部的に実行するようにこれらを書き換えることが可能である。これは、事前計算済みの値が存在するすべてのオブジェクトについて行うことができる。
データベース・システムに実装されているタイプに基づく高速オブジェクト識別の実施形態の場合は、所定のタイプに属するオブジェクト、またはそのタイプから派生する任意のタイプのオブジェクトが存在するテーブルの行(rows)数を決定することが望ましい。この推定の問題を解決するための従来技法は、推測すること、すべての値が同等に可能である(つまりフラット分布)と仮定すること、およびテーブル濃度(table cardinality)を使用して推定を作成すること、またはヒストグラムを使用してより高い頻度および頻度の高くない値の範囲を追跡すること、を含んでいる。通常、ヒストグラムは、所定のタイプで存在する値がいくつあるかを決定するために有用である。本発明の態様は、ヒストグラム全体にわたり選択的に推定を行う。
ヒストグラムは、クエリにどのくらいの時間がかかるかを推定するために構築することができる。ヒストグラムは、各タイプのオブジェクトの数を示している。例示的なヒストグラムが図7に示されている。ここで、タイプ「document」、「legal document」、「review document」および「Washington legal document」の例示的なオブジェクト数がヒストグラム形式で示されている。ただし、ヒストグラムは、タイプ階層を提供することはない。タイプ階層は、難しく高価なルックアップ技法によって決定することができる。
本発明の態様は、ヒストグラムの符号化技法を対象としており、そのためタイプ階層はルックアップ技法を必要とすることなく識別することができる。この符号化技法によれば、図6の注釈付きのタイプ階層に示すように、各タイプには番号または他の識別子が与えられる。したがって、ヒストグラムは、この可変長符号化スキームを使用して階層が識別される形で、生成することができる。たとえば、図8に示されているように、幾つかの各タイプ/サブタイプに加えて、1.2.4が1.2のサブタイプであり、1.2が1のサブタイプであること、が容易に識別することができる。
図9は、本発明により選択性推定を生成する例示的な方法の流れ図を示している。オブジェクトのセット全体におけるタイプ階層クエリの選択性を推定するために、ステップ900において本明細書に記載の符号化を使用し、ステップ910においてこの符号化の結果をカラムとして格納し、ステップ920においてそのカラム全体の(カラム毎に、またはカラムに索引を作成した結果として)ヒストグラムを作成すること、が望ましい。
次に、ステップ930において、クエリ・タイプが符号化され、どのオブジェクトを、タイプまたはそのタイプの任意のサブタイプから取り出すかを記述する。ヒストグラム内の各要素に対し、ステップ940において、符号化されたクエリ・タイプがヒストグラム・エントリのプレフィックスであるかどうか決定される。プレフィックスである場合は、ステップ950において、このヒストグラム・ステップに関連付けられている要素の数が、ヒストグラムとは別の「一致する要素」の数に追加される。プレフィックスではない場合は、ステップ960において、このヒストグラム・ステップに関連付けられている要素の数が、ヒストグラムとは別の「一致しない要素」の数に追加される。
すべてのヒストグラム・ステップが処理されると、「一致する要素」の数をとって、それを「一致する要素」の数および「一致しない要素」の数の合計で割ることにより、ステップ990において、この階層タイプ・マッチング・クエリの選択性推定が決定される。
したがって、この2進符号化のヒストグラムを使用して、タイプ階層内のUDTの分布に関する統計情報を決定することができる。この階層符号化の知識を備えた上で選択性推定中にヒストグラムをたどることにより、クエリで使用するためにかなり正確な濃度推定を生成することができる。説明されているアルゴリズムごとに選択性を推定するために組み込み関数が使用される場合、IS OFへのCLR呼び出しを完全に削除して、組み込み関数(intrinsic function)によって濃度推定を行うことが可能であることに留意されたい。
本発明によれば、UDTからタイプIDを返す関数が実装される。もう1つの関数は、タイプIDからの階層タイプID符号化を返す。WinFSなどのストレージ・システムは、すべてのUDTがホスティングするテーブル(たとえばオブジェクト・テーブル)に計算されたカラムを望ましく作成する。1つの実施形態において、IS OFスカラが追加/置換の述部を含むことが検討される。たとえば、UDT valrefは、UDTを含んでいる基本テーブルを見つけるために使用することができる。次に、基本テーブルの計算されたカラムは、スカラ表現を備える計算されたカラムの存在を決定するために使用することができる。そのような列が見つかった場合、暗黙の述部が追加される。
各UDTタイプは、小さい(たとえば4バイト)固定長の値であると仮定される。さらに、階層タイプIDは、親タイプIDのストリングまたはバイナリ・フィールドへの連結として定義することもできる。UDTを含んでいる各行もこの階層符号化を表す計算されたカラムを有する場合、索引はこの新しいカラムにわたって作成することができる。すべてのUDTを所定のタイプ階層に返すオペレーションは、範囲プレフィックス・オペレーションを使用して実装することができ、タイプIDの完全一致は非階層一致を解決するために使用することができる。
例示的な階層タイプIDは、以下のような関数として提供される。
Figure 2007509431
UDT_expressionは、任意のユーザ定義タイプ値の表現式である。HIERARCHICAL_TYPE_ID関数は、決定論的かつ正確であることが好ましい。これは、階層タイプIDを使用して派生した計算されたカラムに索引を構築する機能を提供する。計算されたカラムは、永続的にする必要はないと考えられる。
タイプ・パスが別のプレフィックスであるかどうかを決定するため、システムは、既存のLIKEプレフィックス・スキャニング機能を使用して構築されるHAS_PREFIX演算子を内部で使用する。このプレフィックス・スキャニング機能を使用して、フォーム「character_expression LIKE ‘prefix_string%’」の条件に対するマッチングを実装する。ここでprefix_stringは、%などのワイルド・カード文字を含まない何らかの定数ストリングである。このHAS_PREFIX演算子は、ユーザの管理下にはないことが望ましい。HAS_PREFIXは、索引が使用可能である場合に索引スキャンを使用することができる。
階層タイプID値は、索引に格納する必要のあるデータの量を軽減するために短いことが望ましい。階層タイプIDは、WinFSスキーマの各タイプについては100文字未満の長さであることが望ましい。
内部タイプIDを与えられた階層タイプIDを取り出すための関数は、これが索引作成中に使用されるため、高速であることが望ましい。
好ましくは、タイプは、そのインスタンスがデータベースに残っている間(つまり、引き続き存在するテーブルの定義でタイプまたはその祖先が使用される場合)、ドロップまたは削除することができない。それ以外の場合、ドロップされたタイプの階層タイプIDを含んでいる索引エントリは索引に残る場合があるが、それらを解釈することは不可能になる。さらに、1つのタイプをドロップした後に新しいタイプを追加すると、結果として既存のインスタンスのタイプと同じ階層タイプIDを生じることがあり、エラーを引き起こす。
階層タイプIDの内部フォーマットは、好ましくは、長さが4バイトの倍数のvarbinary値で、タイプ階層のルートからUDT_expressionの最も特定のタイプへのパスに沿った各タイプの(たとえば、4バイトの整数として内部に格納されている)タイプIDの連結を含むものである。
値がユーザ定義のタイプである属性を備える大規模なテーブルの場合、その属性の値が特定のタイプを持つか、または所定のタイプのサブタイプであるような行の高速取り出しをサポートすることが望ましい。この状況において高速検索をサポートするために、索引は、HIERARCHICAL_TYPE_IDを使用して作成された計算されたカラムに作成することができる。
以下のUDTのタイプ階層を想定する。
Figure 2007509431
さらに、以下のように定義されているテーブルがある。
Figure 2007509431
IS OF演算子を使用してpcolのタイプをフィルタリング中にperson行の高速ルックアップを可能にするため、personテーブルのperson.pcolに対して階層タイプIDに関する計算されたカラムおよび索引を以下のように追加することができる。
Figure 2007509431
これにより、たとえば、ユーザは、「person」テーブルが大規模なものであっても時間給従業員(hourly employees)に関するすべての情報を迅速に見つけることができる。
HIERARCHICAL_TYPE_IDのCLUSTERED索引は、所定のタイプのすべての値の高速検索が最優先である場合に作成することができる。索引CLUSTEREDを作成することで、同じページ上またはディスクの近隣ページ上の、同じタイプの値またはそのタイプ階層の同じサブツリーの値をグループ化することになる。
クエリ書き換えの場合、IS OF述部がHIERARCHICAL_TYPE_IDを介して内部で実装され、およびHIERARCHICAL_TYPE_IDから派生した計算されたカラムの索引がIS OF演算子を使用するタイプのクエリの迅速化を助けることができる、一般ステートメントを含めることが考えられる。
システムは、クエリ書き換えを内部で使用して、タイプ述部とも呼ばれるIS [NOT] OF述部を処理する。タイプ述部の望ましいフォーマットは、以下のように定義される。
Figure 2007509431
次の形式の表現
Figure 2007509431
は、
Figure 2007509431
と同等である。
次の形式のタイプ述部
Figure 2007509431
は、
UDT_expressionのタイプがtype_listのエントリと一致するかどうかを検査する述部の論理和として書き換えられる。
UDT_expression がInclusive_UDT_specificationであるかどうか(UDT expression IS OF an Inclusive UDT specification)を決定するための検査は、次のように書き換えられたクエリで表現される。
Figure 2007509431
ここで、<<constant hierarchical type id of UDT_name>>は、UDT_nameの階層タイプIDを表すvarbinary定数である。
UDT_expressionがExclusive_UDT_specificationであるかどうか(UDT expression IS OF an Exiusive_UDT specification)を決定するための検査は、次のように書き換えられたクエリで表現される。
Figure 2007509431
上記の書き換えられた条件におけるHIERARCHICAL TYPE ID(UDT_expression)表現は、person_htid_idxなどの同じ表現から構築された計算されたカラム上の索引と一致することに留意されたい。
以下の例では、IS OFおよびIS OF(ONLY...)述部をサポートするために上記の書き換え規則の適用を示している。
− いかなる種類の従業員であってもすべての人物を見つける
Figure 2007509431
− 書き換えクエリ
Figure 2007509431
− タイプemployee_tであってもそのサブタイプの1つではないすべての人物を見つける
Figure 2007509431
− 書き換えクエリ
Figure 2007509431
− 定額給または時間給従業員であるすべての人物を見つける
Figure 2007509431
− 書き換えクエリ
Figure 2007509431
UDT表現の組み込みタイプIDを返すために、オーバーロードされたバージョンの関数TYPE_ID()を追加できることが考えられる。
さらに、単一のvarbinary階層タイプID(htid)引数に対してオーバーロードされたバージョンの関数TYPE_NAME()を追加して、そのhtidを備えるタイプのストリング名を返すことが考えられる。以下の例では、テーブル内の階層のそれぞれの異なるタイプの出現をカウントする方法を示している。
− 各タイプの人物の数をカウントする
Figure 2007509431
階層タイプIDに対して圧縮スキームを提供することができる。これは、階層タイプIDから構築された索引キー・サイズの大きさを減らすことになる。たとえば、これらをbase―254の整数(十進数0〜254のバイト値の数字で)として符号化し、バイト255を区切り記号として使用する。すると、階層タイプIDは、次の形式になる。
Figure 2007509431
多くの状況において、これはパス上のタイプIDあたり、4バイトではなく、わずか2バイトから3バイトという結果になる。
タイプ包含機能は、タイプ述部内のtype_listが複数のエントリを持つ場合、クエリ書き換えに追加することができる。たとえば、
Figure 2007509431
は、
Figure 2007509431
と同等である。
employee_tがperson_tのサブタイプだからである。
結論
本明細書に記載のさまざまなシステム、方法、技法は、ハードウェアまたはソフトウェア、あるいは必要に応じてその両方を組み合わせて実装することができる。したがって、本発明の方法および装置、あるいは特定の態様またはその部分は、フロッピー(登録商標)ディスケット、CD−ROM、ハードドライブ、または他の機械可読記憶媒体などの有形媒体に実装されるプログラム・コード(つまり命令)の形態を取り、プログラム・コードがコンピュータなどのマシンによってロードされ実行されるときに、そのマシンは本発明を実施するための装置となる。プログラム可能コンピュータ上でプログラム・コードを実行する場合、コンピュータは一般に、プロセッサ、プロセッサに可読な記憶媒体(揮発性および不揮発性メモリおよび/またはストレージ要素を含む)、少なくとも1つの入力装置、および少なくとも1つの出力装置を含んでいる。1つまたは複数のプログラムは、好ましくは高水準プロシージャ型またはオブジェクト指向プログラミング言語で実装され、コンピュータ・システムと通信する。ただし、プログラムは、必要に応じて、アセンブリまたはマシン言語で実装することができる。いずれの場合おいても、言語はコンパイルまたは解釈された言語であり、ハードウェア実装と組み合わせることができる。
本発明の方法および装置は、電気配線またはケーブリング経由、光ファイバ経由、あるいは他の伝送形態経由など、一部の伝送媒体上を伝送されるプログラム・コードの形態で組み入れることもでき、プログラム・コードがEPROM、ゲートアレイ、プログラム可能論理装置(PLD)、クライアント・コンピュータ、ビデオ・レコーダなどのマシンによって受信され、ロードされ、実行されるときに、マシンが本発明を実施するための装置となることを特徴としている。汎用プロセッサ上で実装される場合、プログラム・コードはプロセッサと結合して、本発明の索引付け機能を実行するように機能する一意の装置を提供する。
本発明についてさまざまな図の好ましい実施形態に関連して説明してきたが、他の類似した実施形態を使用することができ、また本発明を逸脱することなく本発明の同じ機能を実行するために変更および追加を行うことが可能であることを理解されたい。たとえば、本発明の例示的な実施形態は、パーソナル・コンピュータの機能をエミュレートするデジタル装置のコンテクストで説明されているが、本発明が説明されているようなデジタル装置に限定されることはなく、本発明が、有線または無線にはかかわりなく、ゲーム機、ハンドヘルド・コンピュータ、ポータブル・コンピュータなどの任意の数の既存または新たなコンピューティング装置または環境に適用することができ、通信ネットワーク経由で接続されてネットワーク全体と対話する任意の数のそのようなコンピューティング装置に適用することができることを当業者は理解するであろう。さらに、特に無線ネットワーク装置の数が増加し続けているため、ハンドヘルド装置オペレーティング・システムおよび他のアプリケーション固有オペレーティング・システムを含むさまざまなコンピュータ・プラットフォームが本明細書において検討されることを強調すべきである。したがって、本発明は、いかなる単一の実施形態に限定されることはなく、添特許請求の範囲に従った広さと範囲で解釈されるものとする。
本発明の態様を組み込むことができるコンピュータ・システムを示すブロック図である。 ハードウェア・コンポーネント、オペレーティングス・システムコンポーネント、およびアプリケーション・プログラム・コンポーネントという、3つのコンポーネント・グループに分割されるコンピュータ・システムを示すブロック図である。 フォルダにグループ化されたファイルの3ベースの階層的構造を示す図である。 本発明と共に使用することができる例示的なストレージ・プラットフォームを示す図である。 タイプおよびサブタイプに基づくオブジェクトの典型的な階層構造を示す図である。 本発明による注釈付きのタイプ階層を示す図である。 従来のヒストグラムを示す図である。 本発明により構築することのできるヒストグラムを示す図である。 本発明により選択性推定を生成する例示的な方法を示す流れ図である。

Claims (24)

  1. 各タイプが識別子を有し、関連付けられた前記タイプを有する複数のオブジェクトを備えるデータ・ストアと、
    前記複数のオブジェクトを操作するためのハードウェア/ソフトウェア・インターフェース・システムと
    を備えることを特徴とするコンピュータ・システム。
  2. 前記各タイプは、ユーザ定義タイプ(UDT)であることを特徴とする請求項1に記載のコンピュータ・システム。
  3. 前記タイプは、別のタイプのサブタイプにすることができることを特徴とする請求項1に記載のコンピュータ・システム。
  4. 前記データ・ストアは、各オブジェクトへのタイプ・パスをさらに備えることを特徴とする請求項1に記載のコンピュータ・システム。
  5. 前記データ・ストアは各タイプ・パスを格納するための計算されたカラムを備えることを特徴とする請求項4に記載のコンピュータ・システム。
  6. 前記各タイプ・パスは、可変長符号化値を備えることを特徴とする請求項4に記載のコンピュータ・システム。
  7. 各可変長符号化値は、前記関連付けられたオブジェクトの前記タイプの階層レベルに対応することを特徴とする請求項6に記載のコンピュータ・システム。
  8. 複数のオブジェクトを操作することが可能なハードウェア/ソフトウェア・インターフェース・システムであって、各オブジェクトは関連付けられたタイプを有し、各タイプは識別子を有することを特徴とするハードウェア/ソフトウェア・インターフェース・システム。
  9. 前記各タイプは、ユーザ定義タイプ(UDT)であることを特徴とする請求項8に記載のハードウェア/ソフトウェア・インターフェース・システム。
  10. 前記タイプは、別のタイプのサブタイプにすることができることを特徴とする請求項8に記載のハードウェア/ソフトウェア・インターフェース・システム。
  11. 各オブジェクトは、関連付けられたタイプ・パスを有することを特徴とする請求項8に記載のハードウェア/ソフトウェア・インターフェース・システム。
  12. 各タイプ・パスは、データ・ストア内の計算されたカラムに属することを特徴とする請求項11に記載のハードウェア/ソフトウェア・インターフェース・システム。
  13. 各タイプ・パスは、可変長符号化値を備えることを特徴とする請求項11に記載のハードウェア/ソフトウェア・インターフェース・システム。
  14. 各可変長符号化値は、前記関連付けられたオブジェクトの前記タイプの階層レベルに対応することを特徴とする請求項13に記載のハードウェア/ソフトウェア・インターフェース・システム。
  15. データ構造を格納したコンピュータ可読媒体であって、オブジェクトを含む第1のデータ・フィールドと、
    識別子を有して、前記オブジェクトに関連付けられた、データ・タイプを含む第2のデータ・フィールドと
    を備えるコンピュータ可読媒体。
  16. 前記タイプは、ユーザ定義タイプ(UDT)であることを特徴とする請求項15に記載のコンピュータ可読媒体。
  17. 前記タイプは、別のタイプのサブタイプにすることができることを特徴とする請求項15に記載のコンピュータ可読媒体。
  18. 前記オブジェクトへのタイプ・パスを含む第3のデータ・フィールドをさらに備えることを特徴とする請求項15に記載のコンピュータ可読媒体。
  19. 前記タイプ・パスは、可変長符号化値を備えることを特徴とする請求項18に記載のコンピュータ可読媒体。
  20. 前記可変長符号化値は、前記テータタイプから派生されることを特徴とする請求項19に記載のコンピュータ可読媒体。
  21. 識別子を備えたタイプを有する複数のオブジェクト全体に対してクエリの選択的推定を生成する方法であって、
    前記識別子から派生されたタイプ・パスで各オブジェクトを符号化すること、
    各オブジェクトに対し、そのタイプ・パスが前記クエリを満足するかどうかを決定すること、および
    オブジェクトの合計数に対する前記クエリを満足するタイプ・パスを有するオブジェクトの比率を決定すること
    を備える方法。
  22. 前記クエリを受け取り、どのタイプ・パスが前記クエリを満足するかを決定することをさらに備えることを特徴とする請求項21に記載の方法。
  23. 前記クエリが満足させることのできるタイプを有するように前記クエリを符号化することをさらに備えることを特徴とする請求項21に記載の方法。
  24. 前記符号化されたオブジェクトを使用してヒストグラムを作成することをさらに備えることを特徴とする請求項21に記載の方法。
JP2006536600A 2003-10-23 2004-07-29 タイプ・パス索引付け Expired - Fee Related JP4653106B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/692,350 US7480646B2 (en) 2003-10-23 2003-10-23 Type path indexing
PCT/US2004/024734 WO2005045590A2 (en) 2003-10-23 2004-07-29 Type path indexing

Publications (3)

Publication Number Publication Date
JP2007509431A true JP2007509431A (ja) 2007-04-12
JP2007509431A5 JP2007509431A5 (ja) 2007-09-20
JP4653106B2 JP4653106B2 (ja) 2011-03-16

Family

ID=34522101

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006536600A Expired - Fee Related JP4653106B2 (ja) 2003-10-23 2004-07-29 タイプ・パス索引付け

Country Status (6)

Country Link
US (3) US7480646B2 (ja)
EP (1) EP1604261B1 (ja)
JP (1) JP4653106B2 (ja)
KR (1) KR101086575B1 (ja)
CN (1) CN100557605C (ja)
WO (1) WO2005045590A2 (ja)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4222600B2 (ja) * 2003-01-07 2009-02-12 日本碍子株式会社 セラミックハニカム構造体の焼成方法
US8694510B2 (en) 2003-09-04 2014-04-08 Oracle International Corporation Indexing XML documents efficiently
US7480646B2 (en) * 2003-10-23 2009-01-20 Microsoft Corporation Type path indexing
US7213015B1 (en) * 2003-12-31 2007-05-01 Ncr Corporation Storing and delivering program code for manipulation of a user-defined data type
US7480670B1 (en) * 2004-03-19 2009-01-20 Teradata Us, Inc. Activation of native operations for distinct-user defined types
US8090698B2 (en) 2004-05-07 2012-01-03 Ebay Inc. Method and system to facilitate a search of an information resource
US7849106B1 (en) * 2004-12-03 2010-12-07 Oracle International Corporation Efficient mechanism to support user defined resource metadata in a database repository
US7478083B2 (en) * 2006-04-03 2009-01-13 International Business Machines Corporation Method and system for estimating cardinality in a database system
US7502807B2 (en) * 2006-06-30 2009-03-10 Microsoft Corporation Defining and extracting a flat list of search properties from a rich structured type
US7921104B2 (en) * 2006-08-31 2011-04-05 Red Hat, Inc. Invoking actions on data via LDAP requests
KR100892842B1 (ko) * 2007-08-08 2009-04-10 엔에이치엔(주) 사용자 중심 정보탐색 방법 및 시스템
US7908252B1 (en) 2008-03-19 2011-03-15 Crossroads Systems, Inc. System and method for verifying paths to a database
US8713048B2 (en) * 2008-06-24 2014-04-29 Microsoft Corporation Query processing with specialized query operators
US8364751B2 (en) 2008-06-25 2013-01-29 Microsoft Corporation Automated client/server operation partitioning
US8407196B1 (en) * 2009-02-28 2013-03-26 Kaspersky Lab, Zao Object-oriented database for file system emulator
CN102253967B (zh) * 2011-06-03 2013-03-27 用友软件股份有限公司 数据查找系统和数据查找方法
US11487707B2 (en) * 2012-04-30 2022-11-01 International Business Machines Corporation Efficient file path indexing for a content repository
US11138234B2 (en) * 2012-09-28 2021-10-05 Sqream Technologies Ltd. System and a method for executing SQL-like queries with add-on accelerators
US10635674B2 (en) * 2012-09-28 2020-04-28 Oracle International Corporation Migrating a pluggable database between database server instances with minimal impact to performance
US8914356B2 (en) 2012-11-01 2014-12-16 International Business Machines Corporation Optimized queries for file path indexing in a content repository
US9323761B2 (en) 2012-12-07 2016-04-26 International Business Machines Corporation Optimized query ordering for file path indexing in a content repository
US10360269B2 (en) 2015-10-23 2019-07-23 Oracle International Corporation Proxy databases
WO2017095364A1 (en) * 2015-11-30 2017-06-08 Hewlett Packard Enterprise Development Lp Managing access of objects of a plurality of types
US10366082B2 (en) * 2016-12-09 2019-07-30 Oracle International Corporation Parallel processing of queries with inverse distribution function
US10614064B2 (en) * 2017-05-03 2020-04-07 Servicenow, Inc. Class path based database operations
CN110489516B (zh) * 2019-08-15 2022-03-18 厦门铅笔头信息科技有限公司 一种快速为海量结构化数据建立前缀索引的方法
US11550848B2 (en) 2020-01-30 2023-01-10 Adobe Inc. Query processing using matrix and reduced predicate statements
US11487758B2 (en) 2020-01-30 2022-11-01 Adobe Inc. Query processing using hybrid inverted index of predicates
US11354290B2 (en) * 2020-01-30 2022-06-07 Adobe Inc. Query processing using inverted index of predicate statements

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003150424A (ja) * 2001-11-16 2003-05-23 Fujitsu Ltd ファイルシステム、制御方法及びプログラム

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6209040B1 (en) * 1992-10-09 2001-03-27 Microsoft Corporation Method and system for interfacing to a type library
US5864862A (en) * 1996-09-30 1999-01-26 Telefonaktiebolaget Lm Ericsson (Publ) System and method for creating reusable components in an object-oriented programming environment
US6088028A (en) * 1997-12-16 2000-07-11 At&T Corp. Method for enabling rapid modification of a display controlled by a computer program
US6016497A (en) * 1997-12-24 2000-01-18 Microsoft Corporation Methods and system for storing and accessing embedded information in object-relational databases
US6345126B1 (en) * 1998-01-29 2002-02-05 Xerox Corporation Method for transmitting data using an embedded bit stream produced in a hierarchical table-lookup vector quantizer
US6499036B1 (en) * 1998-08-12 2002-12-24 Bank Of America Corporation Method and apparatus for data item movement between disparate sources and hierarchical, object-oriented representation
US6246403B1 (en) * 1998-10-08 2001-06-12 Hewlett-Packard Company Method and apparatus for generating a graphical user interface
US6366934B1 (en) * 1998-10-08 2002-04-02 International Business Machines Corporation Method and apparatus for querying structured documents using a database extender
US6279007B1 (en) * 1998-11-30 2001-08-21 Microsoft Corporation Architecture for managing query friendly hierarchical values
US6587856B1 (en) * 1998-12-07 2003-07-01 Oracle International Corporation Method and system for representing and accessing object-oriented data in a relational database system
US6704743B1 (en) * 1999-09-13 2004-03-09 Copernus, Inc. Selective inheritance of object parameters in object-oriented computer environment
US6721727B2 (en) * 1999-12-02 2004-04-13 International Business Machines Corporation XML documents stored as column data
US6591260B1 (en) * 2000-01-28 2003-07-08 Commerce One Operations, Inc. Method of retrieving schemas for interpreting documents in an electronic commerce system
US6457020B1 (en) * 2000-03-20 2002-09-24 International Business Machines Corporation Query optimization using a multi-layered object cache
US6883137B1 (en) * 2000-04-17 2005-04-19 International Business Machines Corporation System and method for schema-driven compression of extensible mark-up language (XML) documents
EP1388211A2 (en) * 2001-02-05 2004-02-11 Expway Method and system for compressing structured documents
US6804677B2 (en) * 2001-02-26 2004-10-12 Ori Software Development Ltd. Encoding semi-structured data for efficient search and browsing
US7036072B1 (en) * 2001-12-18 2006-04-25 Jgr Acquisition, Inc. Method and apparatus for declarative updating of self-describing, structured documents
US20030018616A1 (en) * 2001-06-05 2003-01-23 Wilbanks John Thompson Systems, methods and computer program products for integrating databases to create an ontology network
WO2003001720A2 (en) * 2001-06-21 2003-01-03 Isc, Inc. Database indexing method and apparatus
US7363310B2 (en) * 2001-09-04 2008-04-22 Timebase Pty Limited Mapping of data from XML to SQL
US6917969B2 (en) * 2002-01-03 2005-07-12 International Business Machines Corporation Portable bean-based content rendering
US7457810B2 (en) * 2002-05-10 2008-11-25 International Business Machines Corporation Querying markup language data sources using a relational query processor
GB2394800A (en) * 2002-10-30 2004-05-05 Hewlett Packard Co Storing hierarchical documents in a relational database
US7089266B2 (en) * 2003-06-02 2006-08-08 The Board Of Trustees Of The Leland Stanford Jr. University Computer systems and methods for the query and visualization of multidimensional databases
US7478100B2 (en) * 2003-09-05 2009-01-13 Oracle International Corporation Method and mechanism for efficient storage and query of XML documents based on paths
US7480646B2 (en) * 2003-10-23 2009-01-20 Microsoft Corporation Type path indexing

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003150424A (ja) * 2001-11-16 2003-05-23 Fujitsu Ltd ファイルシステム、制御方法及びプログラム

Also Published As

Publication number Publication date
EP1604261A4 (en) 2008-08-06
EP1604261A2 (en) 2005-12-14
US7379927B2 (en) 2008-05-27
US7480646B2 (en) 2009-01-20
US20050091183A1 (en) 2005-04-28
US7516143B2 (en) 2009-04-07
KR101086575B1 (ko) 2011-11-23
KR20060123027A (ko) 2006-12-01
US20060041574A1 (en) 2006-02-23
EP1604261B1 (en) 2012-09-19
CN100557605C (zh) 2009-11-04
WO2005045590A3 (en) 2005-11-10
JP4653106B2 (ja) 2011-03-16
US20060064412A1 (en) 2006-03-23
WO2005045590A2 (en) 2005-05-19
CN1846207A (zh) 2006-10-11

Similar Documents

Publication Publication Date Title
JP4653106B2 (ja) タイプ・パス索引付け
JP4627777B2 (ja) データに関数を適用した結果に対する構造化インデックス
KR100959473B1 (ko) 저장 플랫폼과 애플리케이션 프로그램 사이의 애플리케이션프로그래밍 인터페이스
JP5373846B2 (ja) リレーショナルシステムにおける階層的に編成された情報にアクセスするための階層的インデックス付け
US7555497B2 (en) Systems and methods for separating units of information manageable by a hardware/software interface system from their physical organization
KR101024730B1 (ko) 항목 기반 저장 플랫폼 내에서 데이터 모델링하기 위한시스템 및 방법
US7739316B2 (en) Systems and methods for the implementation of base schema for organizing units of information manageable by a hardware/software interface system
US7428546B2 (en) Systems and methods for data modeling in an item-based storage platform
US7483915B2 (en) Systems and method for representing relationships between units of information manageable by a hardware/software interface system
US7769770B2 (en) Secondary index and indexed view maintenance for updates to complex types
US7801882B2 (en) Optimized constraint and index maintenance for non updating updates
KR20070121664A (ko) 데이터 저장 시스템에서 데이터를 조작하는 시스템 및 방법
JP4901472B2 (ja) ハードウェア/ソフトウェア・インターフェース・システムにより管理可能な情報の単位を編成するデジタル・イメージ・スキーマの実装のためのシステムおよび方法
KR101022936B1 (ko) 하드웨어/소프트웨어 인터페이스 시스템에 의해 관리가능한정보 단위들에 대한 확장 및 상속을 위한 시스템 및 방법

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070730

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

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100827

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

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

R150 Certificate of patent or registration of utility model

Ref document number: 4653106

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20131224

Year of fee payment: 3

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

LAPS Cancellation because of no payment of annual fees