(57)【要約】  使用されるデータモデルまたはスキーマから独立に、同時並行してＯＬＴＰおよびＯＬＡＰのアクティビティを効率よくサポートするデータベース・アクセス・モデルおよび記憶構造が説明される。提示される記憶構造およびアクセスモデルは、特定の作業負荷または問合せパターンのためのスキーマを設計する必要を回避し、特定の問合せをサポートするための索引付けを設計し、または実施する必要を回避する。実際、提示されるアクセスモデルは、使用されるデータベースモデルから独立しており、中でも特に、関係モデル、オブジェクトモデルおよび階層モデルを同等にサポートすることができる。
2013525881.tif 000002
【特許請求の範囲】
【請求項１】
１つまたは複数のディジタルデータ処理システム上で実施されるデータ記憶および／または検索システムであって、
エンティティ型ごとの複数のデータトンネルと、属性ごとの固定された複数のデータトンネルとを備え、前記データトンネルのうちの１つまたは複数が複数のデータセルを備える記憶媒体であり、
前記データセルのそれぞれが、エンティティ型のそれぞれのインスタンスについての属性のそれぞれのインスタンスと関連付けられたデータを含み、
前記データトンネルのうちの１つまたは複数について、前記データトンネルのうちの１つまたは複数のそれぞれにおける前記データセルが、属性のそれぞれのインスタンスが１つまたは複数のオペランドの所与の集合についてそれぞれの演算子によって特徴付けられる可能性または不可能性を指示するブール値の結果に前記演算子が評価するためのデータを有する
前記記憶媒体と、
前記記憶媒体と通信結合状態にあり、前記演算子のうちの１つまたは複数および１つまたは複数のオペランドの所与の集合に基づいて１つまたは複数のデータトンネルにアクセスする記憶エンジンと
を備えるシステム。
【請求項２】
エンティティ型ごとの複数の連結データトンネルと、属性ごとの固定された複数の連結データトンネルとを備え、前記連結データトンネルのうちの１つまたは複数が複数の連結データセルを備える記憶媒体であり、
前記連結データセルのそれぞれが、エンティティ型のそれぞれのインスタンスについての属性のそれぞれのインスタンスと関連付けられたデータを含み、
属性のそれぞれのインスタンスが、ただ１つのそれぞれの連結データトンネルにおいて１つのそれぞれの連結データセルを有し、
前記連結データトンネルのうちの１つまたは複数について、前記連結データトンネルのうちの１つまたは複数のそれぞれにおける前記連結データセルが、属性のそれぞれのインスタンスが１つまたは複数のオペランドの所与の集合について等価である可能性または不可能性を指示するブール値の結果にそれぞれの等価演算子が評価するためのデータを有する
前記記憶媒体と、
前記記憶媒体と通信結合状態にあり、前記等価演算子のうちの１つまたは複数および１つまたは複数のオペランドの所与の集合に基づいて１つまたは複数の連結データトンネルにアクセスする記憶エンジンと
を備える、請求項１、４５、７５、７６、７７、７９、および８１のいずれかに記載のデータ記憶および／または検索システム。
【請求項３】
エンティティ型ごとの複数の連結データトンネルと、属性ごとの固定された複数の連結データトンネルとを備え、前記連結データトンネルのうちの１つまたは複数が複数の連結データセルを備える記憶媒体であり、
前記連結データセルのそれぞれが、エンティティ型のそれぞれのインスタンスについての属性のそれぞれのインスタンスと関連付けられたデータを含み、
前記連結データトンネルのうちの１つまたは複数について、前記連結データトンネルのうちの１つまたは複数のそれぞれにおける前記連結データセルが、属性のそれぞれのインスタンスが１つまたは複数のオペランドの所与の集合について等価である可能性または不可能性を指示するブール値の結果にそれぞれの等価演算子が評価するためのデータを有し、連結データセルの過半数が、１つまたは複数のオペランドの所与の集合について同様の結果をもたらす
前記記憶媒体と、
前記記憶媒体と通信結合状態にあり、前記等価演算子のうちの１つまたは複数および１つまたは複数のオペランドの所与の集合に基づいて１つまたは複数の連結データトンネルにアクセスする記憶エンジンと
を備える、請求項２に記載のデータ記憶および／または検索システム。
【請求項４】
前記連結データセルが、前記属性の前記それぞれのインスタンスのダイジェストを含み、
前記それぞれの連結データトンネルが、前記属性の前記それぞれのインスタンスの定義済みハッシュ符号化から、前記ハッシュ符号化に前記複数の連結データトンネルの数のモジュロを適用することによって選択される、
請求項３に記載のデータ記憶および／または検索システム。
【請求項５】
前記属性の前記それぞれのインスタンスのサイズが十分に小さいときに、前記それぞれのインスタンスの前記ダイジェストが前記それぞれのインスタンスの値自体であり、それによって前記等価演算子が等価を確実視することができる、請求項４に記載のデータ記憶および／または検索システム。
【請求項６】
エンティティ型ごとの複数の組合せデータトンネルと、属性ごとの固定された複数の組合せデータトンネルとを備え、前記データトンネルのうちの１つまたは複数が複数の組合せデータセルを備える記憶媒体であり、
前記組合せデータセルのそれぞれが、エンティティ型のそれぞれのインスタンスについての属性のそれぞれのインスタンスと関連付けられたデータを含み、
属性のそれぞれのインスタンスが、すべてのそれぞれの組合せデータトンネルにおいて１つのそれぞれの組合せデータセルを有し、
前記組合せデータトンネルのうちの１つまたは複数について、前記組合せデータトンネルのうちの１つまたは複数のそれぞれにおける前記組合せセルが、属性のそれぞれのインスタンスが１つまたは複数のオペランドの所与の集合について範囲を定められる可能性または不可能性を指示するブール値の結果にそれぞれの範囲限定演算子が評価するためのデータを有する
前記記憶媒体と、
前記記憶媒体と通信結合状態にあり、前記範囲限定演算子のうちの１つまたは複数および１つまたは複数のオペランドの所与の集合に基づいて１つまたは複数の組合せデータトンネルにアクセスする
記憶エンジンと
を備える、請求項１、４５、７５、７６、７７、７９、および８１のいずれかに記載のデータ記憶および／または検索システム。
【請求項７】
それぞれの属性の各インスタンスが、一元的な位取りで、固定小数点に対する有効数字部として表現され、
各組合せデータトンネルが前記有効数字部の部分に対応し、
すべての組合せデータトンネルが前記有効数字部に関しては相互排他的であり、
すべての組合せデータトンネルが前記有効数字部の全体を囲む、
請求項６に記載のデータ記憶および／または検索システム。
【請求項８】
前記記憶システムの前記属性の前記組合せトンネルの読取りアクセスの間の範囲限定演算子の前記評価についてのさらなる改善が、
前記範囲限定演算子内のそれぞれの境界オペランドを、固定小数点を有する一元的な位取りの有効数字部に変換するステップと、
それぞれの境界オペランドの有効数字部ビットを有効桁の降順で比較して、前記オペランド間で異なる最初の有効数字部ビットを見つけ、すべての先行する共通ビットを決定データ値とみなすステップと、
前記決定値の有効数字の厳密な部分集合を含む最低有効数字の組合せデータトンネルを見つけ、前記組合せデータトンネルを決定データトンネルとみなすステップと、
前記属性にかかわる他の組合せデータトンネルの前にまず前記決定データトンネルにアクセスするステップと、
前記決定データトンネルのすべての組合せデータセルを検査し、前記組合せデータセルが前記決定データ値と等しくない場合に、それぞれのエンティティインスタンスの適合性を前記範囲限定演算子について不可能であるとみなし、それによって、前記決定データトンネル以外の組合せデータトンネルにおける、適合性不可能とみなされないエンティティインスタンスにかかわる組合せデータセルだけが、前記それぞれの範囲限定演算子および前記範囲限定演算子のそれぞれのオペランドへのそれぞれのエンティティインスタンスの適合性を判定する目的で検査されさえすればよいステップと
を含む、請求項７に記載のデータ記憶および／または検索システム。
【請求項９】
エンティティ型ごとの複数の特性データトンネルと、属性ごとの固定された複数の特性データトンネルとを備え、前記特性データトンネルのうちの１つまたは複数が複数のデータセルを備える記憶媒体であり、
前記特性データセルのそれぞれが、エンティティ型のそれぞれのインスタンスについての属性のそれぞれのインスタンスと関連付けられたデータを含み、
属性のそれぞれのインスタンスが、すべてのそれぞれの特性データトンネルにおいて１つのそれぞれの特性データセルを有し、
前記特性データトンネルのうちの１つまたは複数について、前記特性データトンネルのうちの１つまたは複数における前記特性データセルが、属性のそれぞれのインスタンスが１つまたは複数のオペランドの所与の集合についてプロパティを所有する可能性または不可能性を指示するブール値の結果にそれぞれの所有演算子が評価するためのデータを有する
前記記憶媒体と、
前記記憶媒体と通信結合状態にあり、前記所有演算子のうちの１つまたは複数および１つまたは複数のオペランドの所与の集合に基づいて１つまたは複数の特性データトンネルにアクセスする記憶エンジンと
を備える、請求項１、４５、７５、７６、７７、７９、および８１のいずれかに記載のデータ記憶および／または検索システム。
【請求項１０】
各特性データトンネルが１つまたは複数のプロパティにかかわり、
特性データセルが、前記属性の前記それぞれのインスタンスによるそれぞれのプロパティの所有のブール値の指示を含む、
請求項９に記載のデータ記憶および／または検索システム。
【請求項１１】
特性トンネルが、プロパティ識別情報をハッシュ符号化し、前記ハッシュ符号化に複数の特性データトンネルの数のモジュロを適用することによってプロパティにかかわるように選択される、請求項１０に記載のデータ記憶および／または検索システム。
【請求項１２】
特性トンネルが、厳密に単調に増加する序数を各一意のプロパティ識別情報に割り当て、前記序数に複数の特性データトンネルの数のモジュロを適用することによってプロパティにかかわるように選択され、それによって、前記所有演算子が、（Ｍ−Ｔ）＜Ｐ＜２Ｔである場合に所有を確実視することができ、式中、Ｐは前記プロパティの前記序数であり、Ｍは割り当てられる最大序数であり、Ｔは特性トンネルの前記数である、請求項１０に記載のデータ記憶および／または検索システム。
【請求項１３】
特性トンネルが、厳密に単調に増加する序数を前記それぞれの属性について各一意のプロパティ識別情報に割り当て、複数の特性データトンネルの数のモジュロを前記序数に適用することによってプロパティにかかわるように選択され、それによって、前記所有演算子が、（Ｍ−Ｔ）＜Ｐ＜２Ｔである場合に所有を確実視することができ、式中、Ｐは前記プロパティの前記序数であり、Ｍは前記それぞれの属性について割り当てられる最大序数であり、Ｔは特性トンネルの前記数である、請求項１０に記載のデータ記憶および／または検索システム。
【請求項１４】
エンティティ型ごとの複数の集合データトンネルを備え、前記集合データトンネルのうちの１つまたは複数が複数の集合データセルを備える記憶媒体であり、
各集合データトンネルが、エンティティ型のそれぞれのインスタンスと関連付けられたデータを含み、
前記集合データセルのそれぞれが、エンティティ型のそれぞれのインスタンスについての属性のそれぞれのインスタンスと関連付けられたデータを含み、
前記集合データセルのそれぞれが、識別情報、測定、列挙または不透明度のうちの１つとして特徴付けられるデータを含む
前記記憶媒体
を備える、請求項１、４５、７５、７６、７７、７９、および８１のいずれかに記載のデータ記憶および／または検索システム。
【請求項１５】
識別情報の１つとして特徴付けられる集合データセルが、前記それぞれの属性の前記それぞれのインスタンスについての識別情報の等価性の確実性が同様の並び順のビットの比較によって決定され得るように、前記識別情報を表す前記ビットのシーケンスを含む、請求項１４に記載のデータ記憶および／または検索。
【請求項１６】
測定の１つとして特徴付けられる集合データセルが、ある範囲によって境界が定められる前記それぞれの属性のそれぞれのインスタンスの確実性が、それぞれの符号ビット、有効数字部ビットおよび指数ビットの比較によって決定され得るように、前記符号ビット、複数の前記有効数字部ビットおよび複数の前記指数ビットを含む、請求項１４に記載のデータ記憶および／または検索システム。
【請求項１７】
列挙の１つとして特徴付けられる集合データセルが、前記それぞれの属性の前記それぞれのインスタンスによるプロパティの所有の確実性が、１つまたは複数のそれぞれのプロパティについての同様の並び順のビットの比較によって決定され得るように、各プロパティが前記ビットのシーケンスからなる複数のプロパティを含む、請求項１４に記載のデータ記憶および／または検索システム。
【請求項１８】
各データトンネルが、記憶への書込みアクセスの間に個別に暗号化され、記憶からの読取りアクセスの間に個別に解読される、請求項１４に記載のデータ記憶および／または検索システム。
【請求項１９】
各データセルが、記憶への書込みアクセスの間に個別に暗号化され、記憶からの読取りアクセスの間に個別に解読される、請求項１４に記載のデータ記憶および／または検索システム。
【請求項２０】
１つまたは複数のトンネルの特定の集合が、問合せ（クエリ）を構成する前記演算子および前記演算子のそれぞれのオペランドごとにアクセスされる、請求項１、１４、４５、７５、７６、７７、７９および８１のいずれかに記載のデータ記憶および／または検索システム。
【請求項２１】
１つまたは複数のデータトンネルが、前記各演算子および前記各演算子のオペランドの前記評価のために、独立して、同時にアクセスされる、請求項２０に記載のデータ記憶および／または検索システム。
【請求項２２】
各演算子評価が、可能性が高いとみなされるそれぞれのインスタンスについての確実性または不確実性のブール値の指示を含む、請求項２０に記載のデータ記憶および／または検索システム。
【請求項２３】
演算子評価が、いくつかの不確実なそれぞれのエンティティインスタンスが演算子評価から退けられ得るように、共通のそれぞれのエンティティ型について論理積的に組み合わされる、請求項２２に記載のデータ記憶および／または検索システム。
【請求項２４】
演算子評価の後の具体化が、不確実とみなされる属性の前記それぞれのインスタンスについての前記それぞれの集合データセルを検査することによって不確実性を解決することができる、請求項２２に記載のデータ記憶および／または検索システム。
【請求項２５】
データトンネルが、前記各演算子および前各記演算子のそれぞれのオペランドの前記評価のために、記憶媒体から一括して読取りアクセスされる、請求項２０に記載のデータ記憶および／または検索システム。
【請求項２６】
互いに異なる属性が、対応するデータトンネルにおける前記属性のそれぞれのデータセルの比較による前記属性のそれぞれのインスタンスの等価性によって相互に関連付けられ得る、請求項１、４５、７５、７６、７７、７９、および８１のいずれかに記載のデータ記憶および／または検索システム。
【請求項２７】
互いに異なる属性が、対応する連結データトンネルにおける前記属性のそれぞれの連結データセルの比較による前記属性のそれぞれのインスタンスの等価性によって相互に関連付けられ得る、請求項１、４５、７５、７６、７７、７９、および８１のいずれかに記載のデータ記憶および／または検索システム。
【請求項２８】
複数のデータトンネルおよびそれぞれの演算子が、任意の構造のエンティティのインスタンスに関連する、請求項１、４５、７５、７６、７７、７９、および８１のいずれかに記載のデータ記憶および／または検索システム。
【請求項２９】
複数の連結データトンネルおよびそれぞれの演算子が、任意の構造のエンティティのインスタンスに関連する、請求項２８に記載のデータ記憶および／または検索システム。
【請求項３０】
複数の組合せデータトンネルおよびそれぞれの演算子が、任意の構造のエンティティのインスタンスに関連する、請求項２８に記載のデータ記憶および／または検索システム。
【請求項３１】
複数の特性データトンネルおよびそれぞれの演算子が、任意の構造のエンティティのインスタンスに関連する、請求項２８に記載のデータ記憶および／または検索システム。
【請求項３２】
複数のデータトンネルおよびそれぞれの演算子が、エンティティ型の互いに異なるインスタンスが構造を異にする前記エンティティ型のインスタンスに関連する、請求項２８に記載のデータ記憶および／または検索システム。
【請求項３３】
複数の連結データトンネルおよびそれぞれの演算子が、エンティティ型の互いに異なるインスタンスが構造を異にする前記エンティティ型のインスタンスに関連する、請求項３２に記載のデータ記憶および／または検索システム。
【請求項３４】
複数の組合せデータトンネルおよびそれぞれの演算子が、エンティティ型の互いに異なるインスタンスが構造を異にする前記エンティティ型のインスタンスに関連する、請求項３２に記載のデータ記憶および／または検索システム。
【請求項３５】
複数の特性データトンネルおよびそれぞれの演算子が、エンティティ型の互いに異なるインスタンスが構造を異にする前記エンティティ型のインスタンスに関連する、請求項３２に記載のデータ記憶および／または検索システム。
【請求項３６】
データセルが、前記それぞれの属性についての領域および符号化から独立したデータからなり、それによって、前記属性の互いに異なるインスタンスが領域または符号化を異にし得る、請求項１、４５、７５、７６、７７、７９、および８１のいずれかに記載のデータ記憶および／または検索システム。
【請求項３７】
連結データセルが、前記それぞれの属性についての領域および符号化から独立したデータからなり、それによって、前記属性の互いに異なるインスタンスが領域または符号化を異にし得る、請求項３６に記載のデータ記憶および／または検索システム。
【請求項３８】
組合せデータセルが、前記それぞれの属性についての領域および符号化から独立したデータからなり、それによって、前記属性の互いに異なるインスタンスが領域または符号化を異にし得る、請求項３６に記載のデータ記憶および／または検索システム。
【請求項３９】
特性データセルが、前記それぞれの属性についての領域および符号化から独立したデータからなり、それによって、前記属性の互いに異なるインスタンスが領域または符号化を異にし得る、請求項３６に記載のデータ記憶および／または検索システム。
【請求項４０】
データベーススキーマからそれぞれの属性に適用可能な前記演算子およびそれぞれのデータトンネルを識別するためのさらなる改善が、
前記属性のインスタンスについてのデータが前記属性にかかわる連結データトンネル内の連結データセルに記憶されるように、前記属性についての関係制約条件から等価演算子の適用可能性を識別するステップと、
前記属性のインスタンスについてのデータが前記属性にかかわる組合せデータトンネル内の組合せデータセルに記憶されるように、前記属性についての数値もしくは時間領域または算術領域の制約条件から範囲限定演算子の適用可能性を識別するステップと、
前記属性のインスタンスについてのデータが前記属性にかかわる特性データトンネル内の特性データセルに記憶されるように、前記属性についての特性領域または列挙領域の制約条件から所有演算子の適用可能性を識別するステップと、
前記属性のインスタンスについてのデータが前記属性にかかわる任意の連結データトンネル、組合せデータトンネルまたは特性データトンネルに記憶されないように、前記属性についてのオブジェクトもしくはバイナリ領域または外部参照から前記演算子の適用不可能性を識別するステップと
を含む、請求項１、４５、７５、７６、７７、７９、および８１のいずれかに記載のデータ記憶および／または検索システム。
【請求項４１】
関係データベーススキーマからそれぞれの属性に適用可能な前記演算子およびそれぞれのデータトンネルを識別するためのさらなる改善が、
前記属性のインスタンスについてのデータが前記属性にかかわる連結データトンネル内の連結データセルに記憶されるように、前記属性についての主キーおよび外部キーの制約条件から等価演算子の適用可能性を識別するステップと、
前記属性のインスタンスについてのデータが前記属性にかかわる組合せデータトンネル内の組合せデータセルに記憶されるように、前記属性についての数値もしくは時間領域または算術検査の制約条件から範囲限定演算子の適用可能性を識別するステップと、
前記属性のインスタンスについてのデータが前記属性にかかわる特性データトンネル内の特性データセルに記憶されるように、前記属性の特性領域または列挙検査の制約条件から所有演算子の適用可能性を識別するステップと、
前記属性のインスタンスについてのデータが前記属性にかかわる任意の連結データトンネル、組合せデータトンネルまたは特性データトンネルに記憶されないように、前記属性についての大きなオブジェクト領域または外部参照から前記演算子の適用不可能性を識別するステップと
を含む、請求項４０に記載のデータ記憶および／または検索システム。
【請求項４２】
問合せ結果の具体化を目的としてデータトンネルにアクセスするためのさらなる改善が、
問合せ式をリファクタリングして演算子および前記演算子のそれぞれのオペランドの論理和正規形式を生成するステップと、
前記演算子の結果が同じ論理積項内の１つまたは複数の他の演算子によって含意される場合に、前記論理和正規形式の各論理積項から各演算子およびそれぞれのオペランドを除去するステップと、
前記論理積項が常に偽であるとみなされる演算子およびそれぞれのオペランドを含む場合に、前記論理和正規形式から各論理積項を除去するステップと、
前記論理和正規形式の各演算子が単一のエンティティ型にかかわる場合に、前記演算子を評価して、コンピュータメモリに記憶するために、前記演算子ごとに独立して、同時に、前記演算子ごとのエンティティインスタンスの別々の関連集合を生成するステップと、
エンティティインスタンスの前記関連集合が共通のエンティティ型にかかわる場合に、前記エンティティについてのあらゆる前記集合に対応しない前記集合のメンバが廃棄されるようにエンティティインスタンスの前記関連集合を縮小して、コンピュータメモリに記憶するために、前記論理和正規形の各論理積項内のそれぞれのエンティティ型ごとに独立して、同時に、前記エンティティ型についてのエンティティインスタンスの共通集合を生成するステップと、
シーケンス内の演算子をバインドすることによって対にされた前記エンティティ型についての前記エンティティインスタンスの共通集合を相互に関連付けて、コンピュータメモリに記憶するために、前記論理積項ごとに独立して、同時に、それぞれのエンティティ型ごとのエンティティインスタンスの相関集合を生成するステップと、
エンティティインスタンスの各前記相関集合にかかわるデータトンネルにアクセスして、コンピュータメモリに記憶するために、前記論理積項ごとに独立して、同時に、それぞれのエンティティ型ごとに独立して、別々に、問合せ結果インスタンスの集合を生成するステップと、
問合せ結果インスタンスが前記それぞれの論理積項と競合する場合に、コンピュータメモリに記憶するために、前記論理積項ごとに独立して、同時に、問合せ結果インスタンスをボイドとマークするステップと、
コンピュータメモリに記憶するために、各前記集合からのそれぞれの問合せ結果インスタンスが組み合わされて問合せ結果インスタンスの単一の集合になるように、前記論理積項ごとに問合せ結果インスタンスの前記集合をマージするステップと
を含む、請求項１、１４、４５、７５、７６、７７、７９、および８１のいずれかに記載のデータ記憶および／または検索システム。
【請求項４３】
エンティティインスタンスの相関集合を生成する目的で前記論理積項内のエンティティインスタンスの前記共通集合を相互に関連付けるためのさらなる改善が、
メモリに記憶するために、バインド演算子の定義済みの訪問順序における相互対応バインド演算子にまたがるエンティティインスタンスの共通集合の対を相互に関連付けるステップと、
メモリに記憶するために、エンティティインスタンスのそれぞれの相関集合内のエンティティインスタンスの濃度を前記訪問順序と逆の順に更新するステップと
を含む、請求項４２に記載のデータ記憶および／または検索システム。
【請求項４４】
前記論理積項を伴う前記バインド演算子の前記訪問順序を決定するためのさらなる改善が、
前記論理積項内の最小数のそれぞれのエンティティインスタンスを有するエンティティインスタンスの共通集合を、エンティティインスタンスの原始集合として選択するステップと、
エンティティインスタンスの前記原始集合に対応する前記バインド演算子の１つを、前記訪問順序における最初のバインド演算子として選択するステップと、
前記訪問順序において出現していない、または前記訪問順序においてすでに出現しているが、その後に訪問されたバインド演算子の影響を受けている、エンティティインスタンスの同じ共通集合に対応するバインド演算子の中からの後続のバインド演算子を、最後に訪問されたバインド演算子として選択するステップと、
エンティティインスタンスの相関集合が、コンピュータメモリに記憶するために前記訪問順序において生成されるように、次のバインド演算子が選択に利用できなくなるまで先のステップを繰り返すステップと
を含む、請求項４３に記載のデータ記憶および／または検索システム。
【請求項４５】
１つまたは複数のディジタルデータ処理システム上で実施されるデータ記憶および／または検索システムであって、
それぞれのデータベーストランザクションにおけるデータベース演算によって操作されるエンティティ型のインスタンスごとに複数のデータセグメントを備える記憶媒体であり、
すべてのデータセグメントが、任意のサイズの連続したデータヒープ内で維持され、
すべての新しいデータセグメントが前記データヒープに追加され、任意の順に、それぞれのトランザクションおよびそれぞれのエンティティインスタンスに割り当てられる
前記記憶媒体と、
前記記憶媒体と通信結合状態にあり、前記トランザクションのいずれか１つが前記トランザクションの状態をコミットするときに、最小限の数の記憶書込み演算において前記データヒープを記憶媒体に書き込む記憶エンジンと
を備えるデータ記憶および／または検索システム。
【請求項４６】
前記データヒープ内のすべての前記データセグメントが最小限の記憶書込み要求で記憶に書き込まれるように記憶書込み演算が行われる、請求項１、４５、７５、７６、７７、７９、および８１のいずれかに記載のデータ記憶および／または検索システム。
【請求項４７】
トランザクションの状態をコミットする前記トランザクションが、前記データヒープについての次の記憶書込み演算が正常に完了するまで前記コミットを完了することができないように、前記データヒープについての記憶書込み演算が事前定義済みの一定の間隔でのみ行われる、請求項１、４５、７５、７６、７７、７９、および８１のいずれかに記載のデータ記憶および／または検索システム。
【請求項４８】
エンティティ型のインスタンスが、前記それぞれのインスタンスの反転を追加することによって論理的に削除され、
前記反転が、すべてのそれぞれの連結データトンネル、組合せデータトンネルおよび特性データトンネルにおいて前記それぞれのインスタンスと同一のように見え、
エンティティ型ごとの単一の反転データトンネルが、前記エンティティ型のそれぞれのインスタンスの反転を表す複数のデータセルを含む、
請求項１、４５、７５、７６、７７、７９、および８１のいずれかに記載のデータ記憶および／または検索システム。
【請求項４９】
データトンネルおよびデータヒープへの追加アクセスが時系列順に行われ、
データトンネルおよびデータヒープへの読取りアクセスが逆時系列順に行われ、
読取りアクセスが、反転を累積し、対応するエンティティインスタンスに遭遇する際に前記対応するエンティティインスタンスを割り引くことによってエンティティインスタンス反転を解決する、
請求項４８に記載のデータ記憶および／または検索システム。
【請求項５０】
少なくとも１つの前記トンネルの複数の前記セルが、前記セルのそれぞれのエンティティインスタンスの共通の特性に基づいてフレームにおいてグループ化される、請求項１、４５、７５、７６、７７、７９、および８１のいずれかに記載のデータ記憶および／または検索システム。
【請求項５１】
少なくとも１つの前記トンネルの複数の前記セルが、すべてのトンネルにまたがるセルが共通のフレーム境界を守るように、前記それぞれのエンティティインスタンスの共通の特性に基づいてフレームにおいてグループ化される、請求項５０に記載のデータ記憶および／または検索システム。
【請求項５２】
前記共通の特性が期間である、請求項５１に記載のデータ記憶および／または検索システム。
【請求項５３】
前記記憶エンジンに結合されており、保持されるデータの経過時間に関して前記記憶媒体におけるセルの保持を管理するデータベースエンジンを備える、請求項５２に記載のデータ記憶および／または検索システム。
【請求項５４】
前記記憶エンジンに結合されており、問合せ内で表現される時間閾値に関して前記問合せの間に読取りアクセスからフレームを除くデータベースエンジンを備える、請求項５２に記載のデータ記憶および／または検索システム。
【請求項５５】
前記共通の特性がそれぞれのエンティティインスタンスのボリュームである、請求項５１に記載のデータ記憶および／または検索システム。
【請求項５６】
前記記憶エンジンに結合されており、保持されるデータのボリュームに関して前記記憶媒体におけるセルの保持を管理するデータベースエンジンを備える、請求項５５に記載のデータ記憶および／または検索システム。
【請求項５７】
複数のフレームにかかわる複数のデータトンネルにかかわる複数のデータセルが、複数の論理記憶システムファイルの単一の論理記憶システムファイル内に累積される、請求項５１に記載のデータ記憶および／または検索システム。
【請求項５８】
前記記憶エンジンに結合されており、前記記憶媒体におけるセルの保持を管理するデータベースエンジンを備える、請求項５１に記載のデータ記憶および／または検索システム。
【請求項５９】
複数のフレーム内のそれぞれのセルの共通の特徴付けが、複数のフレーム間隔にまたがり、複数のフレーム間隔サイズにまたがって維持され、それによって、複数のフレームおよびそれぞれのデータセルがそれぞれの演算子および前記演算子のオペランドによる考慮対象から除かれ得る、請求項５０に記載のデータ記憶および／または検索システム。
【請求項６０】
複数のフレーム内のデータセルについての属性のすべてのそれぞれのインスタンスに共通の複数のビットシーケンスが、複数のフレーム間隔にまたがり、複数のフレーム間隔サイズにまたがって維持され、それによって、複数のフレームおよびそれぞれのデータセルが、それぞれの等価演算子および前記等価演算子のオペランドによる考慮対象から除かれ得る、請求項５９に記載のデータ記憶および／または検索システム。
【請求項６１】
複数のフレーム内のデータセルについての属性のすべてのそれぞれのインスタンスに共通の境界が、複数のフレーム間隔にまたがり、複数のフレーム間隔サイズにまたがって維持され、それによって、複数のフレームおよびそれぞれのデータセルが、それぞれの範囲限定演算子および前記範囲限定演算子のオペランドによる考慮対象から除かれ得る、請求項５９に記載のデータ記憶および／または検索システム。
【請求項６２】
複数のフレーム内のデータセルについての属性のすべてのそれぞれのインスタンスに共通のプロパティが、複数のフレーム間隔にまたがり、複数のフレーム間隔サイズにまたがって維持され、それによって、複数のフレームおよびそれぞれのデータセルが、それぞれの所有演算子および前記所有演算子のオペランドによる考慮対象から除かれ得る、請求項５９に記載のデータ記憶および／または検索システム。
【請求項６３】
複数の前記データセグメントが、前記データセグメントのそれぞれのエンティティインスタンスの共通の特性に基づいてフレームにおいてグループ化される、請求項１、４５、７５、７６、７７、７９、および８１のいずれかに記載のデータ記憶および／または検索システム。
【請求項６４】
前記共通の特性が期間である、請求項６３に記載のデータ記憶および／または検索システム。
【請求項６５】
前記共通の特性がそれぞれのエンティティインスタンスのボリュームである、請求項６３に記載のデータ記憶および／または検索システム。
【請求項６６】
完全なフレームを備えるデータセグメントに含まれるそれぞれのエンティティのインスタンスについてそれぞれのデータトンネルにデータセルを追加する記憶エンジンを備える、請求項６３に記載のデータ記憶および／または検索システム。
【請求項６７】
各フレームが完全になるときに、完全なフレームを備えるデータセグメントに含まれるそれぞれのエンティティのインスタンスについてそれぞれのデータトンネルにデータセルを追加する記憶エンジンを備える、請求項６６に記載のデータ記憶および／または検索システム。
【請求項６８】
前記複数のフレームが完全になるときに、複数の完全なフレームを備えるデータセグメントに含まれるそれぞれのエンティティのインスタンスについてそれぞれのデータトンネルにデータセルを追加する記憶エンジンを備える、請求項６６に記載のデータ記憶および／または検索システム。
【請求項６９】
前記記憶システムの問合せアクセスの間の重複エンティティインスタンスの解決のためのさらなる改善が、
請求項６３に記載のデータ記憶システムの前記フレームを、請求項５０に記載のデータ記憶システムに使用されるフレームと全く同じやり方で割り当てるステップと、
前記問合せアクセスの間に、請求項５０に記載のデータ記憶システムの前記フレームにアクセスするのに先立ち、請求項６３に記載のデータ記憶システムの前記フレームにアクセスするステップと、
前記問合せアクセスの結果に影響を及ぼさずに前記エンティティインスタンスの存続を保証するために、各エンティティインスタンスを、請求項６３に記載のデータ記憶システムと請求項５０に記載のデータ記憶システムとにおいて同時に存続させることができるように、前記問合せアクセスの間に、請求項６３に記載のデータ記憶システムにおいてアクセスされた前記フレームに対応する請求項５０に記載のデータ記憶システムにおける前記フレームを割り引くステップと
を含む、請求項６６に記載のデータ記憶および／または検索システム。
【請求項７０】
それぞれのエンティティ型およびそれぞれの属性の完全な定義が、前記定義が変更される度に、一意のバージョン識別情報によって識別される別個の記憶システムファイル内に記憶される、請求項１、１４、４５、７５、７６、７７、７９、および８１のいずれかに記載のデータ記憶および／または検索システム。
【請求項７１】
各別個のエンティティ型定義に、単一の単調に増加する序数シーケンスから一意の序数識別情報が割り当てられる、請求項７０に記載のデータ記憶および／または検索システム。
【請求項７２】
各別個の属性定義に、前記それぞれのエンティティ型について単調に増加する序数シーケンスから一意の序数識別情報が割り当てられる、請求項７０に記載のデータ記憶および／または検索システム。
【請求項７３】
各完全な定義に、単一の単調に増加するバージョン番号シーケンスから一意のバージョン識別情報が割り当てられる、請求項７０に記載のデータ記憶および／または検索システム。
【請求項７４】
各完全な定義に、前記定義が作成される前記それぞれのフレームの識別情報が割り当てられる、請求項７０および／または請求項５０に記載のデータ記憶および／または検索システム。
【請求項７５】
エンティティ型ごとの複数の連結データトンネルと、属性ごとの固定された複数の連結データトンネルとを備え、前記連結データトンネルのうちの１つまたは複数が複数の連結データセルを備える記憶媒体であり、
前記連結データセルのそれぞれが、エンティティ型のそれぞれのインスタンスについての属性のそれぞれのインスタンスと関連付けられたデータを含み、
属性のそれぞれのインスタンスが、ただ１つのそれぞれの連結データトンネルにおいて１つのそれぞれの連結データセルを有し、
前記連結データトンネルのうちの１つまたは複数について、前記連結データトンネルのうちの１つまたは複数のそれぞれにおける前記連結データセルが、属性のそれぞれのインスタンスが１つまたは複数のオペランドの所与の集合について等価である可能性または不可能性を指示するブール値の結果にそれぞれの等価演算子が評価するためのデータを有する
前記記憶媒体と、
前記記憶媒体と通信結合状態にあり、前記等価演算子のうちの１つまたは複数および１つまたは複数のオペランドの所与の集合に基づいて１つまたは複数の連結データトンネルにアクセスする記憶エンジンと
を備えるデータ記憶および／または検索システム。
【請求項７６】
１つまたは複数のディジタルデータ処理システム上で実施されるデータ記憶および／または検索システムの方法であって、
エンティティ型ごとの複数のデータトンネルと、属性ごとの固定された複数のデータトンネルとを備え、前記データトンネルのうちの１つまたは複数が複数のデータセルを備える記憶媒体を提供するステップであり、
前記データセルのそれぞれが、エンティティ型のそれぞれのインスタンスについての属性のそれぞれのインスタンスと関連付けられたデータを含み、
前記データトンネルのうちの１つまたは複数について、前記データトンネルのうちの１つまたは複数のそれぞれにおける前記データセルが、属性のそれぞれのインスタンスが１つまたは複数のオペランドの所与の集合についてそれぞれの演算子によって特徴付けられる可能性または不可能性を指示するブール値の結果に前記演算子が評価するためのデータを有する
前記ステップと、
前記記憶媒体と通信結合状態にある記憶エンジンを用いて、前記演算子のうちの１つまたは複数および１つまたは複数のオペランドの所与の集合に基づいて１つまたは複数のデータトンネルにアクセスするステップと
を含む方法。
【請求項７７】
エンティティ型ごとの複数の連結データトンネルと、属性ごとの固定された複数の連結データトンネルとを備え、前記連結データトンネルのうちの１つまたは複数が複数の連結データセルを備える記憶媒体であり、
前記連結データセルのそれぞれが、エンティティ型のそれぞれのインスタンスについての属性のそれぞれのインスタンスと関連付けられたデータを含み、
前記連結データトンネルのうちの１つまたは複数について、前記連結データトンネルのうちの１つまたは複数のそれぞれにおける前記連結データセルが、属性のそれぞれのインスタンスが１つまたは複数のオペランドの所与の集合について等価である可能性または不可能性を指示するブール値の結果にそれぞれの等価演算子が評価するためのデータを有し、連結データセルの過半数が、１つまたは複数のオペランドの所与の集合について同様の結果をもたらす
前記記憶媒体と、
前記記憶媒体と通信結合状態にあり、前記等価演算子のうちの１つまたは複数および１つまたは複数のオペランドの所与の集合に基づいて１つまたは複数の連結データトンネルにアクセスする記憶エンジンと
を備えるデータ記憶および／または検索システム。
【請求項７８】
１つまたは複数のディジタルデータ処理システム上で実施されるデータ記憶および／または検索の方法であって、
エンティティ型ごとの複数の連結データトンネルと、属性ごとの固定された複数の連結データトンネルとを備え、前記連結データトンネルのうちの１つまたは複数が複数の連結データセルを備える記憶媒体を提供するステップであり、
前記連結データセルのそれぞれが、エンティティ型のそれぞれのインスタンスについての属性のそれぞれのインスタンスと関連付けられたデータを含み、
属性のそれぞれのインスタンスが、ただ１つのそれぞれの連結データトンネルにおいて１つのそれぞれの連結データセルを有し、
前記連結データトンネルのうちの１つまたは複数について、前記連結データトンネルのうちの１つまたは複数のそれぞれにおける前記連結データセルが、属性のそれぞれのインスタンスが１つまたは複数のオペランドの所与の集合について等価である可能性または不可能性を指示するブール値の結果にそれぞれの等価演算子が評価するためのデータを有する
前記ステップと、
前記記憶媒体と通信結合状態にある記憶エンジンを用いて、前記等価演算子のうちの１つまたは複数および１つまたは複数のオペランドの所与の集合に基づいて、１つまたは複数の連結データトンネルにアクセスするステップと
を含む方法。
【請求項７９】
エンティティ型ごとの複数の組合せデータトンネルと、属性ごとの固定された複数の組合せデータトンネルとを備え、前記データトンネルのうちの１つまたは複数が複数の組合せデータセルを備える記憶媒体であり、
前記組合せデータセルのそれぞれが、エンティティ型のそれぞれのインスタンスについての属性のそれぞれのインスタンスと関連付けられたデータを含み、
属性のそれぞれのインスタンスが、すべてのそれぞれの組合せデータトンネルにおいて１つのそれぞれの組合せデータセルを有し、
前記組合せデータトンネルのうちの１つまたは複数について、前記組合せデータトンネルのうちの１つまたは複数のそれぞれにおける前記組合せセルが、属性のそれぞれのインスタンスが１つまたは複数のオペランドの所与の集合について範囲を定められる可能性または不可能性を指示するブール値の結果にそれぞれの範囲限定演算子が評価するためのデータを有する
前記記憶媒体と、
前記記憶媒体と通信結合状態にあり、前記範囲限定演算子のうちの１つまたは複数および１つまたは複数のオペランドの所与の集合に基づいて１つまたは複数の組合せデータトンネルにアクセスする記憶エンジンと
を備える、データ記憶および／または検索システム。
【請求項８０】
１つまたは複数のディジタルデータ処理システム上で実施されるデータ記憶および／または検索の方法であって、
エンティティ型ごとの複数の組合せデータトンネルと、属性ごとの固定された複数の組合せデータトンネルとを備え、前記データトンネルのうちの１つまたは複数が複数の組合せデータセルを備える記憶媒体を提供するステップであり、
前記組合せデータセルのそれぞれが、エンティティ型のそれぞれのインスタンスについての属性のそれぞれのインスタンスと関連付けられたデータを含み、
属性のそれぞれのインスタンスが、すべてのそれぞれの組合せデータトンネルにおいて１つのそれぞれの組合せデータセルを有し、
前記組合せデータトンネルのうちの１つまたは複数について、前記組合せデータトンネルのうちの１つまたは複数のそれぞれにおける前記組合せセルが、属性のそれぞれのインスタンスが１つまたは複数のオペランドの所与の集合について範囲を定められる可能性または不可能性を指示するブール値の結果にそれぞれの範囲限定演算子が評価するためのデータを有する
前記ステップと、
前記記憶媒体と通信結合状態にある記憶エンジンを用いて、前記範囲限定演算子のうちの１つまたは複数および１つまたは複数のオペランドの所与の集合に基づいて、１つまたは複数の組合せデータトンネルにアクセスするステップと
を含む方法。
【請求項８１】
エンティティ型ごとの複数の特性データトンネルと、属性ごとの固定された複数の特性データトンネルとを備え、特性データトンネルのうちの１つまたは複数が複数のデータセルを備える記憶媒体を提供するステップであり、
前記特性データセルのそれぞれが、エンティティ型のそれぞれのインスタンスについての属性のそれぞれのインスタンスと関連付けられたデータを含み、
属性のそれぞれのインスタンスが、すべてのそれぞれの特性データトンネルにおいて１つのそれぞれの特性データセルを有し、
前記特性データトンネルのうちの１つまたは複数について、前記特性データトンネルのうちの１つまたは複数における前記特性データセルが、属性のそれぞれのインスタンスが１つまたは複数のオペランドの所与の集合についてプロパティを所有する可能性または不可能性を指示するブール値の結果にそれぞれの所有演算子が評価するためのデータを有する
前記ステップと、
前記記憶媒体と通信結合状態にある記憶エンジンを用いて、前記所有演算子のうちの１つまたは複数および１つまたは複数のオペランドの所与の集合に基づいて、１つまたは複数の特性データトンネルにアクセスするステップと
を備える、データ記憶および／または検索システム。
【請求項８２】
１つまたは複数のディジタルデータ処理システム上で実施されるデータ記憶および／または検索の方法であって、
エンティティ型ごとの複数の特性データトンネルと、属性ごとの固定された複数の特性データトンネルとを備え、特性データトンネルのうちの１つまたは複数が複数のデータセルを備える記憶媒体を提供するステップであり、
前記特性データセルのそれぞれが、エンティティ型のそれぞれのインスタンスについての属性のそれぞれのインスタンスと関連付けられたデータを含み
属性のそれぞれのインスタンスが、すべてのそれぞれの特性データトンネルにおいて１つのそれぞれの特性データセルを有し、
前記特性データトンネルのうちの１つまたは複数について、前記特性データトンネルのうちの１つまたは複数における前記特性データセルが、属性のそれぞれのインスタンスが１つまたは複数のオペランドの所与の集合についてプロパティを所有する可能性または不可能性を指示するブール値の結果にそれぞれの所有演算子が評価するためのデータを有する
前記ステップと、
前記記憶媒体と通信結合状態にある記憶エンジンを用いて、前記所有演算子のうちの１つまたは複数および１つまたは複数のオペランドの所与の集合に基づいて、１つまたは複数の特性データトンネルにアクセスするステップと
を含む方法。
【請求項８３】
データ記憶および／または検索の方法であって、
エンティティ型ごとの複数の集合データトンネルを備え、前記集合データトンネルのうちの１つまたは複数が複数の集合データセルを備える記憶媒体を提供するステップ
を含み、
各集合データトンネルが、エンティティ型のそれぞれのインスタンスと関連付けられたデータを含み、
前記集合データセルのそれぞれが、エンティティ型のそれぞれのインスタンスについての属性のそれぞれのインスタンスと関連付けられたデータを含み、
前記集合データセルのそれぞれが、識別情報、測定、列挙または不透明度のうちの１つとして特徴付けられるデータを含む
方法。
【請求項８４】
データ記憶および／または検索の方法であって、
エンティティ型ごとの複数の集合データトンネルを備え、前記集合データトンネルのうちの１つまたは複数が複数の集合データセルを備える記憶媒体を提供するステップ
を含み、
各集合データトンネルが、エンティティ型のそれぞれのインスタンスと関連付けられたデータを含み、
前記集合データセルのそれぞれが、エンティティ型のそれぞれのインスタンスについての属性のそれぞれのインスタンスと関連付けられたデータを含み、
前記集合データセルのそれぞれが、識別情報、測定、列挙または不透明度のうちの１つとして特徴付けられるデータを含む
方法。
【請求項８５】
前記連結データセルが、前記属性の前記それぞれのインスタンスのダイジェストを含み、
前記それぞれの連結データトンネルが、前記属性の前記それぞれのインスタンスの定義済みハッシュ符号化から、前記ハッシュ符号化に前記複数の連結データトンネルの数のモジュロを適用することによって選択される、請求項７６、７８、８０、８２〜８４のいずれかに記載の方法。
【請求項８６】
前記属性の前記それぞれのインスタンスのサイズが十分に小さいときに、前記それぞれのインスタンスの前記ダイジェストが前記それぞれのインスタンスの値自体であり、それによって前記等価演算子が等価を確実視することができる、請求項８５に記載の方法。
【請求項８７】
それぞれの属性の各インスタンスが、一元的な位取りで、固定小数点に対する有効数字部として表現され、
各組合せデータトンネルが前記有効数字部の部分に対応し、
すべての組合せデータトンネルが、前記有効数字部に関しては相互排他的であり、
すべての組合せデータトンネルが前記有効数字部の全体を囲む、
請求項７６、７８、８０、８２〜８４のいずれかに記載の方法。
【請求項８８】
前記記憶システムの前記属性の前記組合せトンネルの読取りアクセスの間の範囲限定演算子の評価のためのさらなる改善が
前記範囲限定演算子内のそれぞれの境界オペランドを、固定小数点を有する一元的な位取りの有効数字部に変換するステップと、
それぞれの境界オペランドの有効数字部ビットを有効桁の降順で比較して、前記オペランド間で異なる最初の有効数字部ビットを見つけ、すべての先行する共通ビットを決定データ値とみなすステップと、
前記決定値の有効数字の厳密な部分集合を含む最低有効数字の組合せデータトンネルを見つけ、前記組合せデータトンネルを決定データトンネルとみなすステップと、
前記属性にかかわる他の組合せデータトンネルの前にまず前記決定データトンネルにアクセスするステップと、
前記決定データトンネルのすべての組合せデータセルを検査し、前記組合せデータセルが前記決定データ値と等しくない場合に、それぞれのエンティティインスタンスの適合性を前記範囲限定演算子について不可能であるとみなし、それによって、前記決定データトンネル以外の組合せデータトンネルにおける、適合性不可能とみなされないエンティティインスタンスにかかわる組合せデータセルだけが、前記それぞれの範囲限定演算子および前記範囲限定演算子のそれぞれのオペランドへのそれぞれのエンティティインスタンスの適合性を判定する目的で検査されさえすればよいステップと
を含む、請求項８７に記載の方法。
【請求項８９】
各特性データトンネルが１つまたは複数のプロパティにかかわり、
特性データセルが、前記属性の前記それぞれのインスタンスによるそれぞれのプロパティの所有のブール値の指示を含む、
請求項７６、７８、８０、８２〜８４のいずれかに記載の方法。
【請求項９０】
特性トンネルが、プロパティ識別情報をハッシュ符号化し、前記ハッシュ符号化に複数の特性データトンネルの数のモジュロを適用することによってプロパティにかかわるように選択される、請求項８９に記載の方法。
【請求項９１】
特性トンネルが、厳密に単調に増加する序数を各一意のプロパティ識別情報に割り当て、前記序数に複数の特性データトンネルの数のモジュロを適用することによってプロパティにかかわるように選択され、それによって、前記所有演算子が、（Ｍ−Ｔ）＜Ｐ＜８３Ｔである場合に所有を確実視することができ、式中、Ｐは前記プロパティの前記序数であり、Ｍは割り当てられる最大序数であり、Ｔは特性トンネルの前記数である、請求項８９に記載の方法。
【請求項９２】
特性トンネルが、厳密に単調に増加する序数を前記それぞれの属性について各一意のプロパティ識別情報に割り当て、前記序数に複数の特性データトンネルの数のモジュロを適用することによってプロパティにかかわるように選択され、それによって、前記所有演算子が、（Ｍ−Ｔ）＜Ｐ＜８３Ｔである場合に所有を確実視することができ、式中、Ｐは前記プロパティの前記序数であり、Ｍは前記それぞれの属性について割り当てられる最大序数であり、Ｔは特性トンネルの前記数である、請求項８９に記載の方法。
【請求項９３】
識別情報の１つとして特徴付けられる集合データセルが、前記それぞれの属性の前記それぞれのインスタンスについての識別情報の等価性の確実性が同様の並び順のビットの比較によって決定され得るように、前記識別情報を表す前記ビットのシーケンスを含む、請求項７６、７８、８０、８２〜８４のいずれかに記載のデータ記憶および／または検索。
【請求項９４】
測定の１つとして特徴付けられる集合データセルが、ある範囲によって境界が定められる前記それぞれの属性のそれぞれのインスタンスの確実性が、それぞれの符号ビット、有効数字部ビットおよび指数ビットの比較によって決定され得るように、前記符号ビット、複数の前記有効数字部ビットおよび複数の前記指数ビットを含む、請求項９２に記載の方法。
【請求項９５】
列挙の１つとして特徴付けられる集合データセルが、前記それぞれの属性の前記それぞれのインスタンスによるプロパティの所有の確実性が、１つまたは複数のそれぞれのプロパティについての同様の並び順のビットの比較によって決定され得るように、各プロパティが前記ビットのシーケンスからなる複数のプロパティを含む、請求項９２に記載の方法。
【請求項９６】
各データトンネルが、記憶への書込みアクセスの間に個別に暗号化され、記憶からの読取りアクセスの間に個別に解読される、請求項９２に記載の方法。
【請求項９７】
各データセルが、記憶への書込みアクセスの間に個別に暗号化され、記憶からの読取りアクセスの間に個別に解読される、請求項９２に記載の方法。
【請求項９８】
１つまたは複数のトンネルの特定の集合が、問合せを構成する前記演算子および前記演算子のそれぞれのオペランドごとにアクセスされる、請求項７６、７８、８０、８２〜８４および／または請求項９２のいずれかに記載の方法。
【請求項９９】
１つまたは複数のデータトンネルが、各前記演算子および前記演算子のそれぞれのオペランドの評価のために、独立して、同時にアクセスされる、請求項９８に記載の方法。
【請求項１００】
各演算子評価が、可能性が高いとみなされるそれぞれのインスタンスについての確実性または不確実性のブール値の指示を含む、請求項９８に記載の方法。
【請求項１０１】
演算子評価が、いくつかの不確実なそれぞれのエンティティインスタンスが演算子評価から退けられ得るように、共通のそれぞれのエンティティ型について論理積的に組み合わされる、請求項１００に記載の方法。
【請求項１０２】
演算子評価の後の具体化が、不確実とみなされる属性の前記それぞれのインスタンスについて前記それぞれの集合データセルを検査することによって不確実性を解決することができる、請求項１００に記載の方法。
【請求項１０３】
データトンネルが、各前記演算子および前記演算子のそれぞれのオペランドの評価のために、記憶媒体から一括して読取りアクセスされる、請求項９８に記載の方法。
【請求項１０４】
互いに異なる属性が、対応するデータトンネルにおける前記属性のそれぞれのデータセルの比較により、前記属性のそれぞれのインスタンスの等価性によって相互に関連付けられ得る、請求項７６、７８、８０、８２〜８４のいずれかに記載の方法。
【請求項１０５】
互いに異なる属性が、対応する連結データトンネルにおける前記属性のそれぞれの連結データセルの比較により、前記属性のそれぞれのインスタンスの等価性によって相互に関連付けられ得る、請求項７６、７８、８０、８２〜８４のいずれかに記載の方法。
【請求項１０６】
複数のデータトンネルおよびそれぞれの演算子が、任意の構造のエンティティのインスタンスに関連する、請求項７６、７８、８０、８２〜８４のいずれかに記載の方法。
【請求項１０７】
複数の連結データトンネルおよびそれぞれの演算子が、任意の構造のエンティティのインスタンスに関連する、請求項１０６に記載の方法。
【請求項１０８】
複数の組合せデータトンネルおよびそれぞれの演算子が、任意の構造のエンティティのインスタンスに関連する、請求項１０６に記載の方法。
【請求項１０９】
複数の特性データトンネルおよびそれぞれの演算子が、任意の構造のエンティティのインスタンスに関連する、請求項１０６に記載の方法。
【請求項１１０】
複数のデータトンネルおよびそれぞれの演算子が、エンティティ型の互いに異なるインスタンスが構造を異にする前記エンティティ型のインスタンスに関連する、請求項１０６に記載の方法。
【請求項１１１】
複数の連結データトンネルおよびそれぞれの演算子が、エンティティ型の互いに異なるインスタンスが構造を異にする前記エンティティ型のインスタンスに関連する、請求項１１０に記載の方法。
【請求項１１２】
複数の組合せデータトンネルおよびそれぞれの演算子が、エンティティ型の互いに異なるインスタンスが構造を異にする前記エンティティ型のインスタンスに関連する、請求項１１０に記載の方法。
【請求項１１３】
複数の特性データトンネルおよびそれぞれの演算子が、エンティティ型の互いに異なるインスタンスが構造を異にする前記エンティティ型のインスタンスに関連する、請求項１１０に記載の方法。
【請求項１１４】
データセルが、前記それぞれの属性についての領域および符号化から独立したデータからなり、それによって、前記属性の互いに異なるインスタンスが領域または符号化を異にし得る、請求項７６、７８、８０、８２〜８４のいずれかに記載の方法。
【請求項１１５】
連結データセルが、前記それぞれの属性についての領域および符号化から独立したデータからなり、それによって、前記属性の互いに異なるインスタンスが領域または符号化を異にし得る、請求項１１４に記載の方法。
【請求項１１６】
組合せデータセルが、前記それぞれの属性についての領域および符号化から独立したデータからなり、それによって、前記属性の互いに異なるインスタンスが領域または符号化を異にし得る、請求項１１４に記載の方法。
【請求項１１７】
特性データセルが、前記それぞれの属性についての領域および符号化から独立したデータからなり、それによって、前記属性の互いに異なるインスタンスが領域または符号化を異にし得る、請求項１１４に記載の方法。
【請求項１１８】
データベーススキーマからそれぞれの属性に適用可能な前記演算子およびそれぞれのデータトンネルを識別するためのさらなる改善が、
前記属性のインスタンスについてのデータが前記属性にかかわる連結データトンネル内の連結データセルに記憶されるように、前記属性についての関係制約条件から等価演算子の適用可能性を識別するステップと、
前記属性のインスタンスについてのデータが前記属性にかかわる組合せデータトンネル内の組合せデータセルに記憶されるように、前記属性についての数値もしくは時間領域または算術領域の制約条件から範囲限定演算子の適用可能性を識別するステップと、
前記属性のインスタンスについてのデータが前記属性にかかわる特性データトンネル内の特性データセルに記憶されるように、前記属性についての特性領域または列挙領域の制約条件から所有演算子の適用可能性を識別するステップと、
前記属性のインスタンスについてのデータが前記属性にかかわる任意の連結データトンネル、組合せデータトンネルまたは特性データトンネルに記憶されないように、前記属性についてのオブジェクトもしくはバイナリ領域または外部参照から前記演算子の適用不可能性を識別するステップと
を含む、請求項７６、７８、８０、８２〜８４のいずれかに記載の方法。
【請求項１１９】
関係データベーススキーマからそれぞれの属性に適用可能な前記演算子およびそれぞれのデータトンネルを識別するためのさらなる改善が、
前記属性のインスタンスについてのデータが前記属性にかかわる連結データトンネル内の連結データセルに記憶されるように、前記属性についての主キーおよび外部キーの制約条件から等価演算子の適用可能性を識別するステップと、
前記属性のインスタンスについてのデータが前記属性にかかわる組合せデータトンネル内の組合せデータセルに記憶されるように、前記属性についての数値もしくは時間領域または算術検査の制約条件から範囲限定演算子の適用可能性を識別するステップと、
前記属性のインスタンスについてのデータが前記属性にかかわる特性データトンネル内の特性データセルに記憶されるように、前記属性の特性領域または列挙検査の制約条件から所有演算子の適用可能性を識別するステップと、
前記属性のインスタンスについてのデータが前記属性にかかわる任意の連結データトンネル、組合せデータトンネルまたは特性データトンネルに記憶されないように、前記属性についての大きなオブジェクト領域または外部参照から前記演算子の適用不可能性を識別するステップと
を含む、請求項１１８に記載の方法。
【請求項１２０】
問合せ結果の具体化を目的としてデータトンネルにアクセスするためのさらなる改善が、
問合せ式をリファクタリングして演算子および前記演算子のそれぞれのオペランドの論理和正規形式を生成するステップと、
前記演算子の結果が同じ論理積項内の１つまたは複数の他の演算子によって含意される場合に、前記論理和正規形式の各論理積項から各演算子およびそれぞれのオペランドを除去するステップと、
前記論理積項が常に偽であるとみなされる演算子およびそれぞれのオペランドを含む場合に、前記論理和正規形式から各論理積項を除去するステップと、
前記論理和正規形式の各演算子が単一のエンティティ型にかかわる場合に、前記演算子を評価して、コンピュータメモリに記憶するために、前記演算子ごとに独立して、同時に、前記演算子ごとのエンティティインスタンスの別々の関連集合を生成するステップと、
エンティティインスタンスの前記関連集合が共通のエンティティ型にかかわる場合に、前記エンティティについてのあらゆる前記集合に対応しない前記集合のメンバが廃棄されるように前記エンティティインスタンスの関連集合を縮小して、コンピュータメモリに記憶するために、前記論理和正規形の各論理積項内のそれぞれのエンティティ型ごとに独立して、同時に、前記エンティティ型についてのエンティティインスタンスの共通集合を生成するステップと、
シーケンス内の演算子をバインドすることによって対にされた前記エンティティ型についてのエンティティインスタンスの前記共通集合を相互に関連付けて、コンピュータメモリに記憶するために、前記論理積項ごとに独立して、同時に、それぞれのエンティティ型ごとのエンティティインスタンスの相関集合を生成するステップと、
エンティティインスタンスの各前記相関集合に対応するデータトンネルにアクセスして、コンピュータメモリに記憶するために、前記論理積項ごとに独立して、同時に、それぞれのエンティティ型ごとに独立して、別々に、問合せ結果インスタンスの集合を生成するステップと、
問合せ結果インスタンスが前記それぞれの論理積項と競合する場合に、コンピュータメモリに記憶するために、前記論理積項ごとに独立して、同時に、問合せ結果インスタンスをボイドとマークするステップと、
コンピュータメモリに記憶するために、各前記集合からのそれぞれの問合せ結果インスタンスが組み合わされて問合せ結果インスタンスの単一の集合になるように、前記論理積項ごとに問合せ結果インスタンスの前記集合をマージするステップと
を含む、請求項７６、７８、８０、８２〜８４および／または請求項９２のいずれかに記載の方法。
【請求項１２１】
エンティティインスタンスの相関集合を生成する目的で前記論理積項内のエンティティインスタンスの前記共通集合を相互に関連付けるためのさらなる改善が、
メモリに記憶するために、バインド演算子の定義済みの訪問順序における相互対応バインド演算子にまたがるエンティティインスタンスの共通集合の対を相互に関連付けるステップと、
メモリに記憶するために、エンティティインスタンスのそれぞれの相関集合内のエンティティインスタンスの濃度を前記訪問順序と逆の順に更新するステップと
を含む、請求項１２０に記載の方法。
【請求項１２２】
前記論理積項を伴う前記バインド演算子の前記訪問順序を決定するためのさらなる改善が、
前記論理積項内の最小数のそれぞれのエンティティインスタンスを有するエンティティインスタンスの共通集合を、エンティティインスタンスの原始集合として選択するステップと、
エンティティインスタンスの前記原始集合に対応する前記バインド演算子の１つを、前記訪問順序における最初のバインド演算子として選択するステップと、
前記訪問順序において出現していない、または前記訪問順序においてすでに出現しているが、その後に訪問されたバインド演算子の影響を受けている、エンティティインスタンスの同じ共通集合に対応するバインド演算子の中からの後続のバインド演算子を、最後に訪問されたバインド演算子として選択するステップと、
エンティティインスタンスの相関集合が、コンピュータメモリに記憶するために前記訪問順序において生成されるように、次のバインド演算子が選択に利用できなくなるまで先のステップを繰り返すステップと
を含む、請求項１２１に記載の方法。
【請求項１２３】
それぞれのデータベーストランザクションにおけるデータベース演算によって操作されるエンティティ型のインスタンスごとに複数のデータセグメントを備える記憶媒体であり、
すべてのデータセグメントが、任意のサイズの連続したデータヒープ内で維持され、
すべての新しいデータセグメントが前記データヒープに追加され、任意の順に、それぞれのトランザクションおよびそれぞれのエンティティインスタンスに割り当てられる
前記記憶媒体と、
前記記憶媒体と通信結合状態にあり、前記トランザクションのいずれか１つが前記トランザクションの状態をコミットするときに、最小限の数の記憶書込み演算において前記データヒープを記憶媒体に書き込む記憶エンジンと
を備える、１つまたは複数のディジタルデータ処理システム上で実施されるデータ記憶および／または検索の方法。
【請求項１２４】
前記データヒープ内のすべての前記データセグメントが最小限の記憶書込み要求で記憶に書き込まれるように記憶書込み演算が行われる、請求項１２３に記載の方法。
【請求項１２５】
トランザクションの状態をコミットする前記トランザクションが、前記データヒープについての次の記憶書込み演算が正常に完了するまで前記コミットを完了することができないように、前記データヒープについての記憶書込み演算が事前定義済みの一定の間隔でのみ行われる、請求項１２３に記載の方法。
【請求項１２６】
エンティティ型のインスタンスが、前記それぞれのインスタンスの反転を追加することによって論理的に削除され、
前記反転が、すべてのそれぞれの連結データトンネル、組合せデータトンネルおよび特性データトンネルにおいて前記それぞれのインスタンスと同一のように見え、
エンティティ型ごとの単一の反転データトンネルが、前記エンティティ型のそれぞれのインスタンスの反転を表す複数のデータセルを含む、
請求項７６、７８、８０、８２〜８４および／または請求項１２３のいずれかに記載の方法。
【請求項１２７】
データトンネルおよびデータヒープへの追加アクセスが時系列順に行われ、
データトンネルおよびデータヒープへの読取りアクセスが逆時系列順に行われ、
読取りアクセスが、反転を累積し、対応するエンティティインスタンスに遭遇する際に前記対応するエンティティインスタンスを割り引くことによってエンティティインスタンス反転を解決する、
請求項１２６に記載の方法。
【請求項１２８】
少なくとも１つの前記トンネルの複数の前記セルが、前記セルのそれぞれのエンティティインスタンスの共通の特性に基づいて、フレームにおいてグループ化される、請求項７６、７８、８０、８２〜８４のいずれかに記載のデータ記憶および／または検索の方法。
【請求項１２９】
少なくとも１つの前記トンネルの複数の前記セルが、すべてのトンネルにまたがるセルが共通のフレーム境界を守るように、前記それぞれのエンティティインスタンスの共通の特性に基づいてフレームにおいてグループ化される、請求項１２８に記載のデータ記憶および／または検索の方法。
【請求項１３０】
前記共通の特性が期間である、請求項１２９に記載のデータ記憶および／または検索の方法。
【請求項１３１】
前記記憶エンジンに結合されており、保持されるデータの経過時間に関して前記記憶媒体におけるセルの保持を管理するデータベースエンジンを備える、請求項１３０に記載のデータ記憶および／または検索の方法。
【請求項１３２】
前記記憶エンジンに結合されており、問合せ内で表現される時間閾値に関して前記問合せの間に読取りアクセスからフレームを除くデータベースエンジンを備える、請求項１３０に記載のデータ記憶および／または検索の方法。
【請求項１３３】
前記共通の特性がそれぞれのエンティティインスタンスのボリュームである、請求項１２９に記載のデータ記憶および／または検索の方法。
【請求項１３４】
前記記憶エンジンに結合されており、保持されるデータのボリュームに関して前記記憶媒体におけるセルの保持を管理するデータベースエンジンを備える、請求項１３３に記載のデータ記憶および／または検索の方法。
【請求項１３５】
複数のフレームにかかわる複数のデータトンネルにかかわる複数のデータセルが、複数の論理記憶システムファイルの単一の論理記憶システムファイル内に累積される、請求項１２９に記載のデータ記憶および／または検索の方法。
【請求項１３６】
前記記憶エンジンに結合されており、前記記憶媒体においてセルの保持を管理するデータベースエンジンを備える、請求項１２９に記載のデータ記憶および／または検索の方法。
【請求項１３７】
複数のフレーム内のそれぞれのセルの共通の特徴付けが、複数のフレーム間隔にまたがり、複数のフレーム間隔サイズにまたがって維持され、それによって、複数のフレームおよびそれぞれのデータセルが、それぞれの演算子および前記演算子のオペランドによる考慮対象から除かれ得る、請求項１２８に記載のデータ記憶および／または検索の方法。
【請求項１３８】
複数のフレーム内のデータセルについての属性のすべてのそれぞれのインスタンスに共通の複数のビットシーケンスが、複数のフレーム間隔にまたがり、複数のフレーム間隔サイズにまたがって維持され、それによって、複数のフレームおよびそれぞれのデータセルが、それぞれの等価演算子および前記等価演算子のオペランドによる考慮対象から除かれ得る、請求項１３７に記載のデータ記憶および／または検索の方法。
【請求項１３９】
複数のフレーム内のデータセルについての属性のすべてのそれぞれのインスタンスに共通の境界が、複数のフレーム間隔にまたがり、複数のフレーム間隔サイズにまたがって維持され、それによって、複数のフレームおよびそれぞれのデータセルが、それぞれの範囲限定演算子および前記範囲限定演算子のオペランドによる考慮対象から除かれ得る、請求項１３７に記載のデータ記憶および／または検索の方法。
【請求項１４０】
複数のフレーム内のデータセルについての属性のすべてのそれぞれのインスタンスに共通のプロパティが、複数のフレーム間隔にまたがり、複数のフレーム間隔サイズにまたがって維持され、それによって、複数のフレームおよびそれぞれのデータセルが、それぞれの所有演算子および前記所有演算子のオペランドによる考慮対象から除かれ得る、請求項１３７に記載のデータ記憶および／または検索の方法。
【請求項１４１】
複数の前記データセグメントが、前記データセグメントのそれぞれのエンティティインスタンスの共通の特性に基づいてフレームにおいてグループ化される、請求項１２３に記載のデータ記憶および／または検索の方法。
【請求項１４２】
前記共通の特性が期間である、請求項１４１に記載のデータ記憶および／または検索の方法。
【請求項１４３】
前記共通の特性がそれぞれのエンティティインスタンスのボリュームである、請求項１４１に記載のデータ記憶および／または検索の方法。
【請求項１４４】
完全なフレームを備えるデータセグメントに含まれるそれぞれのエンティティのインスタンスについてそれぞれのデータトンネルにデータセルを追加する記憶エンジンを備える、請求項１４１に記載のデータ記憶および／または検索の方法。
【請求項１４５】
各フレームが完全になるときに、完全なフレームを備えるデータセグメントに含まれるそれぞれのエンティティのインスタンスについてそれぞれのデータトンネルにデータセルを追加する記憶エンジンを備える、請求項１４４に記載のデータ記憶および／または検索の方法。
【請求項１４６】
前記複数のフレームが完全になるときに、複数の完全なフレームを備えるデータセグメントに含まれるそれぞれのエンティティのインスタンスについてそれぞれのデータトンネルにデータセルを追加する記憶エンジンを備える、請求項１４４に記載のデータ記憶および／または検索の方法。
【請求項１４７】
前記記憶システムの問合せアクセスの間の重複エンティティインスタンスの解決のためのさらなる改善が、
請求項１４１に記載のデータ記憶システムの前記フレームを、請求項１２８に記載のデータ記憶システムに使用されるフレームと全く同じやり方で割り当てるステップと、
前記問合せアクセスの間に、請求項１２８に記載のデータ記憶システムの前記フレームにアクセスするのに先立ち、請求項１４１に記載のデータ記憶システムの前記フレームにアクセスするステップと、
前記問合せアクセスの結果に影響を及ぼさずに前記エンティティインスタンスの存続を保証するために、各エンティティインスタンスを、請求項１４１に記載のデータ記憶システムと請求項１２８に記載のデータ記憶システムとにおいて同時に存続させることができるように、前記問合せアクセスの間に、請求項１４１に記載のデータ記憶システムにおいてアクセスされた前記フレームに対応する請求項１２８に記載のデータ記憶システムにおける前記フレームを割り引くステップと
を含む、請求項１４４に記載の方法。
【請求項１４８】
それぞれのエンティティ型およびそれぞれの属性の完全な定義が、前記定義が変更される度に、一意のバージョン識別情報によって識別される別個の記憶システムファイル内に記憶される、請求項７６、７８、８０、８２〜８４および／または請求項９２のいずれかに記載のデータ記憶および／または検索の方法。
【請求項１４９】
各別個のエンティティ型定義に、単一の単調に増加する序数シーケンスから一意の序数識別情報が割り当てられる、請求項１４８に記載のデータ記憶および／または検索の方法。
【請求項１５０】
各別個の属性定義に、それぞれのエンティティ型についての単調に増加する序数シーケンスから一意の序数識別情報が割り当てられる、請求項１４８に記載のデータ記憶および／または検索の方法。
【請求項１５１】
各完全な定義に、単一の単調に増加するバージョン番号シーケンスから一意のバージョン識別情報が割り当てられる、請求項１４８に記載のデータ記憶および／または検索の方法。
【請求項１５２】
各完全な定義に、前記定義が作成される前記それぞれのフレームの識別情報が割り当てられる、請求項１４８および／または請求項１２８に記載のデータ記憶および／または検索の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、その全内容が参照により本明細書に組み込まれる、２０１０年４月６日に出願された、米国仮特許出願第６１／３２１，３７４号の優先権の利益を主張するものである。
【０００２】
本発明はディジタルデータ処理に関し、より詳細には、データ記憶および検索のための装置、システムおよび方法に関する。本発明は、非限定的例としては、業務データベースおよび分析データベースの作成、更新およびアクセスに応用される。
【背景技術】
【０００３】
データベースは、データモデルと呼ばれるフレームワーク内にデータを記憶する。現在使用されているデータモデルには、中でも特に、ネットワークモデル、階層モデル、オブジェクトモデル、キー・バリューモデル、グラフモデル、ドキュメントモデル、および関係モデルが含まれる。関係モデルは、その使用において圧倒的に人気があり、広く普及している。
【０００４】
関係モデルは、データを、関係、または複数の行および列を含む表として見る。各関係は、従業員や部門といった特定の種類のエンティティに関する情報を記憶し、表内の各行は、表が関係するエンティティの１つのインスタンスに関する情報を記憶する。表内の各列は、エンティティについての属性であり、エンティティインスタンスに対応する各行における値を含む。表および列の定義の集合はデータベーススキーマと呼ばれる。
【０００５】
以下は、従業員、部門および地域についての表の例である。
【表１】
2013525881.tif 000003
【表２】
2013525881.tif 000004
【表３】
2013525881.tif 000005
【０００６】
ＳＱＬは、関係データベースと共に、データベーススキーマを定義するためと、それらのスキーマ内に記憶されたデータを操作するための両方に使用される言語である。上記の表の例を定義するためのＳＱＬステートメントは以下とすることができる。
ｃｒｅａｔｅ  ｔａｂｌｅ  Ｅｍｐｌｏｙｅｅｓ
（Ｎａｍｅ  ｖａｒｃｈａｒ（６４）ｎｏｔ  ｎｕｌｌ，
ＥｍｐｌｏｙｅｅＮｕｍｂｅｒ  ｎｕｍｂｅｒ  ｐｒｉｍａｒｙ  ｋｅｙ，
Ｓａｌａｒｙ  ｎｕｍｂｅｒ（８，２）ｎｏｔ  ｎｕｌｌ，
ＣｏｍｍｉｓｓｉｏｎＲａｔｅ  ｎｕｍｂｅｒ（４，２），
ＤｅｐａｒｔｍｅｎｔＮｕｍｂｅｒ  ｎｕｍｂｅｒ  ｒｅｆｅｒｅｎｃｅｓ  Ｄｅｐａｒｔｍｅｎｔｓ（ＤｅｐａｒｔｍｅｎｔＮｕｍｂｅｒ））；
ｃｒｅａｔｅ  ｔａｂｌｅ  Ｄｅｐａｒｔｍｅｎｔｓ
（Ｎａｍｅ  ｖａｒｃｈａｒ（６４）ｎｏｔ  ｎｕｌｌ，
ＤｅｐａｒｔｍｅｎｔＮｕｍｂｅｒ  ｎｕｍｂｅｒ  ｐｒｉｍａｒｙ  ｋｅｙ，
ＲｅｇｉｏｎＮｕｍｂｅｒ  ｎｕｍｂｅｒ  ｒｅｆｅｒｅｎｃｅｓ  Ｒｉｇｉｏｎｓ（ＲｅｇｉｏｎＮｕｍｂｅｒ））；
ｃｒｅａｔｅ  ｔａｂｌｅ  Ｒｉｇｉｏｎｓ
（Ｎａｍｅ  ｖａｒｃｈａｒ（６４）ｎｏｔ  ｎｕｌｌ，
ＲｅｇｉｏｎＮｕｍｂｅｒ  ｎｕｍｂｅｒ  ｐｒｉｍａｒｙ  ｋｅｙ）；
【０００７】
各従業員は、従業員を識別するのに使用される名前および一意の従業員番号を有する。また各従業員は給与および歩合制を有し、単一の部門によって雇われる。従業員についてのこれらの属性はそれぞれ、表内の別々の列に記憶されている。
【０００８】
同様に、各部門も名前および番号を有し、１つの地域に所在している。また各地域は、名前および各地域を識別する番号を有する。
【０００９】
よって、「Ｓｍｉｔｈ」という従業員は、「Ｅａｓｔ（東部）」地域にある「Ａｄｍｉｎｉｓｔｒａｔｉｏｎ（管理）」部門に属する。これは、各表に共通する部門番号および地域番号から識別される。これらの関係は、上記ＳＱＬステートメント中の「ｐｒｉｍａｒｙ  ｋｅｙ（主キー）」および「ｆｏｒｅｉｇｎ  ｋｅｙ（外部キー）」制約条件によって指示されている。
【００１０】
関係表は、典型的には、関係表内に含まれるデータの重複を除去するために正規化される。上記の例では、ある部門の情報が、当該部門に属するあらゆる従業員に対して複写されるように、データを単一の表に再編成することも可能なはずである。そのような重複は、記憶サイズと更新オーバーヘッドのどちらの観点から見ても準最適である。というのは、部門データのあらゆる項目が複数の位置において記憶され、更新されなければならないからである。正規化のプロセスは、重複データを有する列のグループを単一の行へ移動し、別個の表へ移動する。
【００１１】
関係データベースは、対応する結合列を有するすべての行が相互に関連付けられるように、別々の表からの行を共通の列値によって結合するための表結合の概念をサポートする。上記の例では、従業員表は部門表に、両表内の部門番号列によって結合されてもよい。正規化データは、非正規化データを再現するために問合せ（クエリ）時に結合を必要とする。
【００１２】
関係データベースは、多くの場合、２つの異なるやり方で、すなわち、業務データベースとして、または分析データベースとして使用される。業務（ＯＬＴＰ）データベースは、業務プロセストランザクションを記録し、管理する。ＯＬＴＰデータベースは、業務手順についての詳細で信頼性の高いレファレンスを提供する。業務システム内の各トランザクションは、いつでも、一握りのエンティティインスタンスに関与する可能性があるにすぎない。これに対して、分析（ＯＬＡＰ）データベースは、膨大なデータの全体に及ぶ幅広い分析を提供する。通常、分析システムによって保持されるデータは、分析問合せの実行を支援するために、業務システムほど詳細ではない。
【００１３】
関係データベースのコンテキストで考えると、業務トランザクションまたは業務問合せは、行の非常に小さい部分にわたる列の大きい部分に関与する可能性が高く、逆に、分析問合せは、行の非常に大きい部分における列の小さい部分に関与する可能性が高い。このことが、業務データベースを行方向に編成し（まる１行が一緒に記憶される）、分析データベースを列方向に編成する（まる１列が一緒に記憶される）という関係データベースの傾向につながっている。これらの手法では、記憶からの検索要求が最小限に保たれるように、予期されるアクセスパターンに従って記憶内のデータを同じ場所に配置しようと試みる。
【００１４】
従来の業務データベースおよび分析データベースは、典型的には、それぞれ、高度に正規化され、高度に非正規化される。業務データベースは、重複データの更新と関連付けられるオーバーヘッドを回避するために高度に正規化され、分析データベースは、多くの場合、問合せ時の結合のオーバーヘッドを回避するために非正規化される。この正規化の手法の違いは、異なる表定義が必要とされるために、データベーススキーマの違いを生じる。
【００１５】
したがって、従来の関係データベースは、予期されるのが業務的作業負荷かそれとも分析的作業負荷かに応じて、異なるやり方で編成される。行方向に記憶される高度に正規化されたスキーマは、分析問合せに行全体を処理し、広範囲にわたる結合処理を実行するよう強いるために、分析問合せについては準最適とみなされ、他方、列方向の高度に非正規化されたスキーマは、複数の記憶領域にまたがる個々の行の拡散と重複データ更新のオーバーヘッドのために、業務システムについては準最適とみなされる。
【００１６】
これまで説明した平坦な表構造（行と列）で可能なのは、行ストア内の全表、または列ストア内の全列をスキャンすることによって特定の列を含む行を見つけることだけである。非常に大きい集合では、このスキャンは、リソースと時間を浪費するプロセスになる。このプロセスを支援するために、平坦な表構造の上に索引を重ねて、列値による特定の行への高速ナビゲーションを可能にする。索引は多くの形を取り、中でも特に、Ｂ木（Ｂツリー）、ハッシング、ビットマップ、パーティショニングといった機構を含むことができる。しかし、使用される索引付けの形にかかわらず、索引付けは、事実上、問合せ時間の前の問合せ処理作業の一部を行うことになる。事実上索引付けは、問合せ処理のオーバーヘッドをデータ更新時間へ移動させる。これは、問合せアクティビティの量が、分析システムといった更新アクティビティの量よりもずっと大きい場合には妥当とされ得るが、これは業務システムには当てはまらず、定期的な更新を必要とする分析システムにさえも当てはまらない。
【００１７】
したがって、従来の業務データベースと分析データベースとは異なる設計を有し、単一の関係データベースは業務作業負荷または分析作業負荷を効率よくサポートすることができるが、通常は、両方の作業負荷を、同じデータベースインスタンス内で同時にサポートすることができない。このため、多くの場合、複数のデータベースインスタンスを使用して共通のデータ集合をサポートすることにつながり、各データベースは異なる作業負荷をサポートするように異なる設計を有する。これにより、統合およびデータ変換アクティビティ、データ可用性における待ち時間、ならびにさらに多くの資本支出および運用支出を伴う複雑さが生じる。
【００１８】
データベースアーキテクチャの性能を考慮するときには、データベースアーキテクチャが動作するハードウェアコンテキストを理解することが重要である。
【００１９】
現在のコンピュータアーキテクチャは、大きく異なる速度で動作するＣＰＵと、メモリと、記憶（ストレージ）構成要素とからなる。最新のＣＰＵは、サイズが限られているが、ほぼＣＰＵクロック速度近くで動作する１つまたは複数のＣＰＵキャッシュを含み、メインメモリは、典型的には、はるかに大容量であるが、高速メモリの製造コストが高いために、より低速で動作する。記憶は、典型的には、使用される技術が異なるために、数桁遅い速度で動作することになる。フラッシュ記憶でさえも、典型的には、メインメモリよりも２桁遅く動作する。これらの構成要素の速度は、データフェッチ動作を要求し、遂行することのできる速度をはかるフェッチ頻度で表すことができる。構成要素のフェッチ頻度は、その構成要素のアクセス待ち時間の逆の尺度である。
【００２０】
図１に示すように、データは、記憶からメモリへフェッチされ、次いで、メモリからＣＰＵキャッシュへフェッチされる。またデータは、図示のように、これらの構成要素間を逆方向にも移動する。
【００２１】
ＣＰＵは、現在ＣＰＵキャッシュ内で利用できないデータを必要とする場合、そのデータをフェッチするよう求める要求をメモリおよび／または記憶に出さなければならない。次いでＣＰＵは、より低速の構成要素が要求に応えるのを待たなければならず、これを一般にＣＰＵストールという。ＣＰＵストールの間、ＣＰＵは、どんな有用な作業も行うことができず、これはプロセッサのスループットおよび全般的性能に悪影響を及ぼす。
【００２２】
フェッチ頻度はコンピュータ構成要素間で本質的に異なるが、データを構成要素間で一括して転送することのできる速度はそれよりもずっと近い。したがって、ＣＰＵストールの回数および影響を最小限に抑えるために、コンピュータ構成要素は、未請求のデータが次のＣＰＵ動作に関連性を有し、直後のフェッチ要求を回避することを期待して、明示的に要求されたデータアドレスに近いデータを一括フェッチする。
【００２３】
一括フェッチ戦略がＣＰＵストールに有効に働くのは、未請求のデータが、後続のＣＰＵ動作に実際に関連性を有し、有用である場合だけである。そうでない場合、ＣＰＵは、有用なデータが明示的にフェッチされて未請求のデータが置き換えられるまで、次のストールに入ることを余儀なくされる。一括フェッチされた有用ではないデータは、キャッシュ汚染とみなすことができ、ＣＰＵストールを生じることにより性能を低下させる。キャッシュ汚染は、無関係なデータが記憶からフェッチされるときに、ＣＰＵキャッシュとメインメモリ内の両方で発生する。
【００２４】
キャッシュ汚染を回避するためには、一括フェッチごとに現在のアクセスパスと関連性のある情報が取り込まれるように、記憶構造を記憶アドレス次元と整合させる必要がある。これは良好な空間的局所性と呼ばれる。
【００２５】
行指向関係データベースは、行がアドレス次元と確実に整合するようにすることによって、全行が問合せされる業務作業負荷におけるキャッシュ汚染を低減するように設計される。しかし、特定の列だけが必要とされる分析作業負荷では、この記憶指向は、無関係な列もキャッシュへフェッチされるために、キャッシュ汚染を引き起こす。
【００２６】
逆に、列指向関係データベースは、列がアドレス次元と確実に整合するようにすることによって、特定の列が問合せされる分析作業負荷におけるキャッシュ汚染を低減するように設計される。しかし、特定の行だけが必要とされる業務作業負荷では、この指向は、無関係な行もキャッシュへフェッチされるために、キャッシュ汚染を引き起こす。
【００２７】
行指向記憶でも列指向記憶でも、非連続行が問合せによって必要とされる場合に、キャッシュが無関係な行によって常に汚染されることになる。
【００２８】
さらに、Ｂ木索引といった階層ブロック構造を使用した行へのナビゲートもキャッシュを汚染する。典型的には、階層の上位レベルからフェッチされる各ブロックの一部だけしか問合せとの関連性を持たず、ブロックの残りの部分はキャッシュを汚染する。これは、そのような階層を下位へナビゲートすることによって悪化し、各段階においてキャッシュ汚染を引き起こす。
【００２９】
これらの階層構造は、どちらの記憶指向のデータベースにおいてもごく普通に使用される。
【発明の概要】
【発明が解決しようとする課題】
【００３０】
本発明の一目的は、ディジタルデータ処理のための改善された装置、システムおよび方法を提供することである。
【００３１】
本発明の別の目的は、データ記憶および検索のために使用することができるそのような装置、システムおよび方法を提供することである。
【００３２】
本発明の別の目的は、旧来および新規のデータベースモデル、スキーマおよび作業負荷をサポートして利用することができるそのような装置、システムおよび方法を提供することである。
【００３３】
本発明の別の目的は、データモデル、スキーマおよび／または作業負荷から独立したＯＬＴＰおよびＯＬＡＰアクティビティの支援としてのそのような装置、システムおよび方法を提供することである。
【００３４】
本発明の別の目的は、改善された効率および速度を備えるそのようなアクティビティの支援としてのそのような装置、システムおよび方法を提供することである。
【課題を解決するための手段】
【００３５】
以上は本発明によって達成される目的に含まれるものであり、本発明は、添付の特許請求の範囲において特徴付けられるデータ記憶および／または検索の各態様のための改善されたシステムを提供する。
【００３６】
一態様では、エンティティ型ごとの複数のデータトンネルと、属性ごとの固定された複数のデータトンネルとを含み、データトンネルのうちの１つまたは複数が複数のデータセルを含む記憶媒体を含む、１つまたは複数のディジタルデータ処理システム上で実施されるデータ記憶および／または検索システムが提供される。各データセルは、エンティティ型のそれぞれのインスタンスについての属性のそれぞれのインスタンスと関連付けられたデータを含む。データトンネルのうちの１つまたは複数について、各データトンネルにおけるデータセルは、属性のそれぞれのインスタンスが１つまたは複数のオペランドの所与の集合について上記演算子によって特徴付けられる可能性または不可能性を指示するブール値の結果にそれぞれの演算子が評価するためのデータを有する。またシステムは、記憶媒体と通信結合状態にあり、上記演算子のうちの１つまたは複数および１つまたは複数のオペランドの所与の集合に基づいて１つまたは複数のデータトンネルにアクセスする記憶エンジンも含む。
【００３７】
本発明の関連する態様は、エンティティ型ごとの複数の連結データトンネルと、属性ごとの固定された複数の連結データトンネルとを含み、連結データトンネルのうちの１つまたは複数が複数の連結データセルを備える記憶媒体を含む、例えば前述のようなシステムを提供する。連結データセルのそれぞれは、エンティティ型のそれぞれのインスタンスについての属性のそれぞれのインスタンスと関連付けられたデータを含み、属性のそれぞれのインスタンスは、ただ１つのそれぞれの連結データトンネルにおいて１つのそれぞれの連結データセルを有する。連結データトンネルのうちの１つまたは複数について、各連結データトンネルにおける連結データセルは、属性のそれぞれのインスタンスが１つまたは複数のオペランドの所与の集合について等価である可能性または不可能性を指示するブール値の結果にそれぞれの等価演算子が評価するためのデータを有する。またシステムは、記憶媒体と通信結合状態にあり、上記等価演算子のうちの１つまたは複数および１つまたは複数のオペランドの所与の集合に基づいて１つまたは複数の連結データトンネルにアクセスする記憶エンジンも含む。
【００３８】
本発明の関連する態様は、エンティティ型ごとの複数の連結データトンネルと、属性ごとの固定された複数の連結データトンネルとを含み、連結データトンネルのうちの１つまたは複数が複数の連結データセルを備える記憶媒体を含む、例えば前述のようなシステムを提供する。連結データセルのそれぞれは、エンティティ型のそれぞれのインスタンスについての属性のそれぞれのインスタンスと関連付けられたデータを含む。連結データトンネルのうちの１つまたは複数について、各連結データトンネルにおける連結データセルは、属性のそれぞれのインスタンスが１つまたは複数のオペランドの所与の集合について等価である可能性または不可能性を指示するブール値の結果にそれぞれの等価演算子が評価するためのデータを有し、連結データセルの過半数は、１つまたは複数のオペランドの所与の集合について同様の結果をもたらす。またシステムは、記憶媒体と通信結合状態にあり、上記等価演算子のうちの１つまたは複数および１つまたは複数のオペランドの所与の集合に基づいて１つまたは複数の連結データトンネルにアクセスする記憶エンジンも含む。
【００３９】
本発明の関連する態様は、連結データセルが属性のそれぞれのインスタンスのダイジェストを含み、それぞれの連結データトンネルが、属性のそれぞれのインスタンスの定義済みハッシュ符号化から、上記ハッシュ符号化に複数の連結データトンネルの数のモジュロを適用することによって選択される、例えば前述のようなシステムを提供する。
【００４０】
本発明の関連する態様は、属性のそれぞれのインスタンスのサイズが十分に小さいときに、それぞれのインスタンスのダイジェストがそれぞれのインスタンスの値自体であり、それによって等価演算子が等価を確実視することができる、例えば前述のようなシステムを提供する。
【００４１】
本発明の関連する態様は、エンティティ型ごとの複数の組合せデータトンネルと、属性ごとの固定された複数の組合せデータトンネルとを備え、データトンネルのうちの１つまたは複数が複数の組合せデータセルを備える記憶媒体を含む、例えば前述のようなシステムを提供する。組合せデータセルのそれぞれは、エンティティ型のそれぞれのインスタンスについての属性のそれぞれのインスタンスと関連付けられたデータを含み、属性のそれぞれのインスタンスは、すべてのそれぞれの組合せデータトンネルにおいて１つのそれぞれの組合せデータセルを有する。組合せデータトンネルのうちの１つまたは複数について、各組合せデータトンネル内の組合せセルは、属性のそれぞれのインスタンスが１つまたは複数のオペランドの所与の集合について範囲を定められる可能性または不可能性を指示するブール値の結果にそれぞれの範囲限定演算子が評価するためのデータを有する。またシステムは、記憶媒体と通信結合状態にあり、上記範囲限定演算子のうちの１つまたは複数および１つまたは複数のオペランドの所与の集合に基づいて１つまたは複数の組合せデータトンネルにアクセスする記憶エンジンも含む。
【００４２】
本発明の関連する態様は、それぞれの属性の各インスタンスが、一元的な位取りで、固定小数点に対する有効数字部として表現され、各組合せデータトンネルが上記有効数字部の部分に対応し、すべての組合せデータトンネルが上記有効数字部に関しては相互排他的であり、すべての組合せデータトンネルが上記有効数字部の全体を囲む、例えば前述のようなシステムを提供する。
【００４３】
本発明の関連する態様は、上記記憶システムの上記属性の上記組合せトンネルの読取りアクセスの間の範囲限定演算子の評価のためのさらなる改善が、上記範囲限定演算子内のそれぞれの境界オペランドを、固定小数点を有する一元的な位取りの有効数字部に変換するステップと、それぞれの境界オペランドの有効数字部ビットを有効桁の降順で比較して、上記オペランド間で異なる最初の有効数字部ビットを見つけ、すべての先行する共通ビットを決定データ値とみなすステップとを含む、例えば前述のようなシステムを提供する。また改善は、上記決定値の有効数字の厳密な部分集合を含む最低有効数字の組合せデータトンネルを見つけ、上記組合せデータトンネルを決定データトンネルとみなすステップと、上記属性にかかわる他の組合せデータトンネルの前にまず上記決定データトンネルにアクセスするステップと、上記決定データトンネルのすべての組合せデータセルを検査し、上記組合せデータセルが上記決定データ値と等しくない場合に、それぞれのエンティティインスタンスの適合性を上記範囲限定演算子について不可能であるとみなすステップも含む。上記決定データトンネル以外の組合せデータトンネルにおける、適合性不可能とみなされないエンティティインスタンスにかかわる組合せデータセルだけが、それぞれの範囲限定演算子および範囲限定演算子のそれぞれのオペランドへのそれぞれのエンティティインスタンスの適合性を決定する目的で検査されさえすればよい。
【００４４】
本発明の関連する態様は、エンティティ型ごとの複数の特性データトンネルと、属性ごとの固定された複数の特性データトンネルとを備え、特性データトンネルのうちの１つまたは複数が複数のデータセルを備える記憶媒体を含む、例えば前述のようなシステムを提供する。特性データセルのそれぞれは、エンティティ型のそれぞれのインスタンスについての属性のそれぞれのインスタンスと関連付けられたデータを含み、属性のそれぞれのインスタンスは、すべてのそれぞれの特性データトンネルにおいて１つのそれぞれの特性データセルを有する。特性データトンネルのうちの１つまたは複数について、各特性データトンネル内の特性データセルは、属性のそれぞれのインスタンスが１つまたは複数のオペランドの所与の集合についてのプロパティを所有する可能性または不可能性を指示するブール値の結果にそれぞれの所有演算子が評価するためのデータを有する。またシステムは、記憶媒体と通信結合状態にあり、上記所有演算子のうちの１つまたは複数および１つまたは複数のオペランドの所与の集合に基づいて１つまたは複数の特性データトンネルにアクセスする記憶エンジンも含む。
【００４５】
本発明の関連する態様は、各特性データトンネルが１つまたは複数のプロパティにかかわり、特性データセルが、属性のそれぞれのインスタンスによるそれぞれのプロパティの所有のブール値の指示を含む、例えば前述のようなシステムを提供する。
【００４６】
本発明の関連する態様は、特性トンネルが、プロパティ識別情報をハッシュ符号化し、上記ハッシュ符号化に複数の特性データトンネルの数のモジュロを適用することによってプロパティにかかわるように選択される、例えば前述のようなシステムを提供する。
【００４７】
本発明の関連する態様は、特性トンネルが、厳密に単調に増加する序数を各一意のプロパティ識別情報に割り当て、上記序数に複数の特性データトンネルの数のモジュロを適用することによって、プロパティにかかわるように選択される、例えば前述のようなシステムを提供する。所有演算子は、（Ｍ−Ｔ）＜Ｐ＜２Ｔである場合に所有を確実視することができ、式中、Ｐはプロパティの序数であり、Ｍは割り当てられる最大序数であり、Ｔは特性トンネルの数である。
【００４８】
本発明の関連する態様は、特性トンネルが、それぞれの属性について厳密に単調に増加する序数を各一意のプロパティ識別情報に割り当て、上記序数に複数の特性データトンネルの数のモジュロを適用することによって、プロパティにかかわるように選択される、例えば前述のようなシステムを提供する。所有演算子は、（Ｍ−Ｔ）＜Ｐ＜２Ｔである場合に所有を確実視することができ、式中、Ｐはプロパティの序数であり、Ｍはそれぞれの属性について割り当てられる最大序数であり、Ｔは特性トンネルの数である。
【００４９】
本発明の関連する態様は、エンティティ型ごとの複数の集合データトンネルを備え、集合データトンネルのうちの１つまたは複数が複数の集合データセルを備える記憶媒体を含む、例えば前述のようなシステムを提供する。集合データトンネルのそれぞれは、エンティティ型のそれぞれのインスタンスと関連付けられたデータを含み、集合データセルのそれぞれは、エンティティ型のそれぞれのインスタンスについての属性のそれぞれのインスタンスと関連付けられたデータを含む。集合データセルのそれぞれは、識別情報、測定、列挙または不透明性のうちの１つとして特徴付けられるデータを含む。
【００５０】
本発明の関連する態様は、識別情報の１つとして特徴付けられる集合データセルが、それぞれの属性のそれぞれのインスタンスについての識別情報の等価性の確実性が同様の並び順のビットの比較によって決定され得るように、識別情報を表す上記ビットのシーケンスを含む、例えば前述のようなシステムを提供する。
【００５１】
本発明の関連する態様は、測定の１つとして特徴付けられる集合データセルが、ある範囲によって境界が定められているそれぞれの属性のそれぞれのインスタンスの確実性が、それぞれの符号、有効数字部および指数の各ビットの比較によって決定され得るように、符号ビット、複数の有効数字部ビットおよび複数の指数ビットを含む、例えば前述のようなシステムを提供する。
【００５２】
本発明の関連する態様は、列挙の１つとして特徴付けられる集合データセルが、それぞれの属性のそれぞれのインスタンスによるプロパティの所有の確実性が、１つまたは複数のそれぞれのプロパティについての同様の並び順のビットの比較によって決定され得るように、各プロパティが上記ビットのシーケンスからなる複数のプロパティを含む、例えば前述のようなシステムを提供する。
【００５３】
本発明の関連する態様は、各データトンネルが、記憶への書込みアクセスの間に個別に暗号化され、記憶からの読取りアクセスの間に個別に解読される、例えば前述のようなシステムを提供する。
【００５４】
本発明の関連する態様は、各データセルが、記憶への書込みアクセスの間に個別に暗号化され、記憶からの読取りアクセスの間に個別に解読される、例えば前述のようなシステムを提供する。
【００５５】
本発明の関連する態様は、１つまたは複数のトンネルの特定の集合が、問合せを構成する上記演算子および上記演算子のそれぞれのオペランドごとにアクセスされる、例えば前述のようなシステムを提供する。
【００５６】
本発明の関連する態様は、１つまたは複数のデータトンネルが、各上記演算子および上記演算子のそれぞれのオペランドの評価のために、独立して、同時にアクセスされる、例えば前述のようなシステムを提供する。
【００５７】
本発明の関連する態様は、各演算子評価が、可能性が高いとみなされるそれぞれのインスタンスについての確実性または不確実性のブール値の指示を含む、例えば前述のようなシステムを提供する。
【００５８】
本発明の関連する態様は、演算子評価が、いくつかの不確実なそれぞれのエンティティインスタンスが演算子評価から退けられ得るように、共通のそれぞれのエンティティ型について論理積的に組み合わされる、例えば前述のようなシステムを提供する。
【００５９】
本発明の関連する態様は、演算子評価の後の具体化が、不確実とみなされる属性のそれぞれのインスタンスについてそれぞれの集合データセルを検査することによって不確実性を解決することができる、例えば前述のようなシステムを提供する。
【００６０】
本発明の関連する態様は、データトンネルが、各上記演算子および上記演算子のそれぞれのオペランドの評価のために記憶媒体から一括して読取りアクセスされる、例えば前述のようなシステムを提供する。
【００６１】
本発明の関連する態様は、互いに異なる属性が、対応するデータトンネルにおける各属性のそれぞれのデータセルの比較による各属性のそれぞれのインスタンスの等価性によって相互に関連付けられ得る、例えば前述のようなシステムを提供する。
【００６２】
本発明の関連する態様は、互いに異なる属性が、対応する連結データトンネルにおける各属性のそれぞれの連結データセルの比較による各属性のそれぞれのインスタンスの等価性によって相互に関連付けられ得る、例えば前述のようなシステムを提供する。
【００６３】
本発明の関連する態様は、複数のデータトンネルおよびそれぞれの演算子が、任意の構造のエンティティのインスタンスに関連する、例えば前述のようなシステムを提供する。
【００６４】
本発明の関連する態様は、複数の連結データトンネルおよびそれぞれの演算子が、任意の構造のエンティティのインスタンスに関連する、例えば前述のようなシステムを提供する。
【００６５】
本発明の関連する態様は、複数の組合せデータトンネルおよびそれぞれの演算子が、任意の構造のエンティティのインスタンスに関連する、例えば前述のようなシステムを提供する。
【００６６】
本発明の関連する態様は、複数の特性データトンネルおよびそれぞれの演算子が、任意の構造のエンティティのインスタンスに関連する、例えば前述のようなシステムを提供する。
【００６７】
本発明の関連する態様は、複数のデータトンネルおよびそれぞれの演算子が、エンティティ型の互いに異なるインスタンスが構造を異にする上記エンティティ型のインスタンスに関連する、例えば前述のようなシステムを提供する。
【００６８】
本発明の関連する態様は、複数の連結データトンネルおよびそれぞれの演算子が、エンティティ型の互いに異なるインスタンスが構造を異にする上記エンティティ型のインスタンスに関連する、例えば前述のようなシステムを提供する。
【００６９】
本発明の関連する態様は、複数の組合せデータトンネルおよびそれぞれの演算子が、エンティティ型の互いに異なるインスタンスが構造を異にする上記エンティティ型のインスタンスに関連する、例えば前述のようなシステムを提供する。
【００７０】
本発明の関連する態様は、複数の特性データトンネルおよびそれぞれの演算子が、エンティティ型の互いに異なるインスタンスが構造を異にする上記エンティティ型のインスタンスに関連する、例えば前述のようなシステムを提供する。
【００７１】
本発明の関連する態様は、データセルが、それぞれの属性についての領域および符号化から独立したデータからなり、それによって、上記属性の互いに異なるインスタンスが領域または符号化を異にし得る、例えば前述のようなシステムを提供する。
【００７２】
本発明の関連する態様は、連結データセルが、それぞれの属性についての領域および符号化から独立したデータからなり、それによって、上記属性の互いに異なるインスタンスが領域または符号化を異にし得る、例えば前述のようなシステムを提供する。
【００７３】
本発明の関連する態様は、組合せデータセルが、それぞれの属性についての領域および符号化から独立したデータからなり、それによって、上記属性の互いに異なるインスタンスが領域または符号化を異にし得る、例えば前述のようなシステムを提供する。
【００７４】
本発明の関連する態様は、特性データセルが、それぞれの属性についての領域および符号化から独立したデータからなり、それによって、上記属性の互いに異なるインスタンスが領域または符号化を異にし得る、例えば前述のようなシステムを提供する。
【００７５】
本発明の関連する態様は、データベーススキーマからそれぞれの属性に適用可能な演算子およびそれぞれのデータトンネルを識別するためのさらなる改善が、上記属性のインスタンスについてのデータが上記属性にかかわる連結データトンネル内の連結データセルに記憶されるように、上記属性についての関係制約条件から等価演算子の適用可能性を識別するステップと、上記属性のインスタンスについてのデータが上記属性にかかわる組合せデータトンネル内の組合せデータセルに記憶されるように、上記属性についての数値もしくは時間領域または算術領域の制約条件から範囲限定演算子の適用可能性を識別するステップとを含む、例えば前述のようなシステムを提供する。また改善は、上記属性のインスタンスについてのデータが上記属性にかかわる特性データトンネル内の特性データセルに記憶されるように、上記属性についての特性領域または列挙領域の制約条件から所有演算子の適用可能性を識別するステップと、上記属性のインスタンスについてのデータが上記属性にかかわるどんな連結データトンネルにも組合せデータトンネルにも特性データトンネルにも記憶されないように、上記属性についてのオブジェクトもしくはバイナリ領域または外部参照から上記演算子の適用不能性を識別するステップも含む。
【００７６】
本発明の関連する態様は、関係データベーススキーマからそれぞれの属性に適用可能な演算子およびそれぞれのデータトンネルを識別するためのさらなる改善が、上記属性のインスタンスについてのデータが上記属性にかかわる連結データトンネル内の連結データセルに記憶されるように、上記属性についての主キーおよび外部キーの制約条件から等価演算子の適用可能性を識別するステップと、上記属性のインスタンスについてのデータが上記属性にかかわる組合せデータトンネル内の組合せデータセルに記憶されるように、上記属性についての数値もしくは時間領域または算術検査の制約条件から範囲限定演算子の適用可能性を識別するステップとを含む、例えば前述のようなシステムを提供する。また改善は、上記属性のインスタンスについてのデータが上記属性にかかわる特性データトンネル内の特性データセルに記憶されるように、上記属性についての特性領域または列挙検査の制約条件から所有演算子の適用可能性を識別するステップと、上記属性のインスタンスについてのデータが上記属性にかかわるどんな連結データトンネルにも組合せデータトンネルにも特性データトンネルにも記憶されないように、上記属性についての大きなオブジェクト領域または外部参照から上記演算子の適用不可能性を識別するステップも含む。
【００７７】
本発明の関連する態様は、問合せ結果を具体化する目的でデータトンネルにアクセスするためのさらなる改善が、問合せ式をリファクタリングして演算子および演算子のそれぞれのオペランドの論理和正規形式を生成するステップと、上記演算子の結果が同じ論理積項内の１つまたは複数の他の演算子によって含意される場合に、上記論理和正規形式の各論理積項から各演算子およびそれぞれのオペランドを除去するステップとを含む、例えば前述のようなシステムを提供する。また改善は、上記論理積項が常に偽であるとみなされる演算子およびそれぞれのオペランドを含む場合に、上記論理和正規形式から各論理積項を除去するステップと、上記論理和正規形式の各演算子が単一のエンティティ型にかかわる場合に、上記論理和正規形式の各演算子を評価して、コンピュータメモリに記憶するために、上記演算子ごとに独立して、同時に、上記演算子ごとのエンティティインスタンスの別々の関連集合を生成するステップと、エンティティインスタンスの上記関連集合が共通のエンティティ型にかかわる場合に、上記エンティティについてのあらゆる上記集合に対応しない上記集合のメンバが廃棄されるようにエンティティインスタンスの上記関連集合を縮小して、コンピュータメモリに記憶するために、上記論理和正規形の各論理積項内のそれぞれのエンティティ型ごとに独立して、同時に、上記エンティティ型についてのエンティティインスタンスの共通集合を生成するステップと、シーケンス内の演算子をバインドすることによって対にされた上記エンティティ型についての上記エンティティインスタンスの共通集合を相互に関連付けて、コンピュータメモリに記憶するために、上記論理積項ごとに独立して、同時に、それぞれのエンティティ型ごとのエンティティインスタンスの相関集合を生成するステップも含む。また改善は、エンティティインスタンスの各上記相関集合に対応するデータトンネルにアクセスして、コンピュータメモリに記憶するために、上記論理積項ごとに独立して、同時に、それぞれのエンティティ型ごとに独立して、別々に、問合せ結果インスタンスの集合を生成するステップと、問合せ結果インスタンスがそれぞれの論理積項と競合する場合に、コンピュータメモリに記憶するために、上記論理積項ごとに独立して、同時に、問合せ結果インスタンスをボイドとマークするステップと、コンピュータメモリに記憶するために、各上記集合からのそれぞれの問合せ結果インスタンスが組み合わされて単一の問合せ結果インスタンスの集合になるように、上記論理積項ごとに問合せ結果インスタンスの上記集合をマージするステップも含む。
【００７８】
本発明の関連する態様は、エンティティインスタンスの相関集合を生成する目的で上記論理積項内の上記エンティティインスタンスの共通集合を相互に関連付けるためのさらなる改善が、メモリに記憶するために、バインド演算子の定義済みの訪問順序における相互対応バインド演算子にまたがるエンティティインスタンスの共通集合の対を相互に関連付けるステップと、メモリに記憶するために、エンティティインスタンスのそれぞれの相関集合内のエンティティインスタンスの濃度（カーディナリティ）を上記訪問順序と逆の順に更新するステップとを含む、例えば前述のようなシステムを提供する。
【００７９】
本発明の関連する態様は、上記論理積項を伴う上記バインド演算子の上記訪問順序を決定するためのさらなる改善が、上記論理積項内の最小数のそれぞれのエンティティインスタンスを有するエンティティインスタンスの共通集合を、エンティティインスタンスの原始集合として選択するステップと、エンティティインスタンスの上記原始集合に対応する上記バインド演算子の１つを上記訪問順序における最初のバインド演算子として選択するステップと、上記訪問順序において出現していない、または上記訪問順序においてすでに出現しているが、その後に訪問されたバインド演算子の影響を受けている、エンティティインスタンスの同じ共通集合に対応するバインド演算子の中からの後続のバインド演算子を、最後に訪問されたバインド演算子として選択するステップと、エンティティインスタンスの相関集合が、コンピュータメモリに記憶するために上記訪問順序において生成されるように、次のバインド演算子が選択に利用できなくなるまで先のステップを繰り返すステップとを含む、例えば前述のようなシステムを提供する。
【００８０】
本発明の関連する態様は、それぞれのデータベーストランザクションにおけるデータベース演算によって操作されるエンティティ型のインスタンスごとに複数のデータセグメントを備える記憶媒体を含む１つまたは複数のディジタルデータ処理システム上で実施されるデータ記憶および／または検索システムを提供する。すべてのデータセグメントは、任意のサイズの連続したデータヒープ内で維持され、すべての新しいデータセグメントは、データヒープに追加され、任意の順に、それぞれのトランザクションおよびそれぞれのエンティティインスタンスに割り当てられる。またシステムは、記憶媒体と通信結合状態にあり、上記トランザクションのいずれか１つがその状態をコミットするときに、最小限の数の記憶書込み演算で上記データヒープを記憶媒体に書き込む記憶エンジンも含む。
【００８１】
本発明の関連する態様は、上記データヒープ内のすべての上記データセグメントが最小限の記憶書込み要求で記憶に書き込まれるように記憶書込み演算が行われる、例えば前述のようなシステムを提供する。
【００８２】
本発明の関連する態様は、その状態をコミットするトランザクションが、上記データヒープについての次の記憶書込み演算が正常に完了するまで上記コミットを完了することができないように、上記データヒープについての記憶書込み演算が事前定義済みの一定の間隔でのみ行われる、例えば前述のようなシステムを提供する。
【００８３】
本発明の関連する態様は、エンティティ型のインスタンスがそれぞれのインスタンスの反転を追加することによって論理的に削除される、例えば前述のようなシステムを提供する。上記反転は、すべてのそれぞれの連結データトンネル、組合せデータトンネルおよび特性データトンネル内のそれぞれのインスタンスと同一のように見え、エンティティ型ごとの単一の反転データトンネルは、上記エンティティ型のそれぞれのインスタンスの反転を表す複数のデータセルを含む。
【００８４】
本発明の関連する態様は、データトンネルおよびデータヒープへの追加アクセスが時系列順に行われ、データトンネルおよびデータヒープへの読取りアクセスが逆時系列順に行われ、読取りアクセスが反転を累積し、対応するエンティティインスタンスに遭遇する際に上記対応するエンティティインスタンスを割り引くことによってエンティティインスタンス反転を解決する、例えば前述のようなシステムを提供する。
【００８５】
本発明の関連する態様は、少なくとも１つの上記トンネルの複数のセルが、それらのセルのそれぞれのエンティティインスタンスの共通の特性に基づいてフレームにおいてグループ化される、例えば前述のようなシステムを提供する。
【００８６】
本発明の関連する態様は、少なくとも１つの上記トンネルの複数のセルが、すべてのトンネルにまたがるセルが共通のフレーム境界を守るように、それぞれのエンティティインスタンスの共通の特性に基づいてフレームにおいてグループ化される、例えば前述のようなシステムを提供する。
【００８７】
本発明の関連する態様は、記憶エンジンに結合されており、保持されるデータの経過時間に関して記憶媒体におけるセルの保持を管理するデータベースエンジンを含む、例えば前述のようなシステムを提供する。
【００８８】
本発明の関連する態様は、記憶エンジンに結合されており、問合せ内で表現される時間閾値に関して上記問合せの間に読取りアクセスからフレームを除くデータベースエンジンを含む、例えば前述のようなシステムを提供する。
【００８９】
本発明の関連する態様は、上記共通の特性がそれぞれのエンティティインスタンスのボリュームである、例えば前述のようなシステムを提供する。
【００９０】
本発明の関連する態様は、記憶エンジンに結合されており、保持されるデータのボリュームに関して記憶媒体におけるセルの保持を管理するデータベースエンジンを含む、例えば前述のようなシステムを提供する。
【００９１】
本発明の関連する態様は、複数のフレームにかかわる複数のデータトンネルにかかわる複数のデータセルが、複数の論理記憶システムファイルの単一の論理記憶システムファイル内に累積される、例えば前述のようなシステムを提供する。
【００９２】
本発明の関連する態様は、記憶エンジンに結合されており、記憶媒体におけるセルの保持を管理するデータベースエンジンを含む、例えば前述のようなシステムを提供する。
【００９３】
本発明の関連する態様は、複数のフレーム内のそれぞれのセルの共通の特徴付けが、複数のフレーム間隔にまたがり、複数のフレーム間隔サイズにまたがって維持され、それによって、複数のフレームおよびそれぞれのデータセルがそれぞれの演算子およびそのオペランドによる考慮対象から除かれ得る、例えば前述のようなシステムを提供する。
【００９４】
本発明の関連する態様は、複数のフレーム内のデータセルについての属性のすべてのそれぞれのインスタンスに共通の複数のビットシーケンスが、複数のフレーム間隔にまたがり、複数のフレーム間隔サイズにまたがって維持され、それによって、複数のフレームおよびそれぞれのデータセルが、それぞれの等価演算子およびそのオペランドによる考慮対象から除かれ得る、例えば前述のようなシステムを提供する。
【００９５】
本発明の関連する態様は、複数のフレーム内のデータセルについての属性のすべてのそれぞれのインスタンスに共通の境界が、複数のフレーム間隔にまたがり、複数のフレーム間隔サイズにまたがって維持され、それによって、複数のフレームおよびそれぞれのデータセルが、それぞれの範囲限定演算子およびそのオペランドによる考慮対象から除かれ得る、例えば前述のようなシステムを提供する。
【００９６】
本発明の関連する態様は、複数のフレーム内のデータセルについての属性のすべてのそれぞれのインスタンスに共通のプロパティが、複数のフレーム間隔にまたがり、複数のフレーム間隔サイズにまたがって維持され、それによって、複数のフレームおよびそれぞれのデータセルが、それぞれの所有演算子およびそのオペランドによる考慮対象から除かれ得る、例えば前述のようなシステムを提供する。
【００９７】
本発明の関連する態様は、複数の上記データセグメントが、そのそれぞれのエンティティインスタンスの共通の特性に基づいてフレームにおいてグループ化される、例えば前述のようなシステムを提供する。
【００９８】
本発明の関連する態様は、上記共通の特性が期間である、例えば前述のようなシステムを提供する。
【００９９】
本発明の関連する態様は、上記共通の特性がそれぞれのエンティティインスタンスのボリュームである、例えば前述のようなシステムを提供する。
【０１００】
本発明の関連する態様は、完全なフレームを備えるデータセグメントに含まれるそれぞれのエンティティのインスタンスについてそれぞれのデータトンネルにデータセルを追加する記憶エンジンを含む、例えば前述のようなシステムを提供する。
【０１０１】
本発明の関連する態様は、記憶エンジンを含み、各フレームが完全になるときに、完全なフレームを備えるデータセグメントに含まれるそれぞれのエンティティのインスタンスについてそれぞれのデータトンネルにデータセルを追加する、例えば前述のようなシステムを提供する。
【０１０２】
本発明の関連する態様は、記憶エンジンを含み、上記複数のフレームが完全になるときに、複数の完全なフレームを備えるデータセグメントに含まれるそれぞれのエンティティのインスタンスについてそれぞれのデータトンネルにデータセルを追加する、例えば前述のようなシステムを提供する。
【０１０３】
本発明の関連する態様は、それぞれのエンティティ型およびそれぞれの属性の完全な定義が、上記定義が変更される度に、一意のバージョン識別情報によって識別される別個の記憶システムファイル内に記憶される、例えば前述のようなシステムを提供する。
【０１０４】
本発明の関連する態様は、各別個のエンティティ型定義に、単一の単調に増加する序数シーケンスから一意の序数識別情報が割り当てられる、例えば前述のようなシステムを提供する。
【０１０５】
本発明の関連する態様は、各別個の属性定義に、それぞれのエンティティ型についての単調に増加する序数シーケンスから一意の序数識別情報が割り当てられる、例えば前述のようなシステムを提供する。
【０１０６】
本発明の関連する態様は、各完全な定義に、単一の単調に増加するバージョン番号シーケンスから一意のバージョン識別情報が割り当てられる、例えば前述のようなシステムを提供する。
【０１０７】
本発明の関連する態様は、各完全な定義に、上記定義が作成されるそれぞれのフレームの識別情報が割り当てられる、例えば前述のようなシステムを提供する。
【０１０８】
本発明の別の態様は、添付の特許請求の範囲において特徴付けられるシステムのデータ記憶および／または検索の並列動作のための方法を提供する。
【０１０９】
本発明の別の態様は、前述のシステムおよび方法に従って動作するデータ記憶および／または検索のための装置を提供する。
【０１１０】
本発明の別の態様を、以下のテキストおよび図面において明らかにする。
【図面の簡単な説明】
【０１１１】
【図１】コンピュータアーキテクチャの例を示す概略図である。
【０１１２】
【図２】データモデルまたはスキーマから独立してＯＬＴＰおよびＯＬＡＰアクティビティをサポートする本発明の一実施態様によるディジタルデータ処理のシステムおよび環境を示す図である。
【０１１３】
【図３】本発明の一実施態様によるシステムにおけるデータベースサーバのためのソフトウェアアーキテクチャを示す図である。
【０１１４】
【図４】アクセスモデルおよび記憶モデルが、本発明の一実施態様によるシステムにおいてユーザにより用いられる問合せ構文およびデータモデルにどのように関連するかを示す図である。
【０１１５】
【図５】本発明の一実施態様によるシステムにおける論理コレクションおよび論理コレクション内の論理要素を示す図である。
【０１１６】
【図６】本発明の一実施態様によるシステムにおいて、コレクションパスが表名と等価であり、要素パスが列名に対応することを示す図である。
【０１１７】
【図７】本発明の一実施態様によるシステムにおいて、例えば、要素パスがネストされたオブジェクト構造をモデル化し得ることを示す図である。
【０１１８】
【図８】本発明の一実施態様によるシステムにおいて、例えば、要素パスがＸＭＬ階層を維持し得ることを示す図である。
【０１１９】
【図９】本発明の一実施態様によるシステムにおいて、どのようにしてコレクション集合が訪問され、バインドプロセス第２段階の間にその訪問序数を割り当てさせることができるかの例を示す図である。
【図１０】本発明の一実施態様によるシステムにおいて、どのようにしてコレクション集合が訪問され、バインドプロセス第２段階の間にその訪問序数を割り当てさせることができるかの例を示す図である。
【図１１】本発明の一実施態様によるシステムにおいて、どのようにしてコレクション集合が訪問され、バインドプロセス第２段階の間にその訪問序数を割り当てさせることができるかの例を示す図である。
【図１２】本発明の一実施態様によるシステムにおいて、どのようにしてコレクション集合が訪問され、バインドプロセス第２段階の間にその訪問序数を割り当てさせることができるかの例を示す図である。
【図１３】本発明の一実施態様によるシステムにおいて、どのようにしてコレクション集合が訪問され、バインドプロセス第２段階の間にその訪問序数を割り当てさせることができるかの例を示す図である。
【図１４】本発明の一実施態様によるシステムにおいて、どのようにしてコレクション集合が訪問され、バインドプロセス第２段階の間にその訪問序数を割り当てさせることができるかの例を示す図である。
【０１２０】
【図１５】本発明の一実施態様によるシステムにおいて、トンネルおよびセルは、探査が必要に応じてトンネル間を移動することができるようにトンネル間のセルが対応するように配置され得ることを示す図である。
【０１２１】
【図１６】本発明の一実施態様によるシステムにおいて、ファイルシーケンスは、トンネルファミリおよびコレクションパス識別情報から決定されるディレクトリパスに配置することができ、ファイルはファイル名内にフレーム番号を含むことができることを示す図である。
【０１２２】
【図１７】本発明の一実施態様によるシステムにおいて、閉じられたフレームを記憶セクタの階層として配置することができ、セクタは特定のエンティティパス（コレクションまたは要素）に関連し、複数のサブセクタで構成することができ、サブセクタは特定のトンネルに関連することを示す図である。
【０１２３】
【図１８】本発明の一実施態様によるシステムにおいて、セクタマップは、サブセクタ序数のためのサブセクタの開始アドレスを含む固定サイズのエントリの１次元アレイとして配置することができることを示す図である。
【０１２４】
【図１９】本発明の一実施態様によるシステムにおいて、それぞれ、フレームとフレームファイル内のアドレスとを識別する固定サイズのフレーム番号と固定サイズのトンネルアドレスとを用いてトンネルを配置することができることを示す図である。
【０１２５】
【図２０】本発明の一実施態様によるシステムにおいて、セグメントがそれの属するコレクションパスおよびトランザクションを識別するヘッダを含むことができ、セグメントが、チェーン内の次のトランザクションセグメントを指し示すポインタと、同じコレクションパス内の次のセグメントを指し示すポインタとを含むことができることを示す図である。
【０１２６】
【図２１】本発明の一実施態様によるシステムにおいて、トランザクションセグメントに付随するトランザクション情報はヒープファイルのヘッダ内に記憶することができることを示す図である。
【０１２７】
【図２２】本発明の一実施態様によるシステムにおいて、識別セルは、セルサイズ、パスおよび領域が前に付くバイトのシーケンスとすることができることを示す図である。
【０１２８】
【図２３】本発明の一実施態様によるシステムにおいて、測定セルは、要素の大きさを表すセルの長さ、領域、符号標識、指数および有効数字部を保持することができることを示す図である。
【０１２９】
【図２４】本発明の一実施態様によるシステムにおいて、列挙セルは、プロパティサイズが前に付くプロパティ識別子のシーケンスとすることができ、列挙シーケンスの前には、セルサイズ、パスおよび領域が付くことを示す図である。
【０１３０】
【図２５】本発明の一実施態様によるシステムにおいて、不透明セルは、セルサイズ、パス、領域、不透明要素サイズおよび不透明データが記憶されるリンクを含むことができることを示す図である。
【０１３１】
【図２６】本発明の一実施態様によるシステムにおいて、反転セルは、固定サイズのフレーム番号およびトンネル番号を含むことができることを示す図である。
【０１３２】
【図２７】本発明の一実施態様によるシステムにおいて、ダイジェストセルは、セルサイズ、ダイジェストおよび固定サイズのトンネル番号を含むことができることを示す図である。
【０１３３】
【図２８】本発明の一実施態様によるシステムにおいて、ダイジェストトンネルは、トンネル内で厳密に時系列順に追加されたセルを用いて配置することができることを示す図である。
【０１３４】
【図２９】本発明の一実施態様によるシステムにおいて、フレームは、当該トンネルにおけるセルの数を得るためにトンネル番号（１…Ｎ）によってアドレス指定される１次元アレイである１つのダイジェストトンネル番号につき１つのセル数を含むこともできることを示す図である。
【０１３５】
【図３０】本発明の一実施態様によるシステムにおいて、ダイジェスト・トンネル・マップは、対応するダイジェストトンネル番号を得るためにコレクショントンネル番号によってアドレス指定される１次元アレイとすることができることを示す図である。
【０１３６】
【図３１】本発明の一実施態様によるシステムにおいて、ランクトンネルは、トンネル内で厳密に時系列順に追加されたセルを用いて配置することができることを示す図である。
【０１３７】
【図３２】本発明の一実施態様によるシステムにおいて、フレームは、対応するセル値を含む当該ランクトンネル内のセルの数を得るためにバイト値（０…２５５）によってアドレス指定されるランクトンネルごとの１次元アレイを含むことができることを示す図である。
【０１３８】
【図３３】本発明の一実施態様によるシステムにおいて、フレームは、当該トンネル内における「真」のセルの数を得るためにプロパティトンネル番号（１…Ｎ）によってアドレス指定される１次元アレイを含むことができることを示す図である。
【０１３９】
【図３４】本発明の一実施態様によるシステムにおいて、有利には、コレクション集合は、迅速なアクセスを支援するためにメモリにおいてホストすることができ、コレクション集合のための有利な構造は固定サイズのメモリブロックのリストであることを示す図である。
【０１４０】
【図３５】本発明の一実施態様によるシステムにおけるデータベースのアーキテクチャの階層および構成要素を示す図である。
【発明を実施するための形態】
【０１４１】
例示的実施形態の詳細な説明
図２に、データモデルまたはスキーマから独立してＯＬＴＰおよびＯＬＡＰアクティビティをサポートする、本発明の一実施態様によるディジタルデータ処理のシステムおよび環境を示す。これは、例えば、関係データモデルや階層データモデルなどのいくつかのデータモデルのいずれか、およびそれらに付随する問合せ言語をサポートし、しかも、それらのモデルおよび言語から独立しているデータベースシステムの記憶層においてデータを存続させ、検索することを含むことができる。
【０１４２】
図示の実施形態では、システムは、ディジタル・データ・プロセッサ２０〜４０を含み、それらは、パーソナルコンピュータ、ワークステーション、メインフレーム、または、アプリケーション、プログラムおよび／もしくはプロセスを実行することのできる、当分野で公知の種類の他のディジタルデータ処理装置とすることができる。図には３つのディジタル・データ・プロセッサ２０〜４０が示されているが、図示のディジタル・データ・プロセッサに帰せられる機能は、すべて本発明の教示に従って、より少数のそのようなディジタル・データ・プロセッサ上へ組み合わされてもよく、より多数のディジタル・データ・プロセッサ上へ分散されてもよいことを当業者は理解するであろう。図示のディジタル・データ・プロセッサ２０〜４０は、この場合、例えば、公衆回線、専用回線、ＩＰベースなどとすることのできる、インターネット、ローカル・エリア・ネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）をといったネットワーク７０を介して、あるいは別の方法で、当分野で公知の従来の方式で通信するために結合されている。
【０１４３】
図示のディジタル・データ・プロセッサ２０は、前述のように、パーソナルコンピュータ、ワークステーション、メインフレーム、または他のディジタルデータ処理装置を備え、開発者によって、本発明の教示と一致するデータベースシステムを構築し、試験し、配備するために使用される。そのために、ディジタル・データ・プロセッサ２０は、例えばコンピュータ言語コンパイラなどを含めて、そのようなシステムを作成するために様々なアプリケーションを実行する。
【０１４４】
図示のディジタル・データ・プロセッサ３０は、前述のように、パーソナルコンピュータ、ワークステーション、メインフレーム、または他のディジタルデータ処理装置を備え、ユーザによって、データベースシステムから、より詳細には例えばデータストア５０などからの情報を存続させ、かつ／または検索するのに用いられる。このために、ディジタル・データ・プロセッサ３０は、データの記憶および検索を求めるユーザ要求、より具体的には、例えば、データベースシステムにおいてデータを作成し、読み取り、更新し、削除することを求める要求などを受け入れ、本発明の教示と一致するように適合された、当分野で以前から公知の種類の対応する通知、データレコードまたは他の情報を生成する（例えば、グラフィカル、テキスト、バッチ指向またはその他の）インターフェース３２を提供する。典型的なアプリケーションでは、ユーザによる要求およびインターフェース３２によって生成される情報は、関係または階層のデータモデルまたはスキーマに関して、より一般的には、ユーザが、その周囲にデータベースシステムが編成されると認識するデータモデルまたはスキーマに関して作成される。したがって、ディジタル・データ・プロセッサ３０は、すべて本発明の教示と一致するように適合された、例えば関係データベースを含む、どんな種類の従来のデータベースアプリケーションを実行してもよい。
【０１４５】
図示のディジタル・データ・プロセッサ４０は、ネットワーク接続された記憶装置５０上で維持されるデータを記憶、検索、更新、削除し、その他の管理を行う、本発明の教示と一致するディジタルデータ情報の記憶および検索のアプリケーション（データベースサーバなど）を実行する、パーソナルコンピュータ、ワークステーション、メインフレーム、サーバ、または他のディジタルデータ処理装置を備え、記憶装置５０は、当分野で公知の種類のハード・ディスク・ドライブおよび／または他の永続記憶装置とすることができる。ディジタル・データ・プロセッサ４０およびデータストア５０は、これまで当分野で知られていない記憶およびアクセスモデルを使用してデータを存続させ、検索するために、本発明の教示と一致するように適合された当分野で公知の従来のやり方で動作する。
【０１４６】
図３に、データベースサーバ４０のためのソフトウェアアーキテクチャを示す。図面に示すように、このソフトウェアアーキテクチャは、すべて本発明の教示と一致するように適合された当分野で公知の種類の、ユーザインターフェース機能、言語インターフェース機能、スキーマ定義機能および実行エンジンを含む（「データベース」と表示された）データベース管理ソフトウェアを含む。ソフトウェアアーキテクチャは、やはり本発明の教示と一致するように適合された当分野で公知の種類の、オペレーティングシステムとファイルシステムとをさらに含む。図示の種類の記憶エンジンの構築および動作を以下で詳細に説明する。本明細書では記憶エンジンを、以下のコンテキストにおいて明らかになるように、「データベースシステム」、「図示のデータベースシステム」、「ディジタルデータ記憶システム」、「ディジタルデータ検索システム」などとも呼ぶ。
【０１４７】
図示のデータベースシステムは、関係データモデルや階層データモデルといった特定のデータモデルをサポートし、データ定義、データ操作およびデータ検索をサポートするために、データベースのユーザに問合せ言語を提供する。データモデルはデータベース内に記憶されたデータのセマンティクスを定義し、問合せ言語はデータモデルを使用するための構文を定義する。
【０１４８】
本明細書で論じるのは、使用されるデータモデルをサポートし、しかも、事実上どんなデータモデルでも効率よくサポートすることができるように、データモデルから独立しているアクセスモデルおよび記憶モデルである。アクセスモデルは、データモデルを効率よくサポートするのに必要な基本演算を定義し、記憶モデルは、アクセスモデルを十分にサポートするのに必要とされる記憶構造を定義する。
【０１４９】
図４に、このアクセスモデルおよび記憶モデルが、ユーザによって用いられる問合せ構文およびデータモデルにどのように関連するかを示す。
【０１５０】
アクセスモデル
【０１５１】
データモデルから独立するために、アクセスモデルはデータ母集団を原子要素のコレクションとみなし、コレクションインスタンスは固有の構造を持たない要素インスタンスの束にすぎず、要素インスタンスは、他と区別される参照パスとその参照パスと関連付けられたデータ値との対である。すべてのコレクションインスタンスが、異なる特性のコレクションインスタンスを区別する一意のコレクションパスによって参照される。
【０１５２】
コレクションインスタンスは、全体として挿入され、削除されてもよい。またコレクションインスタンスは、（コレクションインスタンス内で要素インスタンスを追加し、除去することにより）更新されてもよい。したがって、コレクションインスタンスは、意のままに追加し、または除去することのできる要素インスタンスのクラウドとみなされる。図５に、論理コレクションおよび論理コレクション内の論理要素を示す。
【０１５３】
図５において、クラウドの中心にあるパスは論理コレクションパスを表し、各論理要素内のパスは要素パスを表す。これらのコレクションパスおよび要素パスは、このコレクションパスにおいて出現し得るコレクションインスタンスについてのメタデータを定義する。
【０１５４】
このモデルは、要素パス間に存在し得る論理関係についても、コレクションインスタンス内の要素インスタンス間の関係についても、コレクションインスタンスにまたがる要素インスタンス間に存在し得る関係についても何も知らないことに留意されたい。
【０１５５】
関係モデルと比べると、コレクションインスタンスは表の行にたとえられ、各要素インスタンスは表の列値に対応する。コレクションパスは表名と等価であり、要素パスは列名に対応する。これが図６に示されている。
【０１５６】
要素インスタンスの非存在は行における空の列値にたとえられる。表の行の挿入および削除は、全コレクションインスタンスの挿入および削除に対応する。行の更新は、既存のコレクションインスタンスの１つまたは複数の要素インスタンスの除去および／または追加としてモデル化される。
【０１５７】
上記を考慮すると、アクセスモデルは関係データ構造をサポートすることが理解されるであろう。
【０１５８】
オブジェクトモデルと比べると、コレクションインスタンスはオブジェクトインスタンスにたとえられ、各要素インスタンスは、オブジェクトインスタンス内の原子フィールドに対応する。しかし、（他のオブジェクトの集合体とすることのできる）オブジェクトの構造は、コレクションインスタンスにおいて反映されず、要素パス参照において反映されることに留意されたい。言い換えると、コレクションインスタンスはオブジェクト構造を平坦化し、要素パスはオブジェクト構造を保存する。例えば、要素パスは、「．Ｏｂｊｅｃｔ．Ａｒｒａｙ［Ｎ］．Ｆｉｅｌｄ」といったネストされたオブジェクト構造をモデル化し得る。図７の例を参照されたい。
【０１５９】
上記を考慮すると、アクセスモデルはオブジェクトデータ構造をサポートすることが理解されるであろう。
【０１６０】
階層モデルと比べると、コレクションインスタンスは階層の根にたとえられ、要素インスタンスは階層内に記憶された原子属性に対応する。オブジェクトモデルと全く同様に、階層はコレクションインスタンスによって平坦化されるが、要素パスによって保存される。例えば、要素パスは、「ｂｏｏｋ／ｐａｇｅ／ｐａｒａｇｒａｐｈ（本／ページ／段落）」といったＸＭＬ階層を保存し得る。図８の例を参照されたい。
【０１６１】
上記を考慮すると、アクセスモデルは階層データ構造をサポートすることが理解されるであろう。
【０１６２】
どの場合も、要素インスタンスは単純なスカラデータ型であるが、要素インスタンスと関連付けられたパスはその周りのどんな複雑な構造も保存し、本質的に、要素パスは、構造直列化機能を果たすことに留意されたい。
【０１６３】
上記を考慮すると、データモデルの構造は、アクセスモデルのメタデータパスによって保存されることが理解されるであろう。
【０１６４】
すべての非スカラデータ構造は、スカラ数、スカラテキストまたはスカラオブジェクトの関連付けられた値を有する複数の参照パスへと分解される。例えば、複合座標構造（Ｘ，Ｙ）は、それぞれ、（「Ｘ」：数）および（「Ｙ」：数）のパスとスカラ数の対（要素インスタンス）へと分解される。よって、任意の複合データ型を、その要素パスが複合データ型の構造を保存する複数のスカラ要素インスタンスへと分解することができる。
【０１６５】
上記を考慮すると、アクセスモデルは任意の複合データ構造をサポートすることができることが理解されるであろう。
【０１６６】
上記を考慮すると、アクセスモデルはどんな特定のデータモデルからも独立していることが理解されるであろう。
【０１６７】
明確にするために、コレクションおよび要素は、標準的な実体関連モデル（Ｅｎｔｉｔｙ  Ｒｅｌａｔｉｏｎｓｈｉｐ  Ｍｏｄｅｌ）において理解されるエンティティおよび属性と以下のように関連する。
【表４】
2013525881.tif 000006
【０１６８】
このアクセスモデルは、要素インスタンスの任意の集合がいつでもコレクションインスタンスに含まれることを可能にする。この流動性は、アクセスモデルが、ネイティブ・データ・モデルと無関係な制約条件を課すことなく、ネイティブ・データ・モデルによってサポートされる任意のスキーマ変更を受け入れることを可能にする。
【０１６９】
上記を考慮すると、アクセスモデルは不必要にネイティブ・データ・モデルを制約しないことが理解されるであろう。
【０１７０】
上記を考慮すると、アクセスモデルは、コレクションパスおよび要素パスが、任意に、動的に意のままに作成されることを可能にすることが理解されるであろう。
【０１７１】
アクセスモデルは、コレクションパスが一意であることを必要とする。したがって、コレクションパスは、その識別情報を解決するのに十分な情報を含まなければならない。アクセスモデルは、要素パスがコレクションパス内で一意であることを必要とするが、要素パスは、コレクションコレクションパスにまたがって一意である必要はない。したがって、要素パスは、その識別情報を解決するためにそれが属するコレクションパスによって常に修飾されなければならない。
【０１７２】
例えば、関係コンテキストにおいて、‘Ｃ’という名前の列（要素パス）が複数の互いに異なる表（コレクションパス）において出現し得る。したがって、要素パス‘Ｃ’の識別情報は、それが属するコレクションパスのコンテキストによってしか解決され得ない。
【０１７３】
アクセスモデルは、要素インスタンスのデータ型、領域、符号化（エンコーディング）またはサイズが有意であるとはみなさない。そうではなく、要素意図が有意であるとみなされ、意図は、コレクションに付随する情報を提供する際の要素パスの目的を定義する。要素パスの意図は、（識別意図、測定意図、列挙意図、および不透明意図）のうちの正確に１つとして分類される。
【０１７４】
識別意図。要素パスは識別子として使用される。そのような要素パスは、コレクションインスタンスまたはコレクションインスタンスの部分を参照するためにまるごと使用されるにすぎない。例えば、‘ｅｍｐｌｏｙｅｅ  ｎｕｍｂｅｒ（従業員番号）’要素パスは、識別意図を有し、特定の従業員インスタンスを参照するのに使用され、他の有意性を持たない。識別要素インスタンスは、コレクションインスタンス内でいつでも１つの値を所有することしかできず、その値は値全体としてのみ意味を有し、同じ要素パス内の他の識別子の値と比べて含意される順序もメリットも持たない。例えば、従業員番号は、いつでも特定の従業員について１つの値しか持たなくてよく、その従業員番号全体がその従業員を識別するのに使用され、さらに、従業員番号同士の比較は有用な情報をもたらさない。
【０１７５】
測定意図。要素パスはあるプロパティの尺度として使用される。そのような要素パスは、メリットの順番を決定するための要素インスタンス間の比較をサポートする。例えば、‘ｅｍｐｌｏｙｅｅ  ｓａｌａｒｙ（従業員給与）’要素パスは、測定意図を有し、従業員同士を比較するのに使用されてよいが、特定の従業員を識別するのには使用されないはずである。測定要素インスタンスは、いつでも１つの値を所有することしかできず、その値は値全体としてのみ意味を有する（値の部分からは意味のある情報が提供されない）。例えば、従業員給与はいつでも特定の従業員について１つの値だけを有し、給与は給与値全体によって指定される。
【０１７６】
列挙意図。要素パスは１つまたは複数の互いに異なるプロパティの所有権を表すのに使用される。例えば、‘ｅｍｐｌｏｙｅｅ  ｇｅｎｄｅｒ（従業員性別）’要素パスは、男性プロパティまたは女性プロパティのどちらかの単集合所有であるとみなされるはずであり、‘ｅｍｐｌｏｙｅｅ  ａｄｄｒｅｓｓ（従業員アドレス）’要素パスは、複数語プロパティの所有であるとみなされるはずである。列挙要素インスタンス内のプロパティの部分集合は、有用な情報を知らせることができる。例えば、アドレスインスタンスにおける都市名プロパティは、同じアドレス内のその他のプロパティから独立して有用な情報を提供することができる。
【０１７７】
不透明意図。この要素は外部情報を含み、アクセスモデルに関連した意図を持たない。例えば、ＰＤＦ文書で添付された従業員契約書は、どんな有用な方法においても、従業員の識別、測定または列挙に使用することはできない。
【０１７８】
特定の意図を有する要素パスに属する要素インスタンスの完全に動的なコレクションインスタンスの当然の帰結は、新しい要素パスが作成される度に意図が指定されなければならないことである。したがって、この実施形態では、要素パスの作成はその意図を指示しなければならない。
【０１７９】
従来のデータモデルにおける要素意図との直接的な類似性はない。しかし、関係および値領域制約条件を使用して意図を確認することができる。以下の表に、ネイティブ・データ・スキーマにおける基本データ型からどのようにして意図が認識され得るかの概要を提示する。表では、あらゆる要素インスタンス値はスカラ数、スカラテキストまたはスカラオブジェクトとして表現することができるものと仮定している。例えば、時間データは、あるエポック内の時間単位の数として表すことができる。
【表５】
2013525881.tif 000007
【０１８０】
上記を考慮すると、要素パスについて知る必要がある情報は、ネイティブ・データ・モデルから容易に突き止められる要素パスの正規名および意図だけにすぎないことが理解されるであろう。
【０１８１】
以下の表に、関係データベーススキーマにおいて要素パスの意図を認識するための規則のリストを示す。これらの規則は、優先順位の低い順に適用され、条件が満たされるときに対応する意図が使用される。
【表６】
2013525881.tif 000008
【０１８２】
これらの規則を使用すると、前述の例で与えられた表定義は、以下の意図をもたらすはずである。
ｃｒｅａｔｅ  ｔａｂｌｅ  Ｅｍｐｌｏｙｅｅｓ
（Ｎａｍｅ  ｖａｒｃｈａｒ（６４）ｎｏｔ  ｎｕｌｌ，＝＞列挙
ＥｍｐｌｏｙｅｅＮｕｍｂｅｒ  ｎｕｍｂｅｒ  ｐｒｉｍａｒｙ  ｋｅｙ，＝＞識別
Ｓａｌａｒｙ  ｎｕｍｂｅｒ（８，２）ｎｏｔ  ｎｕｌｌ，＝＞測定
ＣｏｍｍｉｓｓｉｏｎＲａｔｅ  ｎｕｍｂｅｒ（４，２），＝＞測定
ＤｅｐａｒｔｍｅｎｔＮｕｍｂｅｒ  ｎｕｍｂｅｒ  ｒｅｆｅｒｅｎｃｅｓ  Ｄｅｐａｒｔｍｅｎｔｓ（ＤｅｐａｒｔｍｅｎｔＮｕｍｂｅｒ））；＝＞識別
ｃｒｅａｔｅ  ｔａｂｌｅ  Ｄｅｐａｒｔｍｅｎｔｓ
（Ｎａｍｅ  ｖａｒｃｈａｒ（６４）ｎｏｔ  ｎｕｌｌ，＝＞列挙
ＤｅｐａｒｔｍｅｎｔＮｕｍｂｅｒ  ｎｕｍｂｅｒ  ｐｒｉｍａｒｙ  ｋｅｙ，＝＞識別
ＲｅｇｉｏｎＮｕｍｂｅｒ  ｎｕｍｂｅｒ  ｒｅｆｅｒｅｎｃｅｓ  Ｒｅｇｉｏｎｓ（ＲｅｇｉｏｎＮｕｍｂｅｒ））；＝＞識別
ｃｒｅａｔｅ  ｔａｂｌｅ  Ｒｅｇｉｏｎｓ
（Ｎａｍｅ  ｖａｒｃｈａｒ（６４）ｎｏｔ  ｎｕｌｌ，＝＞列挙
ＲｅｇｉｏｎＮｕｍｂｅｒ  ｎｕｍｂｅｒ  ｐｒｉｍａｒｙ  ｋｅｙ）；＝＞識別
【０１８３】
上記を考慮すると、関係モデル内の要素パスについて知る必要がある情報だけが、関係スキーマから容易に突き止められることが理解されるであろう。
【０１８４】
アクセスモデル演算
【０１８５】
このアクセスモデルがサポートするデータ操作演算は以下の通りである。
【０１８６】
Ａ）新しいコレクションインスタンス全体をコレクションパスに加える。コレクションインスタンスに含まれるあらゆる要素インスタンスは、要素パスと値の対として個別に指定される。
【０１８７】
Ｂ）既存のコレクションインスタンス全体をコレクションパスから削除する。コレクションパス内に含まれるあらゆる要素インスタンスを含むコレクションインスタンス全体が除去される。
【０１８８】
Ｃ）要素インスタンスを、コレクションパスを有する既存のコレクションインスタンスに加える。要素インスタンスは要素パスと値の対として指定される。
【０１８９】
Ｄ）コレクションパス内の既存のコレクションインスタンスから要素インスタンスを削除する。要素インスタンスはそのパスのみによって指定される。
【０１９０】
Ｅ）要素インスタンス基準と一致するコレクションインスタンスを検索する。基準は、対象となる要素パスと要素インスタンス両方についての式を含む。
【０１９１】
これらの基本演算の組合せは、ＲＤＢＭＳといった従来のデータベースシステムにおいて見られるデータ操作演算をサポートするのに十分である。
【０１９２】
関係データベースシステムでは、
【０１９３】
特定の列値を有する新しい行の表への挿入は、
【０１９４】
Ａ）特定の要素インスタンス（列値）を含む新しいコレクションインスタンス（行）を挿入すること
によって実施される。
【０１９５】
列基準と一致する表からの行の問合せは、
【０１９６】
Ａ）必要な要素パス（列）基準と一致するコレクションインスタンス（行）を検索すること
によって実施される。
【０１９７】
列基準と一致する表からの行の削除は、
【０１９８】
Ａ）必要な要素パス（列）基準と一致するコレクションインスタンス（行）を検索すること、
【０１９９】
Ｂ）検索されたコレクションインスタンスを削除すること
によって実施される。
【０２００】
表の行の集合における列値の更新は、
【０２０１】
Ａ）必要な要素パス（列）基準と一致するコレクションインスタンス（行）を検索すること、
【０２０２】
Ｂ）検索された各コレクションインスタンス（行）から既存の要素インスタンス（列値）を除去すること、
【０２０３】
Ｃ）検索された各コレクションインスタンスに後継の要素インスタンス（列値）を追加すること
によって実施される。
【０２０４】
上記を考慮すると、アクセスモデルは、関係データベースシステムが必要とする基本データ操作演算をサポートすることが理解されるであろう。
【０２０５】
このアクセスモデルは、述語基準に合致するコレクションインスタンスだけが検索されるように１つまたは複数の要素パスに述語を適用することによるコレクションインスタンスの検索を可能にする。例えば、特定の従業員番号を有する従業員コレクションを、その従業員番号パスは必要な従業員番号を含むと断定することによって検索することが可能なはずである。
【０２０６】
述語の本質は、述語がそれに対して表現される要素パスの意図と分かちがたく結び付けられており、アクセスモデルは、意図ごとに以下の述語を許容する。
【０２０７】
Ａ）すべての意図。コレクションインスタンスは、任意の意図の要素パスにおける要素インスタンス存在または非存在に関して断定され得る。
【０２０８】
Ｂ）識別意図。コレクションインスタンスは、求められる識別情報に対する識別要素インスタンスの等価性に関して断定され得る。識別子は順序もメリットも含意せず、したがって、他のどの述語も適用されない。実際には、実世界の識別子は何らかの順序概念を含意する場合もあるが、これはこのアクセスモデルによっては知られず、想定もされない。
【０２０９】
Ｃ）測定意図。コレクションインスタンスは、制限された範囲内に含まれる測定要素インスタンスに関して断定され得る。測定値は、可能値の範囲上の単一点を表すため、測定値の一部を試験しようとする試みは行われ得ず、測定値の一部を一致させようとするあらゆる試みは測定値の内部表現についての何らかの知識を含意するものであり、それはこのアクセスモデルでは不可能であり、非決定的である。アクセスモデルは、共通の境界を使用して制限された範囲を単一点へ変形されることを可能にし、また、下限が負の無限大として表現され、かつ／または上限が正の無限大として表現されることも可能にする。
【０２１０】
Ｄ）列挙意図。コレクションインスタンスは、列挙要素インスタンスが列挙要素インスタンス内に１つまたは複数のプロパティを含むかどうかに関して断定され得る。
【０２１１】
Ｅ）不透明意図。不透明意図の要素インスタンスは、その存在または非存在以外の有用な情報を提供しない。
【０２１２】
したがって、各意図は、その意図に付随する特定の述語演算子と関連付けられ、以下の述語演算子が提供される。
【０２１３】
Ａ）演算子‘ｉｓ’。識別要素インスタンスが識別子と等価「である（‘ｉｓ’）」と断定する。
【０２１４】
Ｂ）演算子‘ｉｎ’。測定要素インスタンスが制限された範囲「内に（‘ｉｎ’）」含まれると断定する。
【０２１５】
Ｃ）演算子‘ｈａｓ’。列挙要素インスタンスが１つまたは複数のプロパティの所有権を「有する（‘ｈａｓ’）」と断定する。
【０２１６】
Ｄ）演算子‘ｅｘｉｓｔｓ’。要素インスタンスが「存在し（‘ｅｘｉｓｔｓ’）」、任意の意図の要素パスと共に使用され得るかどうか判定する。
【０２１７】
各述語演算子はコレクションインスタンスごとのブール値の結果を以下のように戻す。
【表７】
2013525881.tif 000009
【０２１８】
上記表では、各述語演算子が、要素パスｅを含むコレクションパスによって完全修飾された要素パスｅのコンテキストにおいて使用されている。
【０２１９】
以下の関係例に、各述語演算子の使用を例示する。
ｃ  ｉｓ  ｎｏｔ  ｎｕｌｌ；ｅｘｉｓｔｓ（Ｃ）に変換される
ｃ＝１２３４５６；ｉｓ（Ｃ，１２３４５６）に変換される
ｃ  ＢＥＴＷＥＥＮ  １  ＡＮＤ  １０；ｉｎ（Ｃ，１，１０）に変換される
ｃ  ＬＩＫＥ‘％ＪＯＨＮ％ＳＭＩＴＨ％’；ｈａｓ（Ｃ，‘ＪＯＨＮ’，‘ＳＭＩＴＨ’）に変換される
【０２２０】
上記の例では、Ｃは、Ｃが属する表名（コレクションパス）によって修飾されるものと想定される列名（要素パス）である。
【０２２１】
このアクセスモデルにおける述語演算子によってサポートされる基準は、ネイティブ・データ・モデルの演算子ほど豊富でない場合もある。例えば、‘ｈａｓ’演算子の表現力は、ＳＱＬのＬＩＫＥ演算子よりも制限される。しかし、これらの述語演算子は、コレクションインスタンスの厳密な上位集合が識別され、検索され、次いで、ネイティブ・データ・モデル演算子によってさらに縮小されることを可能にするのに十分な式を提供する。
【０２２２】
一実施形態では、‘ｉｓ’演算子は、任意の数の識別定数および述語をサポートし、識別要素インスタンスが定数のうちのいずれか１つと等価であると断定する。
【０２２３】
一実施形態では、‘ｉｎ’演算子は、測定要素インスタンスの囲い込みを決定するために左範囲および右範囲がそれぞれ包含的とみなされるべきか、それとも排他的とみなされるべきかを指定する左右の包含範囲限定標識をサポートする。
【０２２４】
一実施形態では、‘ｈａｓ’演算子は、各列挙要素インスタンスに、その一致性を求めるために適用される正規表現オペランドをサポートする。
【０２２５】
一実施形態では、各要素パスが複数の意図を有していてよく、あらゆる要素パスは、その測定意図または列挙意図以外に識別意図を有するものと仮定する。
【０２２６】
上記を考慮すると、アクセスモデルの述語演算子は、ネイティブ・データ・モデルにおいて可能な述語基準との等価性または有用な近等価性をサポートすることが理解されるであろう。
【０２２７】
識別意図を有する要素パスは、コレクションパス間の関係を表現することに関与してよく、複数のコレクションインスタンスの識別要素インスタンスの等価性によるそれらのコレクションインスタンスのバインドをサポートするために別の演算子が提供される。この演算子は、２つの要素パスにまたがる要素インスタンスの等価性を断定するバインド演算子である。バインド演算子は以下のように定義される。
【表８】
2013525881.tif 000010
【０２２８】
この演算子は、関係データモデルにおける内部等結合（ｉｎｎｅｒ  ｅｑｕｉ−ｊｏｉｎ）と等価である。例えば、
ｗｈｅｒｅ  Ｅｍｐｌｏｙｅｅｓ．ＤｅｐａｒｔｍｅｎｔＮｏ＝Ｄｅｐａｒｔｍｅｎｔｓ．ＤｅｐａｒｔｍｅｎｔＮｏ
といったＳＱＬステートメントにおける結合（ｊｏｉｎ）は、
【０２２９】
バインド演算子によって以下のように表現することができる。
ｂｉｎｄ（‘Ｅｍｐｌｏｙｅｅｓ．ＤｅｐａｒｔｍｅｎｔＮｏ’，‘Ｄｅｐａｒｔｍｅｎｔ．ＤｅｐａｒｔｍｅｎｔＮｏ’）
【０２３０】
この式は、‘Ｅｍｐｌｏｙｅｅｓ’および‘Ｄｅｐａｒｔｍｅｎｔｓ’のコレクションパスにおけるコレクションインスタンスの組合せごとに、それらが‘ＤｅｐａｒｔｍｅｎｔＮｏ’要素パスにおいて等価の要素インスタンスを有する場合に、「真」を戻す。
【０２３１】
上記を考慮すると、アクセスモデルは、関係モデルにおける共通の述語および等結合条件をサポートすることが理解されるであろう。
【０２３２】
明らかに、バインド演算子は、関係の外部結合（ｏｕｔｅｒ−ｊｏｉｎ）、交差結合（ｃｒｏｓｓ−ｊｏｉｎ）および自己結合（ｓｅｌｆ−ｊｏｉｎ）と等価のバインド演算をサポートするためのオプションを含むように拡張することができる。外部結合では、一方または両方のコレクションパスを外部結合標識と関連付けることができる。交差結合では、要素パスオペランドを省略することができる。自己結合では、同じコレクションパスが異なるエイリアスの下に表示され、事実上、各異なるエイリアスの下の別々のコレクションパスとして取り扱われるように、コレクションパス・エイリアス・オペランドが各コレクションパスと関連付けられる。これは、関係ＳＱＬで使用されるエイリアス機構と同様である。
【０２３３】
上記を考慮すると、アクセスモデルは、関係モデルにおける自己結合、交差結合および外部結合の条件をサポートすることが理解されるであろう。
【０２３４】
一実施形態では、‘ｂｉｎｄ’演算子は、同じ表内の列が相等性について比較される場合の関係問合せをモデル化するために、コレクションパスの共通のコレクションインスタンス内の異なる要素パス間の等結合をサポートする。
【０２３５】
このアクセスモデルは、関係が識別要素インスタンスの等価性によって実施されることを必要とし、コレクションパス間の関係が、コレクションパスのそれぞれの識別情報要素パスをバインドすることによって検索時に確立されることを可能にする。識別情報意図を有する任意の２つの要素パスが随意に一緒にバインドされてよく、このアクセスモデルは、それらの別々の要素パスが問合せ時に明示的に一緒にバインドされるまで、それらの要素パスが関係を実施することを知らなくてよい。ネイティブ・データベース・スキーマは、エンティティ間の明示的関係を知り得るが、これらの関係は、問合せ定義までこのアクセスモデルに明らかにされなくてもよいことに留意されたい。
【０２３６】
上記を考慮すると、アクセスモデルは、問合せする目的でエンティティ間の関係が表現される前にエンティティ間の関係の定義を必要としないことが理解されるであろう。
【０２３７】
このモデルは、任意の識別情報要素パスが任意の他の識別情報要素パスにバインドされ得ると仮定するが、測定、列挙および不透明の各要素パスは、等価性バインドを行う目的で等価性を表現することがないため、決してバインドされないことを必要とする。
【０２３８】
このアクセスモデルは、複数の条件および要素パスを組み込んだ複合式を作成するためのブール代数を使用した複数の述語演算子とバインド演算子の組合せを可能にする。
【０２３９】
ネイティブ・データ・モデルのステートメントの中には、複数の問合せを相互に組み合わせて単一のステートメントにし得るものもある。関係コンテキストでは、これは、副問合せ、および和集合（ｕｎｉｏｎ）や積集合（ｉｎｔｅｒｓｅｃｔｉｏｎ）といった集合演算を用いて行われる。個々の問合せには前述のアクセスモデル演算子によってサービスすることができ、複合ステートメントの論理は、問合せ実行エンジンによって解決することができる。
【０２４０】
バインド演算子解決
【０２４１】
以下で、述語演算子を独立に評価し、バインド条件を独立に適用して、複数のＣＰＵおよび記憶リソースが同時に適用されることを可能にするための複合ブール式全体のバインド演算子を解決するための方法を説明する。
【０２４２】
バインド演算子を解決するこの実施形態では、複合演算子式が論理和正規形（ＤＮＦ）で表現されなければならず、ＤＮＦは、それぞれが演算子リテラルの論理積を含む論理積項の論理和であることが必要とされる。
【０２４３】
あらゆる複合ブール式は、結合性、分配性、ド・モルガンの法則といったブールの公理および法則を使用することにより、ＤＮＦへとリファクタリングすることができることが別の文献で数学的に証明されている。ブール式をＤＮＦに変換するための方法は、別の文献で広範囲にわたって論じられており、ここではこれ以上考察しない。
【０２４４】
バインド演算子を解決するこの実施形態では、論理積項が、ＤＮＦの同じ論理積項内のどこかに出現するあらゆるコレクションパスについて少なくとも１つの述語演算子を含むことが必要とされる。この目的で、以下の自明の述語演算子がアクセスモデルによって提供される。
【表９】
2013525881.tif 000011
【０２４５】
バインド演算子を解決するこの実施形態では、各論理積項内で、それぞれ「真」または「偽」と普遍的に等しい演算子または論理積項が、以下のように除去されることが必要とされる。
【表１０】
2013525881.tif 000012
【０２４６】
バインド演算子を解決するこの実施形態では、各論理積項内で、共通の要素パスに対する２つ以上の演算子が、以下のように論理積項を簡略化するために単一の演算子に変形されることが必要とされる。
【表１１】
2013525881.tif 000013
【０２４７】
バインド演算子を解決するこの実施形態では、ｔｒｕｅ（）演算子は、同じコレクションパスについての別の述語演算子が同じ論理積項内にすでに存在する場合、論理積項から除去される。
【０２４８】
バインド演算子を解決するこの実施形態では、論理積項を可能な限り簡略化するために、変形規則が反復して適用される。
【０２４９】
バインド演算子を解決するこの実施形態では、論理積項は、同じＤＮＦ内の他の論理積項と同一である演算子とオペランドの組合せを含む論理積を除去することによって重複排除される。
【０２５０】
以下に、ＳＱＬのｗｈｅｒｅ節の、前述のアクセスモデル演算子のブールＤＮＦへの変換を例示する。
．．．ｗｈｅｒｅ（Ｅｍｐｌｏｙｅｅｓ．ｓａｌａｒｙ  ｂｅｔｗｅｅｎ  １００００  ａｎｄ  ３５０００）
ａｎｄ（Ｅｍｐｌｏｙｅｅｓ．Ｃｏｍｍｉｓｓｉｏｎ  ｉｓ  ｎｏｔ  ｎｕｌｌ）
ａｎｄ（Ｅｍｐｌｏｙｅｅｓ．ＤｅｐａｒｔｍｅｎｔＮｏ＝Ｄｅｐａｒｔｍｅｎｔｓ．ＤｅｐａｒｔｍｅｎｔＮｏ）
ａｎｄ（Ｄｅｐａｒｔｍｅｎｔｓ．ＲｅｇｉｏｎＮｏ＝Ｒｅｇｉｏｎｓ．ＲｅｇｉｏｎＮｏ）
ａｎｄ（（Ｒｅｇｉｏｎｓ．Ｎａｍｅ＝‘Ｎｏｒｔｈ’）ｏｒ  Ｒｅｇｉｏｎｓ．Ｎａｍｅ＝‘Ｅａｓｔ’））
【０２５１】
上記ＳＱＬ節は、前述のアクセスモデル演算子を使用すると、以下のブール式になる。
ｉｎ（‘Ｅｍｐｌｏｙｅｅｓ．Ｓａｌａｒｙ’，１００００，３５０００）
ａｎｄ  ｅｘｉｓｔｓ（‘Ｅｍｐｌｏｙｅｅｓ．Ｃｏｍｍｉｓｓｉｏｎ’）
ａｎｄ  ｂｉｎｄ（‘Ｅｍｐｌｏｙｅｅｓ．ＤｅｐａｒｔｍｅｎｔＮｏ’，‘Ｄｅｐａｒｔｍｅｎｔｓ．ＤｅｐａｒｔｍｅｎｔＮｏ’）
ａｎｄ  ｂｉｎｄ（‘Ｄｅｐａｒｔｍｅｎｔｓ．ＲｅｇｉｏｎＮｏ’，‘Ｒｅｇｉｏｎｓ．ＲｅｇｉｏｎＮｏ’）
ａｎｄ（（ｉｓ（‘Ｒｅｇｉｏｎｓ．Ｎａｍｅ’，‘Ｎｏｒｔｈ’）ｏｒ  ｉｓ（‘Ｒｅｇｉｏｎｓ．Ｎａｍｅ’，‘Ｅａｓｔ’））
【０２５２】
このブール式がＤＮＦに変換されると、以下になる。
（ｉｎ（‘Ｅｍｐｌｏｙｅｅｓ．Ｓａｌａｒｙ’，１００００，３５０００）
ａｎｄ  ｅｘｉｓｔｓ（‘Ｅｍｐｌｏｙｅｅｓ．Ｃｏｍｍｉｓｓｉｏｎ’）
ａｎｄ  ｂｉｎｄ（‘Ｅｍｐｌｏｙｅｅｓ．ＤｅｐａｒｔｍｅｎｔＮｏ’，‘Ｄｅｐａｒｔｍｅｎｔｓ．ＤｅｐａｒｔｍｅｎｔＮｏ’）
ａｎｄ  ｂｉｎｄ（‘Ｄｅｐａｒｔｍｅｎｔｓ．ＲｅｇｉｏｎＮｏ’，‘Ｒｅｇｉｏｎｓ．ＲｅｇｉｏｎＮｏ’）
ａｎｄ  ｉｓ（‘Ｒｅｇｉｏｎｓ．Ｎａｍｅ’，‘Ｎｏｒｔｈ’）
ａｎｄ  ｔｒｕｅ（‘Ｄｅｐａｒｔｍｅｎｔｓ’）
ｏｒ
（ｉｎ（“Ｅｍｐｌｏｙｅｅｓ．Ｓａｌａｒｙ”，１００００，３５０００）
ａｎｄ  ｅｘｉｓｔｓ（‘Ｅｍｐｌｏｙｅｅｓ．Ｃｏｍｍｉｓｓｉｏｎ’）
ａｎｄ  ｂｉｎｄ（‘Ｅｍｐｌｏｙｅｅｓ．ＤｅｐａｒｔｍｅｎｔＮｏ’，‘Ｄｅｐａｒｔｍｅｎｔｓ．ＤｅｐａｒｔｍｅｎｔＮｏ’）
ａｎｄ  ｂｉｎｄ（‘Ｄｅｐａｒｔｍｅｎｔｓ．ＲｅｇｉｏｎＮｏ’，‘Ｒｅｇｉｏｎｓ．ＲｅｇｉｏｎＮｏ’）
ａｎｄ  ｉｓ（‘Ｒｅｇｉｏｎｓ．Ｎａｍｅ’，‘Ｅａｓｔ’）
ａｎｄ  ｔｒｕｅ（‘Ｄｅｐａｒｔｍｅｎｔｓ’）
【０２５３】
ｔｒｕｅ（）演算子は、各論理積項において‘Ｄｅｐａｒｔｍｅｎｔｓ’コレクションパスのために導入されていることに留意されたい。というのは、ｔｒｕｅ（）演算子はバインド演算子内に出現するが、同じ論理積項において適用される述語演算子がないからである。
【０２５４】
バインド演算子を解決するこの実施形態では、各述語演算子が、コレクションインスタンスの集合を生成することによってそれ自体を評価することが必要とされる。この集合はコレクション集合と呼ばれ、述語演算子が「真」であるコレクションインスタンスごとに１メンバを含む。各集合メンバは以下の情報のベクトルである。
【０２５５】
識別情報。これは、コレクションのインスタンスを一意に識別する。本考察では、この識別情報は、コレクションパス内のコレクションインスタンスの順位であるものと仮定する。
【０２５６】
濃度。これは、メンバがバインド内で繰り返されなければならない回数を定義する。コレクション集合が最初に述語演算子によって生成されるとき、この濃度は常に１である。
【０２５７】
順序。これは、コレクションインスタンスがバインドされなければならない順番を定義する。コレクション集合が最初に述語演算子によって生成されるとき、この順序は常に０である。
【０２５８】
したがって、上記の例では、ｉｎ（“Ｅｍｐｌｏｙｅｅｓ．Ｓａｌａｒｙ”，１００００，３５０００）についての演算子評価は、以下のコレクション集合になるはずである。
【表１２】
2013525881.tif 000014
【０２５９】
ｅｘｉｓｔｓ（‘Ｅｍｐｌｏｙｅｅｓ．Ｃｏｍｍｉｓｓｉｏｎ’）についての演算子評価は、以下のコレクション集合になるはずである。
【表１３】
2013525881.tif 000015
【０２６０】
バインド演算子を解決するこの実施形態では、論理積項内の同じコレクションパスに対応するコレクション集合が、次いで、あらゆる集合に出現しないメンバを廃棄するために組み合わされることが必要とされる。
【０２６１】
例では、これは、上記２つのコレクション集合から組み合わされるときに、‘Ｅｍｐｌｏｙｅｅｓ’パスについて以下のコレクション集合をもたらす。
【表１４】
2013525881.tif 000016
【０２６２】
一実施形態では、述語演算子ごとに生成されるコレクション集合は、同じ演算子とオペランドの組合せが別の場所に出現する場合、（再生成するのではなく）論理積項間で共用することができる。
【０２６３】
また、一実施形態では、組み合わされたコレクション集合が全く同じ演算子とオペランドが組み合わさったものである場合、それらのコレクション集合を共用することもできる。この例では、上記の組み合わされたコレクション集合は、それが同じ演算子とオペランドとの組合せから生成されたものであるため、両方の論理積項間で共用することができる。
【０２６４】
上記の例の最初の論理積項に基づいて、‘Ｅｍｐｌｏｙｅｅｓ’、‘Ｄｅｐａｒｔｍｅｎｔ’および‘Ｒｅｇｉｏｎｓ’の各コレクションパスについてのコレクション集合は、以下になるはずである。
【表１５】
2013525881.tif 000017
【表１６】
2013525881.tif 000018
【表１７】
2013525881.tif 000019
【０２６５】
この例では、‘Ｅｍｐｌｏｙｅｅ’コレクションパスに対する述語演算子（‘ｉｎ’および‘ｅｘｉｓｔｓ’）は、ＤＮＦ式の両方の論理積項において同じオペランドと共に出現し、したがって、それらから生成されるコレクション集合は、両方の論理積項間で共用することができることに留意されたい。‘Ｄｅｐａｒｔｍｅｎｔｓ’パスにおける‘ｔｒｕｅ’演算子についても同様である。他方、‘Ｒｅｇｉｏｎｓ’パスについての‘ｉｓ’演算子は、異なるオペランドを使用するため共用することができない。
【０２６６】
バインド演算子を解決するこの実施形態では、次いで、あらゆるコレクション集合が、コレクションパスごとにバインド順序および濃度を更新するために、同じ論理積項内に出現するバインド演算子によってバインドされる。コレクション集合をバインドするための方法は後で詳しく説明するが、本考察では、バインドプロセスは、コレクションパスごとに以下のコレクション集合を生成するはずである。
【表１８】
2013525881.tif 000020
【表１９】
2013525881.tif 000021
【表２０】
2013525881.tif 000022
【０２６７】
この実施形態では、バインドプロセスが完了した後で、問合せが必要とする結果を具体化するために、コレクションインスタンスを、コレクション集合ごとに独立に並行して検索することができる。コレクション集合ごとのコレクションインスタンスは、集合順序の順に戻され、各コレクションインスタンスがその集合濃度に従って繰り返される。濃度Ｎでは、コレクションインスタンスは、濃度０でコレクションインスタンスが完全に省かれるように、正確にＮ回出現する。
【０２６８】
この実施形態では、最終結果において必要とされず、バインド依存関係のためにのみ出現するにすぎないコレクションパスについてのコレクション集合は、廃棄することができ、検索する必要がない。
【０２６９】
この例は、‘Ｎａｍｅ’要素パスだけが、‘Ｅｍｐｌｏｙｅｅｓ’コレクションパスおよび‘Ｒｅｇｉｏｎ’コレクションパスから必要とされる場合、以下の結果をもたらすはずである。
【表２１】
2013525881.tif 000023
【０２７０】
この例は、単一の論理積項についての必要な結果を提供し、上記プロセスは、ＤＮＦ式内のすべての論理積項について繰り返されなければならない。
【０２７１】
この実施形態では、各論理積項からの結果は、独立して同時に生成され、その後に累積されて、最終の完全な結果が提供される。結果が論理積項間で重複する可能性がある。したがって、各論理積項からの結果は、累積時に重複排除されなければならない。
【０２７２】
一実施形態では、これは、論理積結果が累積される際にコレクションインスタンス識別情報のベクトルのハッシュマップを生成することによってなされ、前の結果と符合するベクトル識別情報を有する結果を廃棄することができる。
【０２７３】
上記を考慮すると、この検索の方法は、各コレクションパス内および各論理積項内のコレクションインスタンスが、独立に並行して処理されることを可能にし、複数のハードウェアリソースが同時に用いられることを可能にすることが理解されるであろう。
【０２７４】
バインド伝搬
【０２７５】
以下で、問合せ結果が記憶から検索される前に組み合わされる論理積項内のコレクション集合をバインドし、各コレクションパスからの問合せ結果を独立して検索されることを可能にするための方法を説明する。
【０２７６】
前述のように、バインド演算子は、２つの完全修飾された要素パスを受け入れ、全ＤＮＦ式の一部を形成する論理積のコンテキスト内で使用される。各バインド演算子は、同じ論理積項内の正確に２つのコレクション集合に結合される。
【０２７７】
バインド演算子内で、‘ｃｏｒｒｅｌａｔｅｄ  ｂｉｎｄｉｎｇ（相関バインド）’は、演算子の一方の側のコレクション集合におけるコレクションインスタンス内の所与の要素インスタンスが、バインド演算子の他方の側のコレクション集合における１つまたは複数のコレクションインスタンスに少なくとも１つの等価の要素インスタンスを有する場合に発生する。
【０２７８】
上記のコレクション集合の例として、ｂｉｎｄ（‘Ｅｍｐｌｏｙｅｅｓ．ＤｅｐａｒｔｍｅｎｔＮｕｍｂｅｒ’，‘Ｄｅｐａｒｔｍｅｎｔｓ．ＤｅｐａｒｔｍｅｎｔＮｕｍｂｅｒ’）を考える。
【表２２】
2013525881.tif 000024
【表２３】
2013525881.tif 000025
【表２４】
2013525881.tif 000026
【表２５】
2013525881.tif 000027
【０２７９】
‘Ｅｍｐｌｏｙｅｅｓ’コレクションパスにおけるコレクション識別情報２および３は、コレクション識別情報２の‘Ｄｅｐａｒｔｍｅｎｔｓ’コレクションパスに相関バインドを有する２００という‘ＤｅｐａｒｔｍｅｎｔＮｕｍｂｅｒ’を有することが示されている。しかし、‘Ｄｅｐａｒｔｍｅｎｔｓ’コレクションパスでは、コレクション識別情報３は相関バインドを持たない。
【０２８０】
各相関バインドは、バインドの各側の一致する要素インスタンスの数を反映する濃度を有する。よって、相関バインドの一方の側の所与の要素インスタンスについて、他方の側に、バインド濃度を定義するいくつかの等価の要素インスタンスがあることになる。
【０２８１】
上記の例では、‘Ｅｍｐｌｏｙｅｅｓ’コレクションパスにおけるコレクション識別情報２および３についてのバインド濃度はバインド濃度１を有し、‘Ｄｅｐａｒｔｍｅｎｔｓ’コレクションパスにおいては、コレクション識別情報２は（同じ相関バインドを越えて逆方向に）バインド濃度２を有する。
【０２８２】
この実施形態では、単一の論理積項内でバインドプロセスを実施するのに以下の方法が使用される。方法は、任意の配置にある互いに異なるコレクション集合の対を結合する任意の数のバインド演算子を有する任意の数のコレクション集合を仮定する。バインド演算子は、コレクション集合をそれ自体にバインドすることができない。
【０２８３】
バインドプロセスのこの実施形態では、訪問序数属性が、コレクション集合のメンバについてのすでに説明したベクトルに含まれる。この訪問序数には、バインドの前に０の値が割り当てられる。
【０２８４】
したがって、コレクションインスタンス１１、１２、１３を有するコレクション集合は、バインドプロセスの前には、以下のように見えるはずである。
【表２６】
2013525881.tif 000028
【０２８５】
バインドがなければ、このコレクション集合は、コレクションインスタンス１１、１２、１３を、この順に、反復なしでフェッチするのに使用されるはずである。
【０２８６】
この実施形態では、バインドプロセスの間に、バインド演算子およびコレクション集合が特定の順に訪問され、各バインド演算子に一意の訪問序数が割り当てられ、各コレクション集合に一意の訪問序数および伝搬数が割り当てられる。
【０２８７】
この実施形態では、バインド解決のプロセスは順に３つの段階に従い、以下のように、前の段階が完了した後に初めて後続の段階が開始される。
【０２８８】
段階１
【０２８９】
この段階は、原始選択段階と呼ばれる。
【０２９０】
（論理積項内の）単一のコレクション集合が原始コレクション集合として選択される。集合は任意に選択されてよいが、有利には、選択される集合は、問合せ結果に含まれるコレクションパスに対応する集合の中の最小集合とすることができる。
【０２９１】
選択された原始集合には訪問序数０が割り当てられる。
【０２９２】
原始集合のメンバは、その順序を、集合内の最初のメンバを１から開始する、厳密に単調に増加する順序で更新させる。上記集合が選択された場合、それは以下になるはずである。
【表２７】
2013525881.tif 000029
【０２９３】
段階２
【０２９４】
この段階はメンバ伝搬段階と呼ばれ、あらゆるバインド演算子をまたいでメンバを伝搬することを伴う。
【０２９５】
この段階の間に、バインド演算子訪問の順が決定され、記録される。各バインド演算子には、選択される最初のバインド演算子を１から開始し、選択される後続バインド演算子ごとに増分する訪問序数が割り当てられる。
【０２９６】
各バインド演算子は２つのコレクション集合を結合し、それら２つのうち、訪問序数が割り当てられていない、または２つのコレクション集合のうち最低の訪問序数を有するコレクション集合に、そのバインド演算子の訪問序数が割り当てられる。
【０２９７】
訪問序数１が割り当てられる最初のバインド演算子は、原始集合に直接接続されたバインド演算子のうちの１つから任意に選択される。原始集合に対してバインド演算子の反対側にあるコレクション集合には訪問序数１が割り当てられる。
【０２９８】
この実施形態では、コレクション集合のメンバは、（下位の訪問序数を有する）起点集合から選択されたバインド演算子に接続された（上位の訪問序数を有する）終点集合まで伝搬される。
【０２９９】
現在伝搬しているバインド演算子の訪問序数より１小さい訪問序数を有する起点集合内の非ゼロ濃度メンバごとに、メンバが複製され、起点メンバと符合するバインドを有する終点メンバごとに終点集合内で追加される。
【０３００】
終点集合に追加されるメンバごとに、コレクション識別情報が、そのコピー元の終点メンバと同じになるように割り当てられ、訪問序数に、伝搬するバインド演算子の訪問序数が割り当てられ、順序が起点メンバから割り当てられ、濃度が１として割り当てられる。
【０３０１】
この実施形態では、終点集合内に対応するバインドを持たない起点集合内のメンバは、その濃度に０を割り当てさせる。その後、起点メンバはボイドとみなされ、それ以上伝搬されない。
【０３０２】
この実施形態では、メンバは、メンバ構成順に起点集合から伝搬される。他の実施形態では別の順を選択してもよい。
【０３０３】
現在の訪問序数を有するすべての伝搬されたエントリの濃度の和が、その伝搬数として終点集合に割り当てられる。終点集合についての伝搬数が前の割り当てから低減される場合には、割り当てられた訪問序数を有する終点集合に接続され、そのバインド演算子と同じ訪問序数を有する別のコレクション集合に接続された任意の他のバインド演算子が、その演算子訪問序数を割り当て解除させる。
【０３０４】
その後、次のバインド演算子が、訪問序数が割り当てられておらず、訪問序数が割り当てられている集合に直接接続されたすべてのバインド演算子の中から選択され、その中から、最高の訪問序数が割り当てられたコレクション集合に接続されているバインド演算子が選択され、選択され得るバインド演算子のうちの１つまたは複数が、他端において訪問序数がすでに割り当てられた集合にも接続されている場合には、最低の訪問序数を有する集合に接続された演算子が選択される。
【０３０５】
選択されたバインド演算子および演算子の他方の側の終点集合に、次の訪問序数が割り当てられる。他方の側の集合に訪問序数がすでに割り当てられている場合、その訪問序数は新しい訪問序数で上書きされる。
【０３０６】
これは、訪問序数がなく、訪問序数が割り当てられた集合に接続されたバインド演算子がそれ以上見つからなくなるまで繰り返される。この段階の終わりに、訪問序数のない集合が存在する場合、問合せは誤っているとみなされ、問合せ全部が打ち切られる。
【０３０７】
最初の集合が原始集合である以下の２つのコレクション集合を考える。この例では、これらの集合間に訪問序数１を有するバインド演算子があるものと仮定し、明確にするために、その終点識別情報において対応する添字を有するメンバだけがバインド演算子をまたいで対応するバインドを有するものと仮定する。
【０３０８】
コレクションパス１（メンバ伝搬の前）
【表２８】
2013525881.tif 000030
【０３０９】
コレクションパス２（メンバ伝搬の前）
【表２９】
2013525881.tif 000031
【０３１０】
メンバ１１Ｂの伝搬は以下の終点コレクション集合をもたらす。
【０３１１】
コレクションパス２（演算子１によりメンバ１１Ｂを伝搬した後）
【表３０】
2013525881.tif 000032
【０３１２】
メンバ１２Ａは対応するバインドを持たず、したがって、終点集合にはメンバが作成されず、このエントリの濃度は起点集合において０に設定される。これは起点集合について以下をもたらす。
【０３１３】
コレクションパス１（メンバ１２Ａを伝搬した後）
【表３１】
2013525881.tif 000033
【０３１４】
メンバ１３Ｃの伝搬は以下の終点集合をもたらす。
【０３１５】
コレクションパス２（演算子１によりすべてのメンバを伝搬した後）
【表３２】
2013525881.tif 000034
【０３１６】
上記終点集合は、次いで、別のバインド演算子により別の集合へ伝搬されてもよいが、訪問序数１を有するメンバだけが伝搬されるはずであることに留意されたい。
【０３１７】
段階３
【０３１８】
この段階は濃度反映段階と呼ばれ、各バインド演算子が厳密に逆訪問序数順に訪問される。訪問されるバインド演算子は、反映演算子と呼ばれる。
【０３１９】
各反映演算子において、反映演算子より１小さい訪問序数を有する起点集合内の各メンバの濃度は、起点メンバと同じ順序、および反映演算子と同じ訪問序数を有するすべての終点メンバについての濃度の和で乗算される。
【０３２０】
上記の例では、起点集合の濃度は、以下のように更新されるはずである。
【０３２１】
コレクションパス１（濃度反映後）
【表３３】
2013525881.tif 000035
【０３２２】
コレクションパス２（濃度反映後）
【表３４】
2013525881.tif 000036
【０３２３】
以下で、どのようにして４つのコレクション集合が訪問され、バインドプロセスの第２の段階の間にその訪問序数を割り当てさせるかの一例を示す。長方形でコレクション集合を表し、線でコレクション集合間のバインド演算子を表す。
【０３２４】
図９：原始集合が選択され、訪問序数０が割り当てられる。
【０３２５】
図１０：第１のバインド演算子が、原始集合に接続されたバインド演算子の中から選択され、選択されたバインド演算子に訪問序数１が割り当てられる。選択されたバインド演算子の他方の側の終点集合には、そのバインド演算子と同じ訪問序数が割り当てられる。
【０３２６】
図１１：第２のバインド演算子が、訪問序数が割り当てられておらず、最高の訪問序数を有するコレクション集合に接続されたバインド演算子の中から選択される。
【０３２７】
図１２：演算子２についての終点集合の伝搬数が低減される場合には、そのコレクション集合に接続され、他端のコレクション集合訪問序数と同じ演算子訪問序数を有する任意の他の演算子が、その演算子訪問序数を割り当て解除させる。
【０３２８】
図１３：次のバインド演算子が、訪問序数が割り当てられておらず、最高の訪問序数を有するコレクション集合に接続されたバインド演算子の中から選択される。
【０３２９】
図１４：集合３の伝搬数が演算子３によって低減されない場合には、後続の演算子が図示のように割り当てられることになる。
【０３３０】
訪問序数が割り当てられていない演算子がそれ以上見つからなくなり、バインドプロセスのこの段階が完了する。すべての集合に序数が割り当てられており、したがって、バインドは十分に形成されたとみなされ、次の段階に進むことができる。
【０３３１】
この実施形態では、３つのバインド段階すべてが完了した後で、コレクション集合ごとのコレクションインスタンスを、問合せ具体化のために独立して検索し、その独立の結果をマージすることができる。コレクションインスタンスは、以下のように、コレクション集合自体に割り当てられた訪問序数と同じ訪問序数を有するメンバについてのみ検索される。
【０３３２】
濃度０のコレクション集合内の各メンバは無視され、濃度１の各エントリは１回検索され、１より大きい濃度の各エントリは１回検索されるが、バインドの濃度を守るために複製される。
【０３３３】
一実施形態では、各集合メンバが並び順に検索され、同一の順序番号を有するエントリがコレクション識別情報順にフェッチされる。
【０３３４】
代替の実施形態では、メンバが、（並び順にではなく）コレクションインスタンスの識別子の順にまず検索され、結果が、マージの直前に並び順にメモリ内にソートされる。
【０３３５】
代替の実施形態では、共通の記憶域内の連続したコレクションインスタンスまたはほぼ連続したコレクションインスタンスは、１回の読取り要求において記憶から検索され得る。
【０３３６】
バインドプロセスによって操作される一時的構造は、論理積項の迅速な解決を支援するために物理メモリ内に置くことができることが理解されるであろう。
【０３３７】
バインドプロセスは、問合せが必要とする結果を具体化する前に、物理メモリ内で動作し、完了することができることが理解されるであろう。
【０３３８】
論理積項が完全に解決された後で、記憶エンジンは、問合せが必要とする結果を得るために、各コレクション集合を独立に並行して検索することができることが理解されるであろう。
【０３３９】
外部結合のためにマークされたコレクションパスについての結果は、ゼロ濃度を有するコレクション集合の中からコレクションインスタンスを検索し、それらを最終結果に含めることによって解決される。
【０３４０】
交差結合は、起点コレクション集合内のあらゆるメンバを、交差結合のためにマークされたバインド演算子の向こう側の終点コレクション集合内のあらゆるメンバと相関させることによって解決される。
【０３４１】
ある好都合な実施形態では、ｔｒｕｅ（）演算子のコレクション集合は、それをバインドしようとする最初のｂｉｎｄ（）演算子によって遅延評価され、ｔｒｕｅ（）演算子のコレクション集合は、起点コレクション集合の対応するバインドから作成される。この実施形態では、ｔｒｕｅ（）演算子のコレクション集合は決して原始集合として選択されない。この遅延評価の実施形態では、ｔｒｕｅ（）演算子のコレクション集合のサイズは、先行評価と比べてずっと縮小される可能性が高いことが理解されるであろう。
【０３４２】
記憶構造
【０３４３】
以下で、前述のアクセスモデルを支援してデータを効率よく存続させ、検索するのに使用される記憶構造を説明する。
【０３４４】
記憶は多数の線形トンネルとして構築され、各トンネルは記憶アドレス空間と整合し、１つのコレクションパスおよび／または１つの要素パス、１つの演算子およびオペランドの部分集合に関連するコレクションインスタンスに関する情報を含む。
【０３４５】
単一の要素パストンネルは、要素パス内の要素インスタンスの大きな母集団についてのあらゆる要素インスタンスに関する部分情報を提供する。コレクションパストンネルは、コレクションパス内の単一のコレクションインスタンスに関する完全な情報を提供する。
【０３４６】
トンネルの構造はアクセスモデル演算子およびトンネルがサポートする必要のある演算に従って変化する。各トンネルは、あらゆるトンネルが記憶アドレス次元と最適に整合し、各演算子がそれに関連するトンネルを効率よくトラバースすることができるように、各トンネルに対応する演算子をサポートするのに必要な最小限の情報を含む。
【０３４７】
セル内に含まれる最小限の情報は、関連するアクセスモデル演算子が、エンティティインスタンスが所与のオペランドに関連する可能性または不可能性を指示するのに十分でありさえすればよい。
【０３４８】
アクセスモデル内の演算子ごとに異なるトンネルファミリが提供される。連結トンネルは、アクセスモデルＩＳ演算子をサポートする情報を提供し、特性トンネルは、アクセスモデルＨＡＳ演算子をサポートする情報を提供し、組合せトンネルは、アクセスモデルＩＮ演算子をサポートする情報を提供し、これらのファミリはそれぞれ、ＥＸＩＳＴＳ演算子をサポートするトンネルを提供し、他方、集合トンネルは、効率のよいコレクション検索をサポートする情報を提供する。
【０３４９】
各トンネルはセルの線形シーケンスとして配置され、それによって、トンネルが逆時系列順にトラバースされる間に新しいトンネルおよび新しいセルが時系列順に追加される。トンネルおよびセルは、探査が必要に応じてトンネル間を移動することができるようにトンネル間のセルが符合するように配置される。これは図１５に示されている。
【０３５０】
各トンネルファミリは、粘着性と速度両方の特性を有するとみなされる。粘着性は、どれ程の情報がトンネル内のコレクションインスタンスの周りで局所的に保持されるかを指示する。トンネルの速度は、トンネル内で局所的に保持されるコレクションインスタンス母集団のサイズを指示する。これらの特性は、相互に反対のものであり、そのため、特定のコレクションインスタンスの周りに局所的に多くの情報を含む高度に粘着性のトンネルは、母集団全体に関する情報をほとんど含まない。
【０３５１】
アクセスモデルの述語演算子およびバインド演算子に関連するトンネルは、高い速度および低い粘着性を呈する。コレクションインスタンス検索に使用されるトンネルは、高い粘着性および低い速度を呈する。
【０３５２】
集合トンネルは、要素インスタンスをコレクションインスタンスへグループ化する。あらゆるコレクションパスはあらゆるコレクションインスタンスについて別々のトンネルを含み、そのコレクショントンネルをトラバースすることによってコレクションインスタンス全体を検索することができ、コレクションインスタンスを迅速に検索することができる。これらのトンネルは、各コレクションインスタンス内の要素インスタンスの粘着性が高いために、コレクションインスタンス全体にわたって非常に低い速度を有するとみなされる。
【０３５３】
連結トンネルは、識別要素インスタンスをその等価類似性によってグループ化する。連結トンネルトンネルは、ＩＳアクセスモデル演算子およびＢＩＮＤアクセスモデル演算子をサポートし、ＩＳ演算子が、演算子オペランドと等価の識別要素インスタンスを含むコレクションインスタンスについてのコレクション集合を生成することを可能にすると同時に、ＢＩＮＤ演算子が他のアクセスモデル演算子によって作成されるコレクション集合間の相関バインドを効率よく解決することを可能にする。識別要素パスごとに複数の連結トンネルがある。これらのトンネルは、コレクションインスタンス全体にわたって非常に高い速度を有するとみなされる。
【０３５４】
特性トンネルは、列挙要素インスタンスをそれらが含むプロパティによってグループ化する。特性トンネルは、ＨＡＳアクセスモデル演算子をサポートし、ＨＡＳアクセスモデル演算子が、演算子オペランドと等価の１つまたは複数のプロパティを含む列挙要素インスタンスを有するコレクションインスタンスについてのコレクション集合を生成することを可能にする。識別要素パスごとに複数の特性トンネルがある。これらのトンネルは、コレクションインスタンス全体にわたって高い速度を有するとみなされる。
【０３５５】
組合せトンネルは、小数点に対して測定要素インスタンスの部分的な大きさをグループ化する。組合せトンネルは、ＩＮアクセスモデル演算子をサポートし、ＩＮアクセスモデル演算子が、演算子オペランドによって範囲を定められる測定要素インスタンスを有するコレクションインスタンスについてのコレクション集合を生成することを可能にする。また組合せトンネルは集約演算もサポートし、測定要素インスタンスが完全なコレクションインスタンスを参照せずに、累積され、分類されることを可能にする。識別要素パスごとに複数の組合せトンネルがある。これらのトンネルは、コレクションインスタンス全体にわたって中程度の速度を有するとみなされる。
【０３５６】
あらゆる要素パスは、ＥＸＩＳＴＳアクセスモデル演算子をサポートするために対応する存在トンネルを有する。要素パスごとに１つの存在トンネルがある。これらのトンネルは、コレクションインスタンス全体にわたって高い速度を有するとみなされる。
【０３５７】
したがって、この実施形態では、述語演算子を有するあらゆる要素パスについて包括的なトンネルファミリが維持される。
【０３５８】
問合せで使用される述語演算子はトラバースされるべきトンネルファミリを決定し、そのオペランドは、コレクションパス、要素パスおよびトンネル番号を決定する。
【０３５９】
上記を考慮すると、どんな述語演算子も、別々の索引構造を必要とせず、存在する場合も存在しない場合もある索引構造の要求に応えるための多数の最適化戦略も必要とせずに、コレクションインスタンスの母集団を効率よくトラバースすることができることが理解されるであろう。
【０３６０】
トンネルの同質のセル構造は、複数のデータ項目に同時に作用するベクトル命令を提供するＣＰＵによる処理に適することが理解されるであろう。
【０３６１】
演算子が評価されるときに、演算子は、集合の各メンバが評価に含まれる各コレクションインスタンスに関する情報を提供するメモリベースのコレクション集合を作成する。前述のように、演算子は、演算子オペランドに対するコレクションインスタンスの適合性の可能性または不可能性の指示を提供することができさえすればよいが、演算子は、適合性の完全な確実性を有していてもよい。したがって、各コレクション集合メンバは、その後の問合せ具体化が、要素の検査および検証を目的とするさらなる具体化が必要かどうか判定することができるように、確実性の標識を含む。
【０３６２】
好都合には、コレクション集合を組合せ、相関させるためのコレクション集合をバインドするプロセスは、不確実なコレクション集合メンバを廃棄することによって確実性を高めるように働く。
【０３６３】
時間は、あらゆるフレームが、定義済みのエポック日付に対する固定の定義済みの時間間隔を含むための絶対時間フレームへ細分され、それによって、エポック日付が時間フレーム０の開始時に発生するように、任意の所与の時間に、エポック日付以来発生した時間フレーム間隔の数から導出されたフレーム番号が割り当てられる。
【０３６４】
エポック日付およびフレームの持続期間は、フレーム番号が正であり、その大きさが妥当な精度内に含まれ得るように選択される。
【０３６５】
ある好都合な実施形態では、エポック日付が現在の世紀の開始時になるように選択され、フレーム持続期間が１時間になるように選択される。
【０３６６】
すべてのトンネルは、任意の所与の時間フレームがすべてのトンネルにわたって符合するように絶対時間フレームへ細分される。トンネル全体にわたるフレームの整合は、検索演算が、フレーム境界のところでトンネルファミリを切り換え、必要なナビゲーションの方向に最適なトンネルファミリを選択することを可能にする。例えば、特定のコレクションインスタンスを求めるサーチは、最初に連結トンネルを使用し、可能性の高い要素インスタンスセルが見つかったときに、対応するフレーム内の集合ファミリに切り換えてもよい。
【０３６７】
この実施形態では、トンネルは１つまたは複数のファイル内の連続したセルシーケンスとして記憶され、それによって、各トンネルファミリ（集合、連結、特性、組合せ）がファイルの複数のシーケンスを有し、それによって、コレクションパスごとに１つのファイルシーケンスが生じ、各ファイルシーケンスは時間フレームごとに別々のファイルを有する。各ファイルシーケンスは、トンネルファミリおよびコレクションパス識別情報から決定されるディレクトリパス内に位置し、各ファイルはその名前の中にフレーム番号を含む。この構成が図１６に示されている。
【０３６８】
複数の互いに異なるデータベースが存在する場合、データベースごとのディレクトリ構造は、別々のデータベースパスの下に置かれることになる。
【０３６９】
代替の実施形態では、トンネルファミリ（集合、特性、組合せ、連結）は、階層の最上部に配置され、各データベースパスはそれらの直下にある。これは、トンネルファミリが、トンネルファミリごとに最適な性能特性を有する異なる記憶システム上に容易に配置されることを可能にする。
【０３７０】
したがって、この実施形態では、各ファイルが、フレーム内のトンネルについてのセルの別々の連続したシーケンスを含み、各トンネルは、特定のコレクションパス、要素パス、演算子および演算子のオペランドに関連し、アクセスモデル演算子が、最小限の読取り要求で記憶から関連するトンネルを読み取り、最小限のキャッシュ汚染でトンネルをナビゲートすることが可能になる。
【０３７１】
したがって、この実施形態では、類似の作成時刻を有するコレクションインスタンスの母集団は、共通のフレームファイル内に局在化される。
【０３７２】
上記を考慮すると、類似の経過時間のコレクションインスタンスの大きな母集団を、それらが配置されているフレームファイルを除去することによって削除することができることが理解されるであろう。
【０３７３】
代替の実施形態では、フレーム境界が、それらがかかわるコレクションインスタンスの数についての定義済みの閾値によって決定され、それによってフレームは、各コレクションパス内で閾値に達した後で閉じられる。
【０３７４】
上記を考慮すると、個々のコレクションパス母集団のサイズは、最も古いフレームファイルのうちの１つまたは複数を除去することによって正確に管理することができることが理解されるであろう。
【０３７５】
業務（ＯＬＴＰ）問合せは性質上選択的であり、大多数はＩＳアクセスモデル演算子およびＢＩＮＤアクセスモデル演算子を使用し、したがって、業務問合せのためのナビゲーションは、関連するコレクションインスタンスを迅速に識別するために１つまたは複数の連結（非常に高い速度）トンネルに沿って行われ、続いて、特定のコレクション・インスタンス・データを検索するための１つまたは複数の集合トンネル（低い速度）に沿ったナビゲーションが行われる可能性が高い。バインド解決作業の大部分は、物理メモリ内で発生し、少数の特定のコレクション・インスタンス・アドレスをもたらし、問合せ結果が、少数のランダム記憶読取り演算によって迅速に戻されることを可能にする。
【０３７６】
分析（ＯＬＡＰ）問合せは、広い範囲に及び、集合トンネルを使用する可能性が全くなく、連結（非常に高い速度）、特性（高い速度）および組合せトンネル（中程度の速度）内に完全に含まれ、ＯＬＡＰ問合せが、コレクションインスタンスの母集団を迅速にトラバースすることを可能にする。集約作業の大部分は、少数の大きな順次記憶の読取り演算によってメモリへ読み込むことができるランクトンネル上で直接行うことができる。
【０３７７】
有利には、コレクションパスおよびトンネルファミリによるファイルシーケンスの分離は、異なるトンネルファミリが、異なる性能特性を有する異なるファイル記憶域上に配置されることを可能にする。集合トンネルは、大多数は業務アクセスに使用され、短い集合トンネルを含む。これらのファイルは、小さいランダム読取り要求に最適な記憶媒体上に配置することができ、他のトンネルファミリは、大きい順次読取り要求に最適な記憶媒体上に配置することができる。
【０３７８】
上記を考慮すると、選択的問合せも一括問合せも、業務作業負荷と分析作業負荷の両方について効率よくサポートすることができることが理解されるであろう。
【０３７９】
この実施形態では、トンネルは、正方向の時系列順に追加され、コレクション追加およびコレクション反転セマンティクスを使用して、コレクションインスタンスを作成し、削除し、更新する。コレクションの削除は、元のコレクションインスタンスに関連するすべての演算が後に続く反転を認識するように、元のコレクションインスタンスに関連するすべてのトンネルにコレクション反転を追加することを伴う。
【０３８０】
したがって、この実施形態では、置き換え更新演算が行われず、コレクションパス内のトンネルファミリへのすべての更新が局在化される。
【０３８１】
上記を考慮すると、コレクションパス内の任意の所与のトンネルまたは任意の所与のトンネルファミリへのすべての更新は、１回または最小限の回数の記憶書込み要求を使用して効率よく適用することができることが理解されるであろう。
【０３８２】
上記を考慮すると、任意の所与のトンネルまたは任意の所与のトンネルファミリへのすべての更新は、最新の記憶システムが示す高転送速度を利用することができることが理解されるであろう。
【０３８３】
上記を考慮すると、完全なライフサイクル履歴があらゆるコレクションインスタンスについて維持されることが理解されるであろう。
【０３８４】
上記を考慮すると、コンプライアンスおよび調査の監査から生じる問合せを解決するのに必要なデータが保持されることが理解されるであろう。
【０３８５】
上記を考慮すると、述語演算子は、述語演算子がその問合せを、履歴時点問合せを都合よく提供する履歴時間フレームから開始し得るように任意選択の時相オペランドを含むことができることが理解されるであろう。
【０３８６】
コレクションインスタンスは、それが最初に作成された後で初めて反転させることができる。この実施形態では、コレクションインスタンスの存在を効率よく判定することができ、反転されたコレクションインスタンスを効果的に廃棄することができるように、コレクション反転を、それに対応する先のコレクション追加演算の前に検出させるために、トンネルが逆時系列順にトラバースされる。
【０３８７】
上記を考慮すると、述語演算子は、演算子ナビゲーションが始まって以後作成されたセルに遭遇することはなく、有利には、それらに対応する必要がないことが理解されるであろう。
【０３８８】
ある代替の実施形態では、指定されたコレクションパス内の指定されたフレームに先行する各トンネルファミリ内のすべてのフレームが任意選択で統合されてもよく、それによって各先行フレームファイルのコンテンツがスキャンされ、フレームファイルの新しいバージョンへ複写されるが、すべての発見された反転するコレクションインスタンスおよびそれらに対応する反転されたコレクションインスタンスは廃棄される。統合されたフレームファイルは完全なコレクションインスタンス履歴を含まず、それが置き換わるフレームファイルよりコンパクトになる。
【０３８９】
各要素パスは、現在のフレームに先行する単一の、または複数のフレーム内のすべての要素インスタンスに関する部分情報を知らせるあらゆるフレームを有するフレームマップを含む。各フレームマップは、アクセスモデル演算子が、どの先行フレームが演算子のオペランドに関連するか判定することを可能にし、演算子が関連情報を含まないフレームを除外することを可能にする。
【０３９０】
この実施形態では、識別意図の要素パスについてのフレームマップは、識別情報バイトシーケンス内のどのビットがフレーム間隔内のすべての要素インスタンスについての共通の値を含むかに関する情報を含む。
【０３９１】
したがって、この実施形態では、識別要素パス内の要素インスタンスが、すべての要素インスタンスのいくつかの部分がフレーム間隔全体にわたって共通になるように、識別バイトシーケンスの一部分または複数の部分において、一貫して単調に増加または減少するシーケンスを呈する場合には、１つまたは複数のフレーム間隔内のすべての要素インスタンスの共通の側面が、求められる識別子に合致しない場合に、それらのフレーム間隔を都合よく除くことができる。
【０３９２】
この実施形態では、測定意図の要素パスについてのフレームマップは、フレーム間隔内のすべての要素インスタンスについての最小値および最大値に関する情報を含む。
【０３９３】
したがって、この実施形態では、要素パス内の測定要素インスタンスが一貫して単調に増加または減少する値を呈する場合には、１つまたは複数のフレーム間隔についての最小値および最大値が求められる測定を囲まない場合に、それらのフレーム間隔を都合よく除くことができる。
【０３９４】
この実施形態では、列挙意図の要素パスについてのフレームマップは、フレーム間隔内の少なくとも１つの要素インスタンスにどのプロパティが存在するかに関する情報を含む。
【０３９５】
したがって、この実施形態では、要素パス内の列挙要素インスタンスがプロパティの疎分布を呈する場合には、求められる列挙が１つまたは複数のフレーム間隔内に存在しないプロパティを含む場合に、それらのフレーム間隔を都合よく除くことができる。
【０３９６】
上記を考慮すると、アクセスモデル演算子は、演算子および演算子のオペランドに関連するデータを含まないフレームを回避することによってトンネルを効率よくナビゲートすることができることが理解されるであろう。
【０３９７】
上記を考慮すると、アクセスモデル演算子は、索引といったさらに別のナビゲーション構造が特定の問合せ要件をサポートすることを必要とせずに選択的問合せアクセスと一括問合せアクセスの両方についてトンネルを効率よくトラバースすることができ、したがって、通常、そのような構造に必要とされる、設計、管理および維持の労力およびリソース投資が省かれることが理解されるであろう。
【０３９８】
上記を考慮すると、アクセスモデル演算子は、コストベースの問合せ最適化のための別々の統計収集も、複数の最適化戦略も不要となるようにトンネルをナビゲートすることができることが理解されるであろう。
【０３９９】
（現在の時間フレームの前に発生する）履歴フレーム内のトンネルおよびマップ構造は、１回の記憶読取り要求で完全な構造を読み取ることができるように連続した記憶配置として記憶される。
【０４００】
有利には、複数のフレームからの非集合トンネルを前のフレームから累積し、新しいフレームのための後続のファイルに連続して書き込んで、所与のトンネルをトラバースするときに参照しなければならないフレームファイルの数を最小限に抑えることができる。これにより、所与のトンネルをトラバースするのに必要な記憶読取り要求回数が最小限に抑えられ、記憶システムから可能な転送速度がよりよく活用され得る。
【０４０１】
この実施形態では、ＮがＶの正確な倍数である定義済みの間隔Ｖと、フレーム番号Ｎについて、フレームＮ内の各トンネルが、フレームＮ−１…Ｎ−Ｖからトンネルを読み取り、次いで、フレームＮについてのトンネルコンテンツを追加し、累積をフレームＮに記憶することによって累積される。この累積は、トンネルを効率よく累積するのに十分なメモリが利用できなくなるまで後続のフレームにおいて続行され、その結果フレームＮ内のトンネルはフレームＮについてのコンテンツだけを含むことになる。
【０４０２】
したがって、フレームをナビゲートするアクセス演算子は、複数の先のフレームをナビゲートし、現在のフレームファイルに累積されているフレームファイルを訪問する必要を回避することができ、１回の大きな読取り要求で複数のフレームにまたがるトンネルを読み取ることができる。
【０４０３】
上記を考慮すると、アクセスモデル演算子は、最新のハードウェア環境に一般的な高転送速度を活用することにより効率よくトンネルをナビゲートし、最小限のキャッシュ汚染でトンネルをナビゲートすることができることが理解されるであろう。
【０４０４】
ある好都合な実施形態では、あらゆるフレームが、直前のフレームから可能な限り多くのコンテンツを累積するように、上記Ｖの値は１である。この実施形態では、演算子ナビゲーションの効率が最適化される。
【０４０５】
別の好都合な実施形態では、どのフレームもそのフレーム自体以外のコンテンツを累積しないように、上記Ｖの値は無限大である。この実施形態では、更新の効率が最適化され、記憶の利用率が最大化される。
【０４０６】
上記を考慮すると、上記Ｖの値は、特定の性能側面を最適化するように設定することができることが理解されるであろう。また、Ｖの値は、いつの時点においても、特定の性能需要に応じて特定の性能側面を最適化するように動的に変更することができることも理解されるであろう。
【０４０７】
有利には、各ファイルシーケンスは、望むときに最も古いフレームファイルが除去されるように短縮（truncate）することができる。これはコレクションパスごとに別々に行うことができ、データベースが、コレクションパスごとに個別に保持されるデータのライフサイクルを正確に管理することを可能にする。
【０４０８】
上記を考慮すると、データのライフサイクルは、コレクションパスおよび時間フレームの細分性によって正確に管理することができることが理解されるであろう。
【０４０９】
一実施形態では、任意の単一のコレクションインスタンスに関連する全情報が単一のファイル位置において利用できないように、集合トンネルを個別にセキュアに暗号化することが可能である。有利には、各集合トンネルを個別に暗号化し解読することができ、単一の集合トンネルがアドレス指定されるときに、可能な最善の性能を与える。有利には、集合トンネルのための暗号化鍵は、各コレクションインスタンスが一意の暗号化鍵を有するようにするために、秘密シード、コレクションパス、フレーム番号およびトンネル番号基づくものとすることができる。二方向暗号化／解読のための方法は別の文献で広範囲にわたって記載されており、ここではこれ以上考察しない。
【０４１０】
代替の実施形態では、集合データトンネル内の集合セルを別々に個別にセキュアに暗号化し、解読することが可能である。
【０４１１】
上記を考慮すると、コレクション・インスタンス・データは、全ファイルを暗号化し、解読することを必要とせずに、全コレクションデータへの無許可のアクセスを防止するために個別に効率よく暗号化し、解読することができることが理解されるであろう。
【０４１２】
この実施形態では、アクティブトランザクションが、現在の時間フレームのためのヒープファイルにおいて累積される。現在の時間フレームに関連する１つのヒープファイルと、最近閉じられた時間フレームに関連する０個以上のヒープファイルがある。各ヒープファイルの名前は、そのヒープファイルが作成された時間フレームの数を含む。
【０４１３】
ヒープファイルは、各セグメントが特定のトランザクション、特定のコレクションパス内の特定の集合トンネルに関連する固定サイズのセグメントのヒープとして構築される。いったん閉じられると、ヒープファイルのコンテンツは、同じ時間フレームに対応する複数のフレームファイルへ移行される。各フレームファイルは、メモリにおいて、同じコレクションパス、要素パスおよびトンネル番号に対応するセグメントを合体することによって構成される。
【０４１４】
この実施形態では、現在の時間フレームは、現在アクティブなトランザクションおよび最近アクティブであったトランザクションについての集合トンネル情報のインターリーブセグメントの単一のヒープとして配置され、アクティブトランザクションを相互に隔離されたままにすることができる。全ヒープを、すべてのセグメントを含む単一の大きな記憶書込み要求に書き込むことができ、よって、複数のトランザクションが単一の順次の記憶書込み要求内でそれらの状態を存続させることが可能になり、多数のトランザクションが同時に動作することを可能にする。
【０４１５】
上記を考慮すると、多数のトランザクションが、隔離されたままで、同時に動作し、最小限の記憶書込み要求で記憶において存続させることができることが理解されるであろう。
【０４１６】
上記を考慮すると、ヒープファイルとフレームファイルの分離は、トランザクションが可能な最短の時間でその状態を存続させることができるように、ヒープファイルが最小限の書込み待ち時間で記憶媒体上に位置決めされることを可能にすることが理解されるであろう。
【０４１７】
各ヒープファイルは単一の時間フレームに対応し、時間が絶対時間フレーム境界を越えて移動するときに新しいヒープが開かれる。これが発生するときに、前のヒープは閉じられたとみなされ、それ以上そのヒープに追加することができなくなる。
【０４１８】
トランザクションが閉じられると、そのトランザクションに関連するすべてのセグメントは、それらのセグメントがいつ作成されたかや、トランザクションがいつ最初に開かれたかにかかわらず、トランザクションの終了に対応する時間フレーム内に存在するとみなされる。
【０４１９】
一実施形態では、ヒープファイルはその時間フレームが満了した後で閉じられ、閉じられたトランザクションに付随する閉じられたヒープファイル内のセグメントは、対応するフレームファイルへ直ちに移行される。
【０４２０】
別の実施形態では、ヒープファイルはその時間フレームが満了した後で閉じられ、十分なトランザクションセグメントが累積されるまで保持される。それから、閉じられたトランザクションに付随するすべての閉じられたヒープファイル内のセグメントは、対応するフレームファイルへ移行される。
【０４２１】
ヒープファイル内のトランザクションセグメントが作成され、開かれているトランザクションに割り当てられる。開いたトランザクション内では、任意の数のコレクションパスに及ぶ任意の数のコレクションインスタンスが随意に作成され、または反転され得る。その後、トランザクションは破棄され、または適用され得る。
【０４２２】
トランザクションが破棄されるとき、トランザクションのコンテキスト内で作成されたすべてのトランザクションセグメントは、それらに割り当てられたトランザクションを破棄されたとマークすることによって論理的に廃棄される。トランザクションが適用されるとき、トランザクションは適用されるとマークされ、現在のヒープファイル内のすべてのトランザクションセグメントが、それらのトランザクション状況にかかわらず、記憶に存続する。
【０４２３】
適用されたトランザクションに関連するトランザクションセグメントだけがフレームファイルへ移行される。したがって、すべてのフレームファイルは、適用されたトランザクションセルだけを含み、すべての問合せ演算子に利用可能であるとみなすことができる。
【０４２４】
上記を考慮すると、すべてのフレームファイルのトランザクションコンテキストは静的であり、トランザクションの隔離への対応が必要なのはヒープファイルナビゲーションの間だけであるため、フレームファイルをナビゲートする演算子は、トランザクション隔離にも、読取り一貫性同期アクティビティにも関与しないことが理解されるであろう。
【０４２５】
この実施形態では、すべてのコレクションパス、コレクションパス内の要素パス、ならびにパスおよびフレーム内のトンネルが、決して再利用されず、序数を飛ばさないように順次に割り当てられる序数によって一意に識別される。これらの序数は、アクセス構造が密で、連続したものになるようにパスおよびトンネルをアドレス指定するために一貫して使用される。
【０４２６】
この実施形態では、コレクションパスおよび要素パスについての序数は、パス名がメタデータ内で、記憶システムに必要以上の影響を及ぼさずに随意に変更されることを可能にするために、それらに対応するパス名ではなく、ディレクトリ名およびファイル名内で使用される。
【０４２７】
記憶構造は、序数、コレクションパス、要素パスおよび要素意図の定義を存続することを必要とする。この実施形態では、これらの定義がメモリにおいて維持され、パス定義の完全な集合は、定義が変更されるときに、新しい別々のメタデータファイル内の記憶上でも存続する。各メタデータファイル名は、厳密に単調に増加するバージョン番号および更新の時点における時間フレーム番号を含む。またこれらの識別子は、ファイルのコンテキスト内でも出現する。
【０４２８】
データ定義コマンドは、新しいメタデータファイルが正常に書き込まれ、記憶と同期されるまで完了することができない。
【０４２９】
有利には、この実施形態では、プロセス障害が、その名前に最高のバージョン番号を含み、内部に一貫したバージョン番号を含むメタデータファイルを見つけることによって回復される。
【０４３０】
上記を考慮すると、メタデータファイルは、すべてのコレクションパスにおいて保持される最も古いフレームより前のものであるフレームに対応する場合に削除され得ることが理解されるであろう。
【０４３１】
上記を考慮すると、データベースのコンテンツが前の時間フレームへ戻される必要がある場合には、後続のフレーム番号を含むすべてのフレーム、ヒープおよびメタデータファイルを簡単に削除することができることが理解されるであろう。
【０４３２】
上記を考慮すると、コレクションパスおよび要素パスは、任意の時点に、動的に、随意に導入されてよく、それらに対応する定義は無期限に保持されることが理解されるであろう。
【０４３３】
フレームファイル構造
【０４３４】
閉じられた各フレームは、各セクタが特定のエンティティパス（コレクションまたは要素）に関連し、複数のサブセクタで構成され、各サブセクタが特定のトンネルに関連する記憶セクタの階層として配置される。
【０４３５】
階層は、図１７に示すように配置される。
【０４３６】
あらゆるセクタは連続して記憶され、上位レベルの各セクタは、階層内の次の下位レベルにおける囲まれたサブセクタのセクタマップを含む。サブセクタについてのセクタマップはスーパセクタの開始のところに位置する。
【０４３７】
これらのセクタマップは、図１８に示すように、サブセクタ序数ごとのサブセクタの開始アドレスを含む固定サイズのエントリの１次元アレイとして配置される。
【０４３８】
サブセクタＮのアドレスは、オフセットＮを調べることによって見つかる。サブセクタＮのサイズは、セクタが連続して記憶されるため、後続のエントリから決定することができる。
【０４３９】
要素パスＥ内のトンネルＴに到達するには、要素パスセクタマップおよびトンネルセクタマップによるナビゲーションが必要である。
【０４４０】
各トンネルは、その開始のところに、そのトンネルを先行するフレーム内のそれに対応するトンネルにリンクするためのトンネルリンクを含む。トンネルリンクは、各フレーム内のセクタマップを訪問することを必要とせずに、フレームにまたがるトンネルに沿ったナビゲーションを可能にする。したがって、各トンネルは、トンネルが続く場合には、それぞれ、フレームとフレームファイル内のアドレスとを識別する固定サイズのフレーム番号と固定サイズのトンネルアドレスとを用いて、図１９に示すように配置される。
【０４４１】
ヒープファイル構造
【０４４２】
トランザクションセグメントはヒープファイル内で累積される。ヒープファイルは、より大きな空間が必要とされるときに拡大されるウォーターマークを有する。ヒープファイルのコンテンツは、１つまたは複数のトランザクションが適用される度に、（ウォーターマークまで）さかのぼって記憶に同期される。
【０４４３】
ウォーターマークまでのヒープ空間は、セグメントがトランザクション内でセグメントチェーンを作り出すように相互リンクされた、互いに異なる固定長の集合トンネルセグメントとして配置される。ヒープウォーターマークは、１つまたは複数のセグメントを追加することによって拡大される。
【０４４４】
各トランザクションセグメントは１つのトランザクションに属する。トランザクションは、集合トンネルセルを追加する際に、チェーンに１つまたは複数のセグメントを追加する。
【０４４５】
各セグメントは、それが属するコレクションパスおよびトランザクションを識別するヘッダを含む。また各セグメントは、図２０に示すように、チェーン内の次のトランザクションセグメントを指し示すポインタおよび同じコレクションパスにおける次のセグメントを指し示すポインタも含む。
【０４４６】
トランザクションセグメントに付随するトランザクション情報は、ヒープファイルのヘッダ内に記憶される。図２１に、単一のヒープファイルの構造を示す。
【０４４７】
あらゆるコレクションパスチェーンおよびトランザクションチェーンのヘッドはメモリにおいて維持される。したがって、特定のトランザクションに関連するすべてのセグメントまたは特定のコレクションパスに関連するすべてのセグメントを見つけることが可能である。
【０４４８】
チェーンヘッダもセグメントポインタも、フレーム番号およびセグメント番号を含み、フレームは、セグメントが属するヒープファイルのフレーム番号を識別し、セグメント番号は、ヒープファイル内のセグメントの順位を識別する。この実施形態では、トランザクションセグメントのチェーンは、単一のコレクションパスまたはトランザクションに属するセグメントが、単一のチェーンをたどることによって探し出されるように、ヒープファイルにまたがって延在することができる。
【０４４９】
上記を考慮すると、ヒープファイルの構造は、述語演算子が、それに関連する情報を探してヒープ記憶をすばやくナビゲートすることを可能にすることが理解されるであろう。
【０４５０】
上記を考慮すると、セグメントは、データベースがプロセス障害から回復する必要がある場合に、メモリ内チェーンヘッダを再構築し得るのに十分な情報を含むことが理解されるであろう。
【０４５１】
適用されたトランザクションに関連するセグメントは、ヒープファイルが閉じられた後で、フレームファイルへ移行される。ヒープファイルは、その内部のすべての適用されたトランザクションセグメントが移行されるまで保持されなければならない。その後ヒープファイルは削除されてよい。
【０４５２】
演算子は、ヒープファイルとフレームファイルの両方をスキャンするときに、前にスキャンされたヒープファイルに対応する番号を有するフレームファイルを無視する。
【０４５３】
上記を考慮すると、フレームファイルは、あらゆるコレクションインスタンスが、いつでも、ヒープファイルとフレームファイルの一方または他方または両方に安全に存在するようにするために、ヒープファイルが除去される前に作成し、記憶と安全に同期させることができることが理解されるであろう。
【０４５４】
長期間にわたるトランザクションは、複数のヒープファイルにトランザクションセグメントを含む場合がある。トランザクションが最終的に閉じられるときには、トランザクションセグメントをフレームファイルへ移行するために、開始フレームと終了フレームの間のヒープファイルが訪問されなければならない。
【０４５５】
トランザクション管理
【０４５６】
同時に開くトランザクションの数には上限があり、リサイクルされる一意のトランザクションハンドルの固定された集合がある。トランザクションハンドルは、トランザクションが閉じられ（破棄され、または適用され）、ヒープファイルが閉じられるまでアクティブのままである。ヒープファイルは、現在のフレームが失効するときに、またはトランザクションハンドルが再生される必要があるときに閉じられる。
【０４５７】
迅速なトランザクション検査および空きハンドルの割振りのために、トランザクションハンドルのプールがメモリにおいて維持される。
【０４５８】
トランザクションハンドルに好都合な上限は６５５３５である。
【０４５９】
データベースシステムが停止されるときに開いているトランザクションは、理由のいかんを問わず、破棄されるとみなされる。データベースシステムが開始または再開されるときには、新しいヒープファイルが作成され、すべてのトランザクションハンドルが再生され、再利用のために提供される。開いたトランザクションは、記憶エンジンのシャットダウンを過ぎて続行することができない。
【０４６０】
各述語演算子は、開いたトランザクションのコンテキスト内でセグメントをナビゲートし、セグメントをスキャンする演算子は、外部トランザクション状態を知っており、従っている正確なトランザクションセマンティクスに応じて、外部トランザクションに対応するセグメントのコンテンツをスキップし、または含める必要がある。
【０４６１】
１つまたは複数のコレクションインスタンスを反転するのに先立ち、トランザクションは、どのコレクションインスタンスが反転され得るか識別し、各コレクションインスタンスに関する排他的反転ロックを取得しなければならない。反転ロックを直ちに許諾されないトランザクションは、ロックが取得されるのを待たなければならず、ロックが定義済みの期間内に許諾されなかった場合には、そのトランザクションは、起こり得るデッドロックを解決するために取得したすべての反転ロックを解除しなければならない。その後、トランザクションは、破棄され、または反転され得るコレクションインスタンスを識別し、ロックしようとする試みを繰り返さなければならない。
【０４６２】
多くのトランザクションがアクティブで、短命であり、頻繁にトランザクション適用を生じる大規模な同時並行ユーザ環境では、トランザクションを定義済みの間隔で適用するためのサイクルを提供することが好都合である。適用されようとするトランザクションは、次の利用可能な適用サイクルを待ち、適用サイクルが完了するまで続行することができない。これは個々のトランザクションを遅延させる可能性があるが、非常に多くのトランザクションが同時に完了し得るために、スループットを低下させない。
【０４６３】
適用サイクルに好都合な間隔は１０ミリ秒である。これは、記憶への書込み要求の回数を適度に制限し、適用を待つトランザクションにごくわずかな遅延しか与えない。
【０４６４】
適用サイクルは、適用を待つトランザクションがない場合には、スキップされる。
【０４６５】
一実施形態では、適用サイクルの持続期間は、現在アクティブなトランザクションの数によって決定され、そのため、ただ１つのアクティブなトランザクションしか存在しない場合にはこの持続期間は０であり、この持続期間は、定義済みの最大時刻まで開いたトランザクションの数と共に増加する。
【０４６６】
上記を考慮すると、単一の、または最小限の数の大きな記憶書込み要求を使用して、複数のトランザクションを適用し、記憶に同期させることができ、そのため、最新の記憶システムが提供する高データ転送速度を利用することにより、良好なトランザクションスループットが提供されることが理解されるであろう。
【０４６７】
開いた各トランザクションには、それが最初に開かれるときに一連番号が割り当てられ、この番号は、すべての現在の開いているトランザクションの最大の一連番号より１大きい。この一連番号は、他のトランザクションが開いていないときには１である。トランザクション一連番号は、演算子が問合せにより必要とされるトランザクションセマンティクスを守るようにするために使用される。
【０４６８】
問合せは、他の開いたトランザクションからの隔離を必要としないときには、遭遇するすべての開いたトランザクションを含むことができる。
【０４６９】
問合せは、他の適用トランザクションからの隔離を必要としないときには、遭遇するすべての適用トランザクションを含むことができる。
【０４７０】
問合せは、問合せが開始して以来適用されたトランザクションからの隔離を必要とするときには、問合せの開始時の最高の一連番号より高い一連番号を有するトランザクションを無視することができる。
【０４７１】
問合せは、問合せトランザクションが開始して以来適用されたトランザクションからの隔離を必要とするときには、問合せトランザクションの開始時の最高の一連番号より高い一連番号を有するトランザクションを無視することができる。
【０４７２】
上記を考慮すると、複数のトランザクション隔離モードを提供することができること、および複数のトランザクション隔離モードを同時にサポートすることができることが理解されるであろう。
【０４７３】
上記を考慮すると、別の機構が複数の同時の開いたトランザクションのコンテキスト内で別々のトランザクション状態を解決する必要がないことが理解されるであろう。
【０４７４】
フレームマップ
【０４７５】
フレーム内の各要素パスは、先行するフレーム全体に及ぶ要素パスについての要素インスタンスの母集団を要約するフレームマップを含む。このマップは、ある次元の倍率と別の次元の間隔によってアドレス指定される２次元アレイとして配置される。アレイ内の各エントリは、パスの種類によって異なるパスについての要約情報を含む。
【０４７６】
フレームマップ内の倍率の数Ｓおよび間隔の数Ｉは、すべての要素パスにわたって固定される。
【０４７７】
ｓ＜Ｓである倍率ｓにおいて、各エントリはサイズＩ＾ｓのフレーム間隔に関連する。
【０４７８】
例えば、倍率４および間隔８では、
【０４７９】
倍率０で、各間隔は１フレームに及び、
【０４８０】
倍率１で、各間隔は８フレームに及び、
【０４８１】
倍率２で、各間隔は６４フレームに及び、
【０４８２】
倍率３で、各間隔は５１２フレームに及ぶ。
【０４８３】
総じて、このマップは４０９６フレーム（８×５１２）を範囲に含むことができる。
【０４８４】
倍率および間隔の数は、Ｉ＾Ｓが保持されるべき時間フレームの数より大きくなるように選択される。有利な値は、倍率および間隔について、それぞれ４および２５６である。これは、４０億を超える時間フレームのデータの保持を可能にする。
【０４８５】
倍率ｓおよび時間フレームＦについてのフレームマップにおける間隔数ｉは以下のように導出される。
【０４８６】
０…（Ｓ−１）におけるｓについて、ｉ＝（Ｆ／（Ｉ＾ｓ）ｍｏｄｕｌｏ  Ｉ）。式中、Ｓは倍率の数であり、Ｉは間隔の数である。
【０４８７】
各フレーム境界が交差される際に、
【０４８８】
現在のフレームＦについてのフレーム・マップ・エントリが、０…Ｓ−１の倍率ｓごとに間隔ｉについて設定される。
【０４８９】
ｓ＞０かつｓ＜（Ｓ−１）である倍率ｓにおいて間隔ｉ＝０である場合には、あらゆる間隔（０…Ｉ）についてのマップエントリが、ｓより小さいすべての倍率についてリセットされる。
【０４９０】
新しいフレームについてのフレームマップは、直前のフレームと同じになるように初期設定される。
【０４９１】
フレームマップは、累算器として動作し、先のフレームから新しいフレームごとに複写される。
【０４９２】
フレームマップは、フレーム間をナビゲートするのに使用されて、無関係とみなされるフレームが除かれる。
【０４９３】
各訪問先フレーム内で、演算子は、フレームマップを参照して次の関連するフレームを決定する。マップ間隔が参照されて、（現在の訪問先フレーム番号から）間隔数が低減され、（ある倍率における検査済み間隔の数が間隔の最大数に到達するときに）各倍率が使い果たされる際に倍率が増加される。関連する間隔が見つかると、その間隔および倍率内の最初のフレーム番号が次に訪問される。
【０４９４】
以下の例で、フレーム１９１およびフレーム１９２における倍率４および間隔４のフレームマップについての範囲を示す。倍率と間隔との各交差は、その交差において提供されるフレーム範囲を示す。フレーム１９１とフレーム１９２の間で変化するセルは、強調表示されている。
【０４９５】
フレーム１９１におけるＳ＝４、Ｉ＝４のフレームマップ
【表３５】
2013525881.tif 000037
【０４９６】
フレーム１９２におけるＳ＝４、Ｉ＝４のフレームマップ
【表３６】
2013525881.tif 000038
【０４９７】
識別要素フレームマップ
【０４９８】
識別要素パスについての各フレーム・マップ・エントリは、要素インスタンス値内のどのビットがフレーム間隔内のすべての要素インスタンスに共通であるかに関する情報を含む。フレーム間隔内の共通ビットがサーチされている識別情報の値におけるビットと符合しない場合には、フレーム間隔が連結トンネルサーチから割り引かれる。
【０４９９】
フレームマップ内の各エントリは、可能な最長の識別要素インスタンスと同じ長さの２ビットシーケンスを含む。
【０５００】
共通性マスクＭ
【０５０１】
共通性シーケンスＢ
【０５０２】
マスクＭはセットビットを含み、間隔内のすべての要素インスタンス内の対応するビットは、常に設定され、または常にクリアされる。Ｂの対応するビットは、そのビットが常に設定されるか、それとも常にクリアされるかを指示する。例えば、要素パスにおけるビットの最大数が８である場合には、Ｍ＝０はすべてのビットが異なることを含意し、Ｍ＝１およびＢ＝１は、最下位有効ビットがその間隔内の要素インスタンスについて常に設定されることを含意する。
【０５０３】
各要素インスタンスＥがフレームに加えられる際に、ビットパターンＭおよびＢは以下のように更新される。
【０５０４】
これがフレームの最初の要素インスタンスである場合には、ＢがＥになり、すべてのビットがＭにおいて設定される。
【０５０５】
そうではなく、（Ｅ  ＡＮＤ  Ｍ）＝（Ｂ  ＡＮＤ  Ｍ）である場合には、ＭもＢも変更しない。
【０５０６】
それ以外の場合、以下を導出する。
【０５０７】
差Ｄ＝ＮＯＴ（（Ｅ  ＡＮＤ  Ｍ）ＸＯＲ（Ｂ  ＡＮＤ  Ｍ））
【０５０８】
Ｍは（Ｍ  ＡＮＤ  Ｄ）になる。
【０５０９】
Ｂは（Ｂ  ＡＮＤ  Ｄ）になる。
【０５１０】
（Ｃ  ＡＮＤ  Ｍ）が（Ｂ  ＡＮＤ  Ｍ）と等しくない場合に候補識別情報Ｃと等価の識別要素インスタンスを求めてサーチしているときには、フレーム間隔が除外される。
【０５１１】
測定要素フレームマップ
【０５１２】
測定要素パスについての各フレーム・マップ・エントリは、フレーム間隔全体にわたる最小要素インスタンス値および最大要素インスタンス値に関する情報を含む。フレーム間隔境界がサーチされている境界とオーバーラップしない場合には、フレーム間隔が組合せトンネルサーチから割り引かれる。
【０５１３】
各フレーム・マップ・エントリは、間隔内のすべての要素インスタンスについて以下の２つの値を含む。
【０５１４】
間隔全体にわたる最小要素インスタンス値を表す要素最小Ｎ
【０５１５】
間隔全体にわたる最大要素インスタンス値を表す要素最大Ｘ
【０５１６】
各要素インスタンスＥがフレームに加えられる際に、値Ｎおよび値Ｘは以下のように更新される。
【０５１７】
これがフレームにおける最初の要素である場合には、ＮおよびＸはどちらもＥに設定される。
【０５１８】
そうでなく、Ｅ＞Ｘである場合には、ＸがＥに設定される。
【０５１９】
そうでなく、Ｅ＜Ｎである場合には、ＮがＥに設定される。
【０５２０】
（Ｂ＜Ｎ）ＯＲ（Ａ＞Ｘ）である場合に最小値Ａおよび最大値Ｂの制限された範囲内の測定要素インスタンスをサーチしているときには、フレーム間隔が除外される。
【０５２１】
列挙要素フレームマップ
【０５２２】
列挙要素パスにおける各フレーム・マップ・エントリは、１ビットが各プロパティトンネルに対応するＴビットのシーケンスを含む。
【０５２３】
各要素インスタンスＥがフレームに加えられる際に、ビットシーケンスは以下のように更新される。
【０５２４】
これがフレーム内の最初の要素である場合には、すべてのビットがまずクリアされる。
【０５２５】
トンネルｔに対応するビットは、この要素インスタンスについて「真」のセルを含むトンネルｔごとに設定される。
【０５２６】
ビットＰがＴにおいてクリアである場合にプロパティＰを含む列挙要素インスタンスをサーチしているときには、フレーム間隔が除外される。
【０５２７】
コレクションパスのフレームマップ
【０５２８】
またフレームマップは、集合トンネルフレーム内のコレクションパスごとにも維持される。
【０５２９】
コレクションパスについての各フレーム・マップ・エントリは以下の２つの数を含む。
【０５３０】
コレクショントンネルの数Ｃ
【０５３１】
コレクション反転の数Ｄ
【０５３２】
これらは以下のように維持される。
【０５３３】
これがフレームに加えられる最初のインスタンスである場合には、これらの数は、非反転コレクションについてはＣ＝１、Ｄ＝０に、反転コレクションについてはＣ＝１、Ｄ＝１に設定される。
【０５３４】
そうでない場合、Ｃは加えられるコレクションごとに増分され、反転ごとに両方の数が増分される。
【０５３５】
これらの数は、反転がフレーム間隔内で解決される必要があるかどうか評価し、要素パストンネル内の累積されたトンネルにおけるフレーム境界を推論するのに使用される。
【０５３６】
セル
【０５３７】
各トンネルはセルのシーケンスを含む。セルの構造は、セルが出現するトンネルファミリおよびセルがサポートする演算子によって異なる。以下で、使用されるセルの種類を説明する。
【０５３８】
識別セル
【０５３９】
これは、集合トンネル内の単一のコレクションインスタンスについての識別要素の全インスタンスを表す。これは、図２２に示すように、セルサイズ、パスおよび領域が前に付くバイトのシーケンスである。
【０５４０】
パスは、要素インスタンスが属する要素パスを識別する。
【０５４１】
領域は、識別子を符号化するのに使用される数体系または文字集合を表す。
【０５４２】
識別要素セルは、それが候補値と同じ長さ、符号化領域およびバイトシーケンスを有するときにだけ、候補識別子と等価であるとみなされる。
【０５４３】
この種類のセルは、単一のコレクションインスタンスからの識別要素インスタンスの値を記憶し、検索するのに使用される。
【０５４４】
測定セル
【０５４５】
これは、集合トンネル内の単一のコレクションインスタンスについての測定要素の全インスタンスを表す。これは、図２３に示すように、要素の大きさを表すセルの長さ、領域、符号、指数および有効数字部を保持する。
【０５４６】
パスは、要素インスタンスが属する要素パスを識別する。
【０５４７】
領域は、ネイティブ値を符号化するのに使用される数体系または時間帯を定義する。
【０５４８】
符号は、この大きさが正であるかそれとも負であるかを指示する。
【０５４９】
指数は、有効数字部が固定小数点へ正規化するのに何ビットシフトされなければならないかを定義する。
【０５５０】
有効数字部は、測定の大きさの精度を表すのに十分なだけのビットまたはバイト数を含む。
【０５５１】
測定セルは、その相対的大きさを調べることによって候補測定と比較される。比較は、一貫性のある比較を行うために共通のオフセットおよび倍率を前提としなければならない。例えば、時刻値は標準協定世界時で表され、元の時間帯を表す領域を伴う。
【０５５２】
この種類のセルは、単一のコレクションインスタンスからの測定要素インスタンスの値を記憶し、検索するのに使用される。
【０５５３】
列挙セル
【０５５４】
これは、集合トンネル内の単一のコレクションインスタンスについての列挙要素の全インスタンスを表す。これは、図２４に示すように、それぞれの前にプロパティサイズが付いたプロパティ識別子のシーケンスであり、列挙シーケンスの前にはセルサイズ、パスおよび領域が付く。
【０５５５】
パスは、要素インスタンスが属する要素パスを識別する。
【０５５６】
領域は、ネイティブプロパティ値を符号化するのに使用される数体系または文字集合を定義する。
【０５５７】
列挙セルは、領域符号化が同じであり、プロパティのシーケンスが同じサイズおよびバイトシーケンスのプロパティを含む場合に、候補プロパティを含むとみなされる。
【０５５８】
この種類のセルは、単一のコレクションインスタンスからの列挙要素インスタンスの値を記憶し、検索するのに使用される。
【０５５９】
不透明セル
【０５６０】
これは、集合トンネル内の単一のコレクションインスタンスについての不透明要素の全インスタンスへのリンクを表す。これは、図２５に示すように、セルサイズ、パス、領域、不透明要素のサイズ、および不透明データが記憶されるリンクを含む。
【０５６１】
パスは、要素インスタンスが属する要素パスを識別する。
【０５６２】
領域は、リンク位置において不透明値を記憶するのに使用される符号化システムを定義する。
【０５６３】
要素サイズは、リンク位置において含まれる不透明オブジェクトのサイズを指定する。
【０５６４】
リンクは、不透明要素インスタンスのコンテンツが記憶される位置を表す。不透明要素は、文書といった大きなデータオブジェクトであるとみなされ、ファイルといった外部位置において記憶される。好都合には、リンクはＵＲＬとすることができる。
【０５６５】
この種類のセルは、単一のコレクションインスタンスからの不透明要素インスタンスの値を検索するのに使用される。
【０５６６】
反転セル
【０５６７】
これは、集合トンネル内の以前に作成されたコレクションインスタンスの反転を表す。このセルは、図２６に示すように、固定サイズのフレームおよびトンネル番号を含む。
【０５６８】
反転されたフレームおよび反転されたトンネル番号は、反転されているコレクションインスタンスの位置を指す。反転するトンネル番号は、現在のフレーム内の反転するセルのトンネル位置を指す。
【０５６９】
この種類のセルは、集合トンネル内のコレクションインスタンスの反転を指示するのに使用される。
【０５７０】
ダイジェストセル
【０５７１】
これは、連結トンネル内の識別要素の部分インスタンスを表す。各セルは、図２７に示すように、セルサイズ、ダイジェストおよび固定サイズのトンネル番号を含む。
【０５７２】
ダイジェストは、識別要素インスタンスの領域およびバイトシーケンスから計算され、トンネル番号は、それについてのダイジェストが計算されたそれぞれのコレクションインスタンスを含む集合トンネルを指す。
【０５７３】
この種類のセルは、識別要素パスにおける要素インスタンスごとに連結トンネルにおいて出現し、ＩＳ演算子によって、要素インスタンスと演算子オペランドとの間の等価性の可能性を評価するのに使用され、それによって、演算子オペランドのダイジェストと等価であるセルダイジェストが可能性の高い等価性であるとみなされ、それ以外は不可能とみなされる。
【０５７４】
計算されるダイジェストは、あるサイズを下回る識別要素インスタンスについての識別要素自体の値である。この場合、要素インスタンスの等価性は、単に可能性が高いというよりも確実であるとみなされる。
【０５７５】
サイズ閾値以上の要素インスタンスについて、ダイジェストは、ＭＤ５といった業界標準のダイジェストアルゴリズムから計算することができる。
【０５７６】
いずれの場合も、ダイジェストは、領域と識別バイトシーケンスの組合せから導出される。
【０５７７】
ランクセル
【０５７８】
これは、固定精度および固定小数点の、符号なしの測定からの単一の符号なしのバイトを含む。例えば、測定は、１０２４番目のビットの直後に固定小数点を有する２０４８ビットの精度へ正規化されてもよい。これは、ランク１を最上位ランクとするランク１…２５６の２５６個のランクセルに分割される。
【０５７９】
この種類のセルは、測定要素パスにおける要素インスタンスごとの組合せトンネルにおいて出現し、ＩＮ演算子によって、要素インスタンスが演算子オペランドによって範囲を制限される可能性を評価するのに使用される。またこれは、集約演算によって要素インスタンス値の一部を累積するのにも使用される。
【０５８０】
ブールセル
【０５８１】
これは、「真」または「偽」の標識を含む固定サイズのセルである。その最も有効な形において、このセルは、設定されると「真」を指示する単一ビットである。この種類のセルは、ＨＡＳ演算子およびＥＸＩＳＴＳ演算子によって、それぞれ、プロパティまたは要素インスタンスの存在を判定するのに使用される。これは、後述する複数の種類のトンネルにおいて出現する。
【０５８２】
トンネル
【０５８３】
以下で、各トンネルファミリ内で作成されるトンネルを説明する。
【０５８４】
集合トンネル
【０５８５】
以下の集合トンネルは、コレクションパスごとに作成される。
【０５８６】
作成されるあらゆるコレクションインスタンスについて１つのコレクショントンネルが作成される。このトンネルは、コレクションインスタンス内の１つの要素インスタンスにつき１つのセルを含む。各セルの種類は、識別セル、測定セル、列挙セルまたは不透明セルのうちの１つである。
【０５８７】
論理的に除去されるあらゆるコレクションインスタンスについて１つのコレクショントンネルが作成される。これは、１つの反転セルの後に、除去されたとみなされているコレクションインスタンスから複写された１つの要素インスタンスにつき１つのセルが続くものを含む。
【０５８８】
これらのトンネルが作成される順番は、コレクションインスタンスが作成され、除去される順番を反映し、各フレームにおけるこれらのトンネルの数は様々になる。コレクショントンネルについてのトンネル番号は、新しいフレームについて１から開始する厳密に増分順に割り当てられる。
【０５８９】
１フレームにつき正確に１つの反転トンネルが生じる。これは、あらゆる反転するコレクショントンネルについて１つの反転セルを含む。このトンネルには常にトンネル番号０が割り当てられる。
【０５９０】
連結トンネル
【０５９１】
以下の連結トンネルは、識別要素パスごとに作成される。
【０５９２】
１つのフレームにつき固定数（Ｎ）のダイジェストトンネルがあり、各ダイジェストトンネルは、０以上のダイジェストセルを含む。
【０５９３】
このフレームにおけるこの要素パス内のあらゆる識別要素インスタンスについてダイジェストセルが作成され、ダイジェストは要素値の領域およびバイトシーケンスから計算され、対応する集合トンネルのトンネル番号がこのダイジェストセルに割り当てられる。ダイジェストセルは、１…Ｎにマップし、要素値の領域およびバイトシーケンスから計算されるハッシュ関数によって与えられるダイジェストトンネルに割り当てられる。
【０５９４】
各ダイジェストトンネルは、図２８に示すように配置され、セルは各トンネル内で厳密に時系列順に追加される。
【０５９５】
連結トンネルは、ＩＳ演算子によって、演算子オペランドに対する要素インスタンスの等価性の可能性または不可能性を評価するためにトラバースされる。セルが演算子オペランドのダイジェストと同じダイジェストを有する場合には、等価性の可能性が高いとみなされ、そうでない場合には、等価性が不可能であるとみなされる。
【０５９６】
ダイジェストセルが十分に小さく、要素インスタンスで構成される場合には、等価性は、可能性が高いというよりも確実であるとみなされる。
【０５９７】
１つのフレームにつき正確に１つの存在トンネルがある。これは、対応するフレーム内のあらゆるコレクショントンネルについて１つのブールセルを含み、この要素パスについての要素インスタンスが対応するコレクショントンネルにおいて存在するかどうか指示する。このトンネルには常にトンネル番号０が割り当てられる。
【０５９８】
各フレームは、存在トンネルにおいて「真」であるブールセルの数を含む。
【０５９９】
また各フレームは、１つのダイジェストトンネル番号につき１つのセル数も含む。これは、図２９に示すように、そのトンネルにおけるセルの数を得るためにトンネル番号（１…Ｎ）によってアドレス指定される１次元アレイである。
【０６００】
各コレクションインスタンスは、１つのダイジェストトンネルにおいてのみ出現する。したがって、識別要素についての各フレーム内にダイジェスト・トンネル・マップがある。このマップは、図３０に示すように、対応するダイジェストトンネル番号を得るためにコレクショントンネル番号によってアドレス指定される１次元アレイである。
【０６０１】
ダイジェスト・トンネル・マップは、フレームにおける１つのコレクショントンネルにつき１つのエントリを含む。対応する要素インスタンスがコレクショントンネル内に存在しない場合、ダイジェストトンネル番号は０に設定される。
【０６０２】
コレクションインスタンスについてのダイジェストセルを見つけるには、ダイジェストトンネルを見つけるためにコレクショントンネル番号によってダイジェスト・トンネル・マップを検査し、次いで、対応するコレクショントンネル番号を見つけるためにそのダイジェストトンネルにおけるダイジェストセルを検査する必要がある。
【０６０３】
識別値に対応するコレクションインスタンスを見つけるには、ダイジェストおよびダイジェストトンネル番号を計算して、計算されたダイジェストについてのすべての一致するダイジェストセルを検索する必要がある。
【０６０４】
Ｎに有効な数は６５５３５である。
【０６０５】
組合せトンネル
【０６０６】
以下の組合せトンネルは、測定要素パスごとに作成される。
【０６０７】
１つのフレームにつき固定数（Ｎ）のランクトンネルがあり、各ランクトンネルは０以上のランクセルを含む。
【０６０８】
このフレームにおけるこの要素パス内のあらゆる要素インスタンスについてＮ個のランクセルが作成され、ランクトンネルＮ内のセルは、正規化測定表現でランクＮを表す。ランクトンネルにおける各セルの位置は、このセルについての要素インスタンスを含む集合トンネル番号と符合する。
【０６０９】
各ランクトンネルは図３１に示すように配置され、セルは各トンネル内で厳密に時系列順に追加される。
【０６１０】
１つのフレームにつき正確に１つの符号トンネルがある。これは、対応するフレームにおけるあらゆるコレクショントンネルについて１つのブールセルを含み、この要素パスについての要素インスタンスが対応するコレクショントンネルにおいて負の大きさを有するかどうか指示する。このトンネルには常にトンネル番号Ｎ＋１が割り当てられる。
【０６１１】
組合せトンネルは、ＩＮ演算子によって、要素インスタンスが演算子オペランドによって範囲を定められる可能性または不可能性を評価するためにトラバースされる。符号セルまたはランクセルが演算子境界内に含まれ得ない値を有する場合には、範囲の制限は不可能とみなされ、そうでない場合は可能性が高いとみなされる。可能性が高い範囲制限について、ＩＮ演算子は、さらに不可能性または確実性を判定するために、同じ要素インスタンスについてさらにランクセルを検査してもよい。
【０６１２】
１つのフレームにつき正確に１つの存在トンネルがある。これは、対応するフレームにおけるあらゆるコレクショントンネルについて１つのブールセルを含み、この要素パスについての要素インスタンスが対応するコレクショントンネル内に存在するかどうか指示する。このトンネルには常にトンネル番号０が割り当てられる。
【０６１３】
各コレクションインスタンスはあらゆる組合せトンネルにおいて１回出現する。
【０６１４】
各フレームは、存在トンネルにおいて「真」であるブールセルの数を含む。
【０６１５】
また各フレームは、１つのランクトンネルにつき可能な１つの符号なしのセル値につき１つのセル数を含む。これは、図３２に示すように、対応するセル値を含むそのランクトンネルにおけるセルの数を得るために、バイト値（０…２５５）によってアドレス指定される１つのランクトンネルにつき１つの１次元アレイである。
【０６１６】
セル数は加算のために直接使用され、共通の符号があり、フレーム全体にわたって反転はなく、述語演算子もない。これらの状況では、各バイト値が対応するセル数で乗算され、これらはランクに関して組み合わされる。
【０６１７】
別の状況では、集約が各ランクトンネルに順に作用して、キャッシュチャーンを最小化する。加算のために、各ランクは別々に（対応する符号セルと共に）合計され、これらの合計は累積結果のために組み合わされる。最小値および最大値は、符号トンネルを使用して、どの符号が求められるか、および最小と最大どちらの大きさが求められるかを判定し、次いで、候補セルを見つけるために、まず非ゼロのセル値を含む最高ランクトンネルをスキャンし、その後、候補順に、次いで、ランクの高い順に直接対応する下位のランクトンネルを参照することによって候補が低減される。
【０６１８】
測定値に対応するコレクションインスタンスを見つけるには、関連する符号トンネルおよびランクトンネルをスキャンする必要がある。見つかる各セルの位置はコレクショントンネル番号に対応する。
【０６１９】
コレクションインスタンスＣについてのランクＲにおけるバイトの値を見つけるには、位置ＣにおけるトンネルＲ内のセルが検査される必要がある。
【０６２０】
制限された範囲内の測定をサーチするときに、低い境界と高い境界のランクバイトを比較して、境界が異なる最高ランクが決定される。これが決定ランクであり、決定ランクより下のランクトンネルは、決定ランクより高いランクをまずスキャンすることによって、適合可能なものとして識別された特定のコレクションインスタンスについて検査されさえすればよい。
【０６２１】
上記を考慮すると、多くのセルが、すべてのランクトンネルを調べることを必要とせずに、適合不可能なものとみなされ得ることが理解されるであろう。
【０６２２】
決定ランク値より上のランクについてのセル数は、必要なランク値が対応するランクトンネルに存在するか否か迅速に判定するためのスキャンより先に参照される。否である場合、全フレームが割り引かれる。
【０６２３】
Ｎに有効な数は２５６であり、この数は、２０４８ビットの精度を提供する。
【０６２４】
特性トンネル
【０６２５】
以下の特性トンネルは、列挙要素パスごとに作成される。
【０６２６】
１つのフレームにつき固定数（Ｎ）のプロパティトンネルがあり、各プロパティトンネルは０以上のブールセルを含む。
【０６２７】
このフレームにおける要素パス内のあらゆる要素インスタンスについて、列挙セルがあらゆるプロパティトンネルに追加される。
【０６２８】
プロパティ領域およびバイトシーケンスから１…Ｎへマップするハッシュ関数が、列挙要素内のプロパティごとに計算され、プロパティハッシュ計算によって戻されるプロパティトンネル番号ごとに、そのトンネル内のセルが設定され、あるいはセルがクリアされる。
【０６２９】
好都合な代替の実施形態では、単調に増加する序数が各一意のプロパティ識別子に割り当てられる。トンネル番号は、プロパティ序数にＮのモジュロを適用することによって導出される。
【０６３０】
別の好都合な代替の実施形態では、単調に増加する序数が、各要素パス内の各一意のプロパティ識別子に割り当てられる。トンネル番号は、プロパティ序数にＮのモジュロを適用することによって導出される。
【０６３１】
特性トンネルは、ＨＡＳ演算子によって、要素インスタンスによるプロパティの所有の可能性または不可能性を評価するためにトラバースされる。セルが所有を指示する場合には、所有の可能性が高いとみなされ、そうでない場合は、不可能であるとみなされる。
【０６３２】
トンネル番号がプロパティ序数から導出される場合には、（Ｍ−Ｎ）＜Ｐ＜２Ｎであれば、所有は、可能性が高いというよりも確実であるとみなされ、式中、Ｐがプロパティ識別子の序数であり、Ｍが割り当てられる最大序数であり、Ｎがトンネルの数である。
【０６３３】
プロパティトンネルにおける各セルの位置は、対応する要素インスタンスを含むコレクショントンネルのトンネル番号と符合する。
【０６３４】
１つのフレームにつき正確に１つの存在トンネルがある。これは、対応するフレームにおけるあらゆるコレクショントンネルについて１つのブールセルを含み、この要素パスについての要素インスタンスが対応するコレクショントンネルに存在するかどうか指示する。このトンネルには常にトンネル番号０が割り当てられる。
【０６３５】
各コレクションインスタンスは、あらゆるトンネルにおいて１回出現する。
【０６３６】
各フレームは、存在トンネルにおいて「真」であるブールセルの数を含む。
【０６３７】
また各フレームは、１つの列挙トンネルにつき１つの真のセル数も含む。これは、図３３に示すように、そのトンネルにおける「真」セルの数を得るためにプロパティトンネル番号（１…Ｎ）によってアドレス指定される１次元アレイである。
【０６３８】
Ｎに有効な数は６５５３５である。
【０６３９】
トンネルの例
【０６４０】
以下に、前述の従業員表のセルおよびトンネルについての記憶レイアウトの一例を示す。セルは角括弧で囲まれたものとして示され、セルサイズはＳで示され、領域はＤで示されている。明確にするために、すべての従業員コレクションインスタンスは同じ時間フレーム内に存在し、どの従業員インスタンスも削除されたことがないものと仮定する。
【表３７】
2013525881.tif 000039
【表３８】
2013525881.tif 000040
【表３９】
2013525881.tif 000041
【表４０】
2013525881.tif 000042
【表４１】
2013525881.tif 000043
【表４２】
2013525881.tif 000044
【表４３】
2013525881.tif 000045
【表４４】
2013525881.tif 000046
【表４５】
2013525881.tif 000047
【０６４１】
以下に、演算子ナビゲーションルートの例を示す。
【０６４２】
ＥＸＩＳＴＳ（‘Ｅｍｐｌｏｙｅｅｓ．Ｃｏｍｍｉｓｓｉｏｎ’）は、要素パス４内の存在トンネル０をたどる。これは、コレクショントンネル番号２および３をもたらす。
【０６４３】
ＩＳ（‘Ｅｍｐｌｏｙｅｅｓ．ＥｍｐｌｏｙｅｅＮｕｍｂｅｒ’，１０）は、要素パス２内のｈａｓｈ（１０）によって与えられるダイジェストトンネルをたどる。これは、コレクショントンネル番号１をもたらす。
【０６４４】
ＩＮ（‘Ｅｍｐｌｏｙｅｅ．Ｓａｌａｒｙ’，０，１００００）は、要素パス３内の符号トンネル１１およびランクトンネル１をたどる。これは、コレクショントンネル１をもたらす。
【０６４５】
ＨＡＳ（‘Ｅｍｐｌｏｙｅｅｓ．Ｎａｍｅ’，‘Ｓｉｍｏｎ’，‘Ｊｏｎｅｓ’）は、要素パス１のｈａｓｈ（‘Ｓｉｍｏｎ’）およびｈａｓｈ（‘Ｊｏｎｅｓ’）によって与えられるプロパティトンネルをたどり、これらを組み合わせる。これは、コレクショントンネルをもたらさない。
【０６４６】
トンネル圧縮
【０６４７】
前述のトンネルの多くは、トンネルサイズを縮小し、トンネルのスキャンをより高速にするために、従来の損失なしのランレングス符号化を使用して都合よく圧縮される。ランレングス符号化の方法は別の文献で詳細に記載されており、そのため、ここではこれ以上論じない。
【０６４８】
存在トンネルおよびプロパティトンネルは、事実上、設定ビットまたはクリアビットの連続した部分シーケンスがある可能性の高いビットシーケンスである。したがって、これらのトンネルは都合よくランレングス符号化される。
【０６４９】
測定要素についてのランクトンネル内では、所与のランクにおける、特に、０バイト値の大きな母集団があるであろう小数点から極端に離れたところにあるバイト値は類似している可能性が高い。したがって、ランクトンネルは、都合よくランレングス符号化される。
【０６５０】
コレクション集合
【０６５１】
定義済みの述語演算子およびバインド演算子はそれぞれ、コレクション・インスタンス・メンバのコレクション集合を生成し、操作する。
【０６５２】
各コレクション集合は、述語演算子評価によって生成され、演算子評価に関連するとみなされるコレクションインスタンスごとに以下の情報を含む。
【０６５３】
コレクションフレームおよび述語演算子評価に関連するとみなされるコレクションインスタンスを一意に識別する集合トンネル番号。
【０６５４】
述語演算子評価の確実性。述語演算子評価に対するコレクションインスタンスの適合性の確実性または可能性を指示するために述語演算子評価によって割り当てられるブール標識。
【０６５５】
バインド演算の間に割り当てられ、述語演算子評価によって０として割り当てられる訪問序数。
【０６５６】
バインド演算の間に割り当てられ、述語演算子評価によって０として割り当てられる順序番号。
【０６５７】
バインド演算の間に割り当てられ、述語演算子評価によって１に割り当てられる濃度。
【０６５８】
バインド演算の間に割り当てられ、述語演算子評価によって０として割り当てられるバインド要素インスタンスについてのダイジェストトンネル番号。
【０６５９】
コレクション集合内の、述語演算子評価によって増分的に割り当てられるメンバの順位。
【０６６０】
コレクションインスタンスについてのバインド要素インスタンスについてのダイジェストセルのダイジェスト値。バインド演算の間に割り当てられ、述語演算子評価によって０として割り当てられる。
【０６６１】
述語演算子によって生成された後で、各コレクション集合は、良好なフレーム局在性を呈し、コレクションインスタンスが各フレーム内で順序付けられる。
【０６６２】
有利には、コレクション集合は、迅速なアクセスを支援するためにメモリ内においてホストされ、コレクション集合に有利な構造は、固定サイズのメモリブロックのリストである。これが図３４に示されている。
【０６６３】
有利には、オペレーティング・システム・レベルの低レベルメモリ割振りサービスの呼び出しを必要としないコレクション集合の迅速な構築を可能にするために、未使用のメモリブロックがプールされる。
【０６６４】
有利には、バインド演算が進行するに従って、バインドプロセスの現在の段階および後続の段階と無関係なメンバしか含まないブロックは、リストから除去され、未使用メモリブロックのプールに戻される。
【０６６５】
コレクション集合は、組合せトンネルおよび／または集合トンネルにアクセスすることによって問合せ結果を具体化するのに使用される。コレクションメンバごとの確実性標識は、問合せ具体化によって、不確実性を解決するために要素インスタンスを検索する必要があるかどうか判定するのに使用される。
【０６６６】
データベースプロセス
【０６６７】
前述のアクセスモデルおよび記憶構造は、記憶内でデータを存続させ、データベース内の記憶から問合せ結果を検索するのに使用される。当該データベースのアーキテクチャは、図３５に示す階層および構成要素からなる。
【０６６８】
３つの大きな層は、関係モデルといったネイティブ・データ・モデル、およびＳＱＬといったネイティブコマンド言語のコンテキスト内でのユーザコマンドの全般的調整を担当するデータベースエンジンＡからなる。モデル変換層Ｂは、ネイティブ・データ・モデルと記憶エンジンＣによって使用されるアクセスモデルとの間の変換を担当する。記憶エンジンＣは、パス定義への変更の存続およびコレクションインスタンスへの変更の存続、ならびに問合せが必要とするコレクションインスタンスおよび要素インスタンスの検索を担当する。
【０６６９】
モデル変換ＢによってデータベースエンジンＡに提供されるインターフェースは、データベースエンジンＡによってサポートされるネイティブ・データ・モデルに依存する。関係データモデルについて、１つの好都合な実施形態では、このインターフェースは以下の通りである。
【０６７０】
モデル変換インターフェース
【表４６−１】
2013525881.tif 000048
【表４６−２】
2013525881.tif 000049
【０６７１】
記憶エンジンＣによってモデル変換層Ｂに提供されるインターフェースは、アクセスモデルの演算および演算子をサポートする。１つの好都合な実施形態では、このインターフェースは以下の通りである。
【０６７２】
記憶エンジンインターフェース
【表４７−１】
2013525881.tif 000050
【表４７−２】
2013525881.tif 000051
【０６７３】
コマンドは、ユーザインターフェースＡ１によってネイティブ言語で受け入れられ、ネイティブ言語パーサＡ２によって構文解析される。
【０６７４】
ネイティブスキーマへの変更を伴うコマンドは、スキーマ定義Ａ４を更新し、ネイティブエンティティからアクセス・モデル・エンティティへの変換のために、モデル変換Ｂを介してエンティティ変換Ｂ１へ渡される。コレクションパスおよび／または要素パスの定義への変更を伴うスキーマ変更は、パス定義Ｃ１による存続のために記憶エンジンＣへ渡される。宣言されたスキーマ制約条件は、定義済みの各要素パスの意図を確認することができるようにエンティティ変換Ｂ１へ渡される。
【０６７５】
トランザクション更新を伴うコマンドは、コマンド実行Ａ５とモデル変換Ｂを介して記憶エンジンＣへ渡され、エンティティ変換Ｂ１、演算変換Ｂ２、およびデータ型変換Ｂ３を経由し、パス定義Ｃ１を経由して記憶構造Ｃ６へ渡される。通過の間に、エンティティ変換Ｂ１はネイティブ・データ・モデル・エンティティをコレクションエンティティおよび要素パスエンティティに変換し、パス定義Ｃ１はコレクションパス識別情報および要素パス識別情報を解決し、演算変換Ｂ２は、コレクションインスタンス更新を、アクセス・モデル・コレクション・インスタンス反転および作成演算に変換し、データ型変換Ｂ３は、ネイティブデータ型を、識別、測定、列挙および不透明の各要素インスタンスについてのアクセス・モデル・データ型に変換する。
【０６７６】
問合せを伴うコマンドは、コマンド実行Ａ５とモデル変換Ｂを介して記憶エンジンＣへ渡され、エンティティ変換Ｂ１、演算変換Ｂ２、データ型変換Ｂ３、演算子変換Ｂ４、パス定義Ｃ１、式リファクタリングＣ２、演算子フェッチＣ３および演算バインドＣ４、検索およびマージＣ５を経由する。通過の間に、エンティティ変換Ｂ１は、ネイティブ・データ・モデル・エンティティをコレクションパスエンティティおよび要素パスエンティティに変換し、演算変換Ｂ２は、複合問合せステートメントをその構成要素の問合せに変換し、データ型変換Ｂ３は、ネイティブデータ型を、識別、測定、列挙要素および不透明の各インスタンスについてのアクセス・モデル・データ型に変換し、演算子変換Ｂ４は、すべてのネイティブ言語演算子を、アクセスモデル演算子（ＩＳ、ＩＮ、ＨＡＳ、ＥＸＩＳＴＳおよびＢＩＮＤ）に変換する。記憶エンジンＣは、パス定義Ｃ１を使用してコレクションパス名および要素パス名を解決し、式リファクタリングＣ２は、複合ブール式を論理和正規形の形に変換し、演算子フェッチＣ３で、記憶構造Ｃ６から、演算子ごとのコレクション集合を生成し、演算子バインドＣ４が、論理積項内の演算子からのコレクション集合をバインドし、検索およびマージＣ５が、記憶構造Ｃ６によるすべてのバインドされたコレクション集合および論理積からのすべての結果を検索し、マージする。問合せ結果は、集約演算および式評価演算のために演算変換Ｂ２を通り、次いで、アクセス・モデル・データ型のネイティブ・モデル・データ型への変換のためにデータ型変換Ｂ３を通って戻る。これらの結果は、問合せを開始したユーザの最終レンダリングのために、最終的には、提示Ａ３へ戻る。提示Ａ３は、提示される結果の最終的なソートおよび整理を担当する。
【０６７７】
問合せ実行の間に、演算子変換Ｂ４は、元の演算子基準を適用することによって戻される結果を検証し、損失のある変換から生じる結果を選別することができるように、予測される要素インスタンスと求められる結果集合とを要求しようとすることができる演算実行Ｂ２に、潜在的に損失のある述語演算子の変換を指示する。
【０６７８】
領域定義といった制約条件は、ネイティブスキーマ定義Ａ４内で定義され、コマンド実行Ａ５によりデータベースエンジンＡ内で執行される。コマンド実行Ａ５は、一意性および論理関係の制約条件を執行するときに、エンティティの存在または非存在を判定するために前述のような問合せを発行する。
【０６７９】
以下は、関係データベースのコンテキストで説明されるが、前述のアクセスモデルによってサポートされる他の任意のデータモデルにも同様に適用される。
【０６８０】
ユーザが新しいデータベースインスタンスを作成するためにＡ１を介してＳＱＬ言語を使用してコマンドを実行依頼するときに、ＳＱＬステートメントは、Ａ２によってその言語構成要素へと構文解析され、データベース名およびデータベース位置が抽出される。データベースエンジンは、それが有効なコマンドあることを検証し、Ａ４によってしかるべくスキーマ定義を更新する。データベース名および位置名は、記憶位置パスの導出のためにＢ１を介して記憶エンジンＣへ渡され、Ｃ６内で新しいデータベースインスタンスのために新しいファイル・システム・ディレクトリが作成され、サブディレクトリおよびメタデータファイルが作成される。
【０６８１】
ユーザが、既存のデータベースインスタンスを開くために、Ａ１を介してＳＱＬ言語を使用してコマンドを実行依頼するときに、ＳＱＬステートメントは、Ａ２によってその言語構成要素へと構文解析され、データベース名が抽出される。データベースエンジンは、Ａ４においてそのスキーマ定義を使用してそれが有効なコマンドであることを検証する。Ａ４におけるデータベース名と関連付けられた位置は、記憶位置パスの導出のために、Ｂ１を介して記憶エンジンＣへ渡され、ファイル・システム・ディレクトリがユーザに割り当てられ、最新のメタデータファイルがＣ６からメモリへロードされる。
【０６８２】
ユーザが、既存のデータベースインスタンスを削除するためにＡ１を介してＳＱＬ言語を使用してコマンドを実行依頼するときに、ＳＱＬステートメントは、Ａ２によってその言語構成要素へと構文解析され、データベース名が抽出される。データベースエンジンは、Ａ４においてそのスキーマ定義を使用してそれが有効なコマンドであることを検証する。Ａ４においてデータベース名と関連付けられた位置は、記憶位置パスの導出のために、Ｂ１を介して記憶エンジンＣへ渡され、ファイル・システム・ディレクトリ、その内のサブディレクトリおよびそこに含まれるファイルがＣ６内から削除される。
【０６８３】
ユーザが、表構造を作成するためにＡ１を介してＳＱＬ言語を使用してコマンドを実行依頼するときに、ＳＱＬステートメントは、Ａ２によってその言語構成要素へと構文解析され、表名および列名が抽出される。データベースエンジンは、それが有効なコマンドであることを検証し、Ａ４によってしかるべくスキーマ定義を更新する。表名および列名は、列のデータ型および制約条件と一緒にモデル変換Ｂへ渡される。そこで、（任意のスキーマおよびデータベース修飾子を含む）表名は、コレクションパスとして解釈され、各列名は、要素パスとして解釈され、各制約条件は、Ｂ１によって要素パスの意図を判定するのに使用される。コレクションパス、要素パスおよび要素パスの意図はＣ１へ渡され、コレクションパスに一意のコレクションパス序数が割り当てられ、各要素パスにコレクションパス内の一意の序数が割り当てられる。新しいコレクションパスについてのファイル・システム・ディレクトリが、Ｃ６によって各トンネル・ファミリ・ディレクトリ内で作成される。データベースメタデータはＣ６内で存続する。
【０６８４】
ユーザが、既存の表構造に１つまたは複数の列を加えるためにＡ１を介してＳＱＬ言語を使用してコマンドを実行依頼するときに、ＳＱＬステートメントは、Ａ２によってその言語構成要素へと構文解析され、表名および列名が抽出される。データベースエンジンは、それが有効なコマンドであることを検証し、Ａ４によってしかるべくスキーマ定義を更新する。表／列識別子は、Ｂ１によって、それぞれ、コレクションパスと要素パスとに解決され、要素パスの意図が、列のデータ型および制約条件から導出される。コレクションパス、要素パスおよび要素パスの意図はＣ１へ渡され、要素パスにはコレクションパス内の一意の序数が割り当てられる。データベースメタデータはＣ６内で存続する。
【０６８５】
ユーザが、表構造を削除するためにＡ１を介してＳＱＬ言語を使用してコマンドを実行依頼するときに、ＳＱＬステートメントは、Ａ２によってその言語構成要素へと構文解析され、表名が抽出される。データベースエンジンは、それが有効なコマンドであることを検証し、Ａ４によってしかるべくスキーマ定義を更新する。表名はモデル変換層Ｂへ渡され、そこでコレクションパスがＢ１によって識別される。コレクションパスおよびその内のすべてのファイルに明確に関連するディレクトリは、Ｃ６内のファイルシステムから削除される。次いで、コレクションパスは削除されたとマークされ、データベースメタデータはＣ６内で存続する。
【０６８６】
ユーザが、表構造から１つまたは複数の列を削除するためにＡ１を介してＳＱＬ言語を使用してコマンドを実行依頼するときに、ＳＱＬステートメントは、Ａ２によってその言語構成要素へと構文解析され、表名および列名が抽出される。データベースエンジンは、それが有効なコマンドであることを検証し、Ａ４においてしかるべくスキーマ定義を更新する。表名および列名はモデル変換層Ｂへ渡され、コレクションパスおよび要素パスがＢ１によって識別される。次いで要素パスは削除されたとマークされ、データベースメタデータはＣ６内で存続する。
【０６８７】
ユーザが、表構造を名前変更するためにＡ１を介してＳＱＬ言語を使用してコマンドを実行依頼するときに、ＳＱＬステートメントは、Ａ２によってその言語構成要素へと構文解析され、古い表名および新しい表名が抽出される。データベースエンジンは、それが有効なコマンドであることを検証し、Ａ４においてしかるべくスキーマ定義を更新する。表名はモデル変換層Ｂへ渡され、コレクションパスがＢ１によって古い表名から識別される。そこで、古い名前についてのコレクションパスにＣ１において新しいコレクションパス名が割り当てられ、データベースメタデータはＣ６内で存続する。
【０６８８】
ユーザが、表構造内の列を名前変更するためにＡ１を介してＳＱＬ言語を使用してコマンドを実行依頼するときに、ＳＱＬステートメントは、Ａ２によってその言語構成要素へと構文解析され、表名および列名が抽出される。データベースエンジンは、それが有効なコマンドであることを検証し、Ａ４においてしかるべくスキーマ定義を更新する。表名および列名はモデル変換層Ｂへ渡され、古い列名についてのコレクションパスおよび要素パスがＢ１によって識別される。要素パスにはＣ１において新しい列名が割り当てられ、データベースメタデータはＣ６内で存続する。
【０６８９】
ユーザが、表構造を短縮するためにＡ１を介してＳＱＬ言語を使用してコマンドを実行依頼するときに、ＳＱＬステートメントは、Ａ２によってその言語構成要素へと構文解析され、表名が抽出される。データベースエンジンは、Ａ４を使用してそれが有効なコマンドであることを検証する。表名はモデル変換層Ｂへ渡され、コレクションパスがＢ１によって識別される。Ｃ６内で、コレクションパスに関連するすべてのフレームファイルが削除され、閉じられたトランザクションに属する短縮されたコレクションパスについてのすべてのトランザクションセグメントがコレクションパスから割り当て解除される。
【０６９０】
ユーザが、表構造に明示的行を挿入するためにＡ１を介してＳＱＬ言語を使用してコマンドを実行依頼するときに、ＳＱＬステートメントは、Ａ２によってその言語構成要素へと構文解析される。データベースエンジンは、Ａ４によってそれが有効なコマンドであることを検証し、列値を列名と関連付ける。表名、列名および列値はモデル変換層Ｂへ渡され、コレクションパスおよび要素パスがＢ１およびＣ１によって識別される。供給される各列値は、Ｂ３により要素パスの意図に従って要素セル（識別、測定、列挙または不透明セル）に変換される。Ｃ６内で、１つまたは複数のトランザクションセグメントが現在のヒープファイルにおいて作成され、要素セルはそれらのファイルに加えられる。
【０６９１】
ユーザが、１つまたは複数の表構造からの行を問合せするためにＡ１を介してＳＱＬ言語を使用してコマンドを実行依頼するときに、ＳＱＬ選択ステートメントは、Ａ２によってその言語構成要素へと構文解析され、Ａ２はｓｅｌｅｃｔ節ごとに階層式木を作成し、ｗｈｅｒｅ節ごとに階層ＳＱＬ演算子木を作成する。これらはモデル変換層Ｂへ渡される。そこで、式木および演算子木内のコレクションパスおよび要素パスが、Ｂ１によって識別される。任意の複合ＳＱＬ問合せステートメントが、Ｂ２によって互いに異なる問合せへと分解され、Ｂ２はそれらを別々の問合せとして実行依頼する。問合せごとに、演算子木内のＳＱＬ演算子は、Ｂ４によってアクセスモデルの述語演算子およびバインド演算子に変換され、式木からのコレクションパス名および要素パス名のリストと一緒に記憶層Ｃへ渡され、演算子木はＣ２によって論理和正規形へリファクタリングされる。その後、別々のコレクション集合がＣ３によって述語演算子ごとに生成され、次いで、演算子木の論理積項内のコレクション集合が、Ｃ４においてバインド演算子によってバインドされる。必要なコレクションパスおよび要素パスについてのインスタンスが、Ｃ５によって演算子木の各論理積項内の各コレクション集合を介してＣ６からフェッチされ、Ｃ５において演算子木内の論理積項間で重複排除され、モデル変換層Ｂへ戻される。Ｂ２は、構成要素問合せの任意の必要な選別、集約または組換えを行う。これらの結果は、アクセス・モデル・データ型からＳＱＬデータ型へ再変換され、結果は、Ａ３による提示のためにデータベースエンジンＡへ返される。
【０６９２】
ユーザが、行を更新または削除する目的で表構造からの行を問合せするためにＡ１を介してＳＱＬ言語を使用してコマンドを実行依頼するときに、ＳＱＬ選択ステートメントは、Ａ２によってその言語構成要素へと構文解析され、Ａ２は、問合せについての述語条件を定義する階層ＳＱＬ演算子木を作成する。表の名前および演算子木はモデル変換層Ｂへ渡される。そこで、コレクションパスおよび要素パスがＢ１によって識別され、演算子木内のＳＱＬ演算子は、Ｂ４によってアクセスモデルの述語演算子に変換される。コレクションパスおよび演算子木は記憶エンジンＣへ渡され、演算子木はＣ２によって論理和正規形へリファクタリングされる。その後、別々のコレクション集合がＣ３によって述語演算子ごとに生成され、演算子木内の各論理積項内でマージされる。コレクション集合は、Ｃ５によって演算子木内の論理積項間で重複排除される。排他的反転ロックが、その結果を処理する前に最終的なコレクション集合のあらゆるメンバについて要求される。ユーザが行の削除を選択している場合、結果集合内の各コレクションインスタンスがその集合トンネルから検索され、Ｃ５によってコレクションインスタンス反転を作成するために複写され、１つまたは複数のトランザクションセグメントが作成され、反転セルおよびコレクションインスタンスの要素セルと共に追加される。ユーザが行の更新を選択している場合、元の各コレクションインスタンスが前述のように反転され、次いで、新しいコレクションインスタンスが変更された要素セルと共に挿入され、１つまたは複数のトランザクションセグメントがヒープファイルにおいて作成され、要素セルがそこに加えられる。
【０６９３】
以下の演算は、使用されるネイティブデータモデルから独立して、記憶エンジンＣにおいて行われる。
【０６９４】
トランザクションが開かれると、利用可能なトランザクションハンドルが利用可能なトランザクションハンドルのプールから割り当てられ、ヒープ・ファイル・トランザクション・ヘッダは、トランザクション状況（開いている）で更新されるが、記憶へは書き戻されない。
【０６９５】
トランザクションが適用されると、ヒープ・ファイル・トランザクション・ヘッダは、トランザクション状況（適用された）で更新されるが、記憶へは書き戻されない。次いでトランザクションは、次の適用サイクルが完了するのを待つ。トランザクションによって保持された反転ロックは放棄される。
【０６９６】
トランザクションが破棄されると、ヒープ・ファイル・トランザクション・ヘッダはトランザクション状況（破棄された）で更新されるが、記憶へは書き戻されない。トランザクションによって保持された更新は放棄される。
【０６９７】
適用サイクルが完了すると、ヒープファイル内のすべての新しいコンテンツおよび更新されたコンテンツは、記憶に書き戻され、同期される。
【０６９８】
コレクションインスタンスがトランザクションによってヒープファイルに追加されると、トランザクションについての集合トンネルが作成される。使用されるトンネル番号は、このヒープファイル内の同じコレクションパスについての最後の集合トンネル番号より１大きい。１つまたは複数のトランザクションセグメントが集合トンネルについて作成され、各要素インスタンス値に対応するセルが、作成されたトランザクションセグメントに追加される。
【０６９９】
コレクションインスタンス反転がトランザクションによってヒープファイルに追加されると、集合トンネルがトランザクションについて作成される。使用されるトンネル番号は、このヒープファイル内の同じコレクションパスについての最後の集合トンネル番号より１大きい。１つまたは複数のトランザクションセグメントが集合トンネルについて作成される。１つの反転セルが作成されたセグメントに追加され、その後に続いて元のコレクションインスタンスからの各要素インスタンス値に対応するセルが追加される。
【０７００】
ＤＮＦ式が開いたトランザクション内の問合せのコンテキスト内で評価されているときに、
【０７０１】
ＤＮＦ内の論理積項について、後述するように、論理積項内の述語演算子リテラルごとにコレクション集合が作成される。各演算子は、ＤＮＦ全体の他の演算子と同時に、それ自体のコレクション集合を生成することができる。
【０７０２】
同じコレクションパスエイリアスについてのすべてのコレクション集合は、そのコレクションパスにおけるあらゆるコレクション集合内で同じフレーム番号および集合トンネル番号を伴って発生する集合メンバだけが保持されるように、各論理積項内で一緒にマージされる。
【０７０３】
各論理積項内のコレクション集合は、後述するように、同じ論理積項内で出現するバインド演算子によってバインドされる。論理積項のバインドは、他の論理積項のバインドと同時に行うことができる。
【０７０４】
各コレクション集合は並び順でソートされる。コレクション集合は、ＤＮＦ全体にわたって同時にソートされてもよい。
【０７０５】
各コレクション集合は、それらのコレクション集合において識別され、並び順に検索される対応する集合トンネルおよび／または組合せセルからデータを検索するのに使用される。コレクション集合ごとのエントリは、論理積項内のすべてのコレクション集合にわたって同時にエントリごとに検索され、エントリごとにマージされる。検索はＤＮＦ内の論理積項全体にわたって順次に行われ、結果は、２つの論理積項によって生み出される同じ結果が繰り返されないように重複排除される。
【０７０６】
問合せが、測定要素インスタンスが戻されることしか必要としない場合、検索されるメンバごとに、対応する組合せトンネルが、コレクション集合フレーム番号を使用してフレームファイルから読み取られ、集合トンネル番号を使用してランクトンネルにおける特定のランクセルがアドレス指定され、そうでない場合、集合トンネルが、コレクション集合フレーム番号および集合トンネル番号を使用してフレームファイルから読み取られる。
【０７０７】
（単一のコレクションパスについての）ＤＮＦ式が、開いたトランザクション内の更新のコンテキスト内で評価されているとき、
【０７０８】
ＤＮＦ内の各論理積項について、後述するように、その論理積項内の述語演算子リテラルごとにコレクション集合が作成される。各演算子は、ＤＮＦ全体の他の演算子と同時に、それ自体のコレクション集合を生成することができる。
【０７０９】
すべてのコレクション集合は、あらゆるコレクション集合において同じフレーム番号および集合トンネル番号を伴って発生するエントリだけが保持されるように、各論理積項内で一緒にマージされる。その後は、１つの論理積項につき１つのコレクション集合だけがあることになる。
【０７１０】
各コレクション集合は、フレーム番号および集合トンネル番号を直接戻すのに使用される。検索は論理積項全体にわたって順次に行われ、結果は、２つの論理積項によって生み出される同じ結果が繰り返されないように重複排除される。
【０７１１】
各結果が検索される際に、フレーム番号とトンネル番号の組合せに対して排他的ロックが要求される。ロックが直ちに許諾されない場合、プロセスはそれが許諾されるまで待機しなければならない。すでにロックを所有しているトランザクションにはそのロックが直ちに許諾される。
【０７１２】
構成可能なタイムアウト期間の後で、ロックがまだ許諾されていない場合、プロセスはすべてのコレクション集合リソースおよびそれまで獲得されたロックを放棄し、引き続きロックが許諾されるのを待つ。ロックが許諾されると、ロックは保持され、ここでいうＤＮＦ評価が再開される。
【０７１３】
ＤＮＦ内の論理積項のコンテキスト内でコレクション集合をバインドするとき、
【０７１４】
コレクション集合およびバインド演算子は、前述した順に訪問される。
【０７１５】
各コレクション集合が訪問される際に、メンバごとのダイジェストトンネル番号に、対応するコレクショントンネル番号によってアクセスされるバインド要素パスについてのダイジェスト・トンネル・マップから直接（番号が）読み込まれ、メンバ順位に集合内のメンバの順位が読み込まれる。
【０７１６】
次いで、ダイジェストトンネルおよび順位は、ソートされ、フレームおよびダイジェストトンネルおよび位置の昇順に並べ替えられ、次いで、各フレーム内のトンネル番号順のすべてのエントリについて、ダイジェストエントリに読み込まれる。
【０７１７】
各バインド演算子が訪問される際に、終点コレクション集合は希薄になり、そのため、起点集合内に対応するダイジェストトンネル番号のないメンバはその濃度を０にリセットさせる。これは、起点ダイジェストトンネルと関連付けられたセル数から求められる。
【０７１８】
相関する起点メンバは、前述のようにバインド演算子によって伝搬される。コレクション集合にまたがる任意の２つの相関するエントリは、等価のダイジェストトンネル番号および等価のダイジェストを持たなければならない。トンネル番号またはダイジェストのどちらかが異なる場合、メンバは可能な相関から割り引かれ、そうでない場合、エントリは相互に関連付けられる。
【０７１９】
バインド濃度は、前述のように、バインド演算子によって起点コレクション集合へ反映される。
【０７２０】
バインドプロセスが進行するに従って、前の伝搬シーケンスに関連する、すなわち設定された訪問序数より小さい訪問序数を有するすべてのメンバが廃棄される。
【０７２１】
開いたトランザクションのコンテキストにおいてｅｘｉｓｔｓ（）演算子についてのコレクション集合を生成するとき、
【０７２２】
逆フレーム順のヒープファイルごとに、このコレクションパスについての、このトランザクションまたは任意の閉じられたトランザクションに関連するトランザクションセグメントが逆時系列順にナビゲートされる。反転を含むセルごとに、フレーム番号と集合トンネル番号の組合せをメモリベースの反転の集合に加える。必要な要素パスについての要素セルを含むセルは、そのフレーム番号と集合トンネル番号の組合せがメモリベースの反転の集合に含まれない場合に、コレクション集合に含まれる。
【０７２３】
要素パスについてのメモリ常駐フレームマップは、倍率の昇順に調べられ、倍率内で、現在のフレーム番号からフレームの降順に調べられる。
【０７２４】
一致するフレーム間隔が見つかる場合（少なくとも１つ要素が存在する場合）には、その間隔を開始するフレーム番号が選択される。すでにスキャンされたヒープファイルに関連するフレーム番号は無視する。
【０７２５】
選択されたフレーム番号が現在開いているフレームファイルのフレーム番号でない場合には、選択されたフレーム番号を有するコレクションパスの集合トンネルについてのフレームファイルおよび要素パスのトンネルファミリについてのフレームファイルが開かれる。
【０７２６】
コレクションパスについての反転トンネルおよび必要な要素パスについての存在トンネルが、開かれたフレームファイルから読み取られる。反転のビットマップマップが、現在のフレーム内のコレクショントンネルごとにクリアビットを伴って作成される。
【０７２７】
反転トンネルが、反転セルについて、見つかったセルごとにスキャンされ、反転されたフレームと反転されたトンネル番号の組合せが、メモリベースの反転の集合に加えられ、反転するトンネルに対応するビットが反転のビットマップにおいて設定される。
【０７２８】
存在トンネルが、要素の存在を指示するセルについてスキャンされる。メモリベースの反転の集合内に対応するエントリを有するセルは無視され、それ以外に、反転のビットマップにおいて対応するビットが設定されている各セルが無視され、それ以外に、フレーム番号および集合トンネル番号がコレクション集合に加えられる。
【０７２９】
コレクション集合エントリは常に確実としてマークされる。
【０７３０】
要素パスのフレームマップが、次の関連するフレームを決定するために要素パスに関連した現在開いているフレームファイルから読み取られ、次のフレームが見つからなくなるまで上記のように続行される。
【０７３１】
開いたトランザクションのコンテキストにおいてｉｓ（）演算子についてのコレクション集合を生成するとき、
【０７３２】
連結トンネル番号およびダイジェスト番号が演算子オペランドから導出される。
【０７３３】
逆フレーム順のヒープファイルごとに、このコレクションパスについての、このトランザクションまたは任意の閉じられたトランザクションに関連するトランザクションセグメントが、逆時系列順にナビゲートされる。反転を含むセルごとに、フレーム番号と集合トンネル番号の組合せをメモリベースの反転の集合に加える。演算子オペランドと等価の値を有する必要な要素パスについての識別要素セルを含むセルは、そのフレーム番号と集合トンネル番号の組合せがメモリベースの反転の集合に含まれない場合に、コレクション集合に含まれる。
【０７３４】
要素パスについてのメモリ常駐フレームマップは、倍率の昇順に調べられ、倍率内で、現在のフレーム番号からフレームの降順に調べられる。
【０７３５】
一致するフレーム間隔が見つかる場合（間隔内のどの共通ビットも演算子オペランドと異ならない場合）には、その間隔を開始するフレーム番号が選択される。すでにスキャンされたヒープファイルに関連するフレーム番号は無視する。
【０７３６】
選択されたフレーム番号が現在開いているフレームファイルのフレーム番号でない場合には、選択されたフレーム番号を有するコレクションパスについての集合トンネルおよび連結トンネルについてのフレームファイルが開かれる。
【０７３７】
コレクションパスについての反転トンネルおよび演算子オペランドから導出されたダイジェストトンネルが開かれたフレームファイルから読み取られる。反転のビットマップマップが、現在のフレームにおけるコレクショントンネルごとにクリアビットを伴って作成される。
【０７３８】
反転トンネルが、反転セルについて、見つかったセルごとにスキャンされ、反転されたフレームと反転されたトンネル番号の組合せが、メモリベースの反転の集合に加えられ、反転するトンネルに対応するビットが反転のビットマップにおいて設定される。
【０７３９】
ダイジェストトンネルは、一致するダイジェストセルについてスキャンされる。メモリベースの反転の集合内に対応するエントリを有するダイジェストセルは無視され、それ以外に、反転のビットマップにおいて対応するビットが設定されている各セルが無視され、それ以外に、フレーム番号および集合トンネル番号がコレクション集合に加えられる。
【０７４０】
コレクション集合エントリは、ダイジェストセルが十分である場合には確実としてマークされ、そうではなく、エントリがフレームファイルから生じる場合には、不確実とマークされ、他方、ヒープファイルから生じるエントリは、常に確実としてマークされる。
【０７４１】
要素パスのフレームマップが、次の関連するフレームを決定するために、要素パスに関連する現在開いているフレームファイルから読み取られ、次のフレームが見つからなくなるまで上記のように続行される。
【０７４２】
開いたトランザクションのコンテキストにおいて、ｉｎ（）演算子についてのコレクション集合を生成するとき、
【０７４３】
両方の演算子オペランドが正である場合には、必要な符号を正とし、必要な範囲を、演算子オペランドの低い絶対値と高い絶対値の間とし、そうではなく、両方のオペランドが負である場合には、必要な符号を負とし、必要な範囲を、演算子オペランドの低い絶対値と高い絶対値の間とし、それ以外の場合には、サーチを、必要な範囲が最小の演算子オペランドと０との間であり、必要な符号が負であるサーチと、範囲が０と最大の演算子オペランドとの間であり、必要な符号が正であるサーチの２つに分割する。
【０７４４】
必要な範囲の両境界が、固定小数点の前後の固定数の有効数字部バイトへと正規化される。決定ランクが正規化境界から決定され、ピボットランクは、両正規化境界に共通の有効数字部バイトを有する最低のランクである。ピボットランクにおける共通のバイト値をピボット値と呼ぶ。
【０７４５】
逆フレーム順のヒープファイルごとに、コレクションパスについての、このトランザクションまたは任意の閉じられたトランザクションに関連するヒープセグメントが、逆時系列順にナビゲートされる。反転を含むセルごとに、フレーム番号と集合トンネル番号の組合せをメモリベースの反転の集合に加える。必要な範囲内の値および必要な符号を有する必要な要素パスについての測定要素セルを含むセルは、そのフレーム番号と集合トンネル番号の組合せがメモリベースの反転の集合に含まれない場合に、コレクション集合に含まれる。
【０７４６】
要素パスについてのメモリ常駐フレームマップは、倍率の昇順に調べられ、現在のフレーム番号からのフレームの降順に調べられる。
【０７４７】
一致するフレーム間隔が見つかる場合（フレーム間隔範囲が演算子オペランド範囲とオーバーラップする場合）には、その間隔を開始するフレーム番号が選択される。すでにスキャンされたヒープファイルに関連するフレーム番号は無視する。
【０７４８】
選択されたフレーム番号が現在開いているフレームファイルのフレーム番号でない場合には、選択されたフレーム番号を有するコレクションパスの集合トンネルおよび組合せトンネルについてのフレームファイルが開かれる。
【０７４９】
要素パスについての存在トンネル、符号トンネルおよびすべての組合せトンネルが、要素パスのフレームファイルから読み取られ、反転トンネルがコレクションパスのフレームファイルから読み取られる。反転のビットマップマップが、現在のフレームにおけるコレクショントンネルごとにクリアビットを伴って作成される。
【０７５０】
反転トンネルが、反転セルについて、見つかったセルごとにスキャンされ、反転されたフレームと反転されたトンネル番号の組合せが、メモリベースの反転の集合に加えられ、反転するトンネルに対応するビットが反転のビットマップにおいて設定される。
【０７５１】
ピボット値についての関連セルが存在するかどうか確かめるために、ピボットランクの組合せトンネルについてのセル数が調べられる。ピボット値についての関連セルが存在しない場合、現在のフレームマップ内の前のフレームへ移動し、上記を続行する。
【０７５２】
最高のランクからピボットランクまでのランクごとに、セル数を使用して、すべてのセルがそのランクより上のトンネルにおいて０であり、両オペランドにおける対応するランク値が０である最低のランクを見つける。このランクを高いランクと呼ぶ。
【０７５３】
最低のランクからピボットランクまでのランクごとに、セル数を使用して、すべてのセルがそのランクより下のトンネルにおいて０であり、両オペランドにおける対応するランク値が０である最高のランクを見つける。このランクを低いランクと呼ぶ。
【０７５４】
ピボットランクについての組合せトンネルが、ピボットバイトと一致するランクセルについてスキャンされる。対応する存在セルを持たないランクセルは無視され、それ以外に、メモリベースの反転の集合内に対応するエントリを有するランクセルが無視され、それ以外に、反転のビットマップにおいて対応するビットが設定されている各セルが無視され、それ以外には、対応する符号セルおよび高いランクと低いランクとの間のランクセルを参照して、符号が必要な符号であり、組合せトンネルのランクの大きさが必要な範囲内にあることを確認し、そうである場合、フレーム番号および集合トンネル番号がコレクション集合に加えられる。
【０７５５】
コレクション集合エントリが確実としてマークされる。
【０７５６】
要素パスのフレームマップが、次の関連するフレームを決定するために、要素パスに関連する現在開いているフレームファイルから読み取られ、次のフレームが見つからなくなるまで上記のように続行される。
【０７５７】
開いたトランザクションのコンテキストにおいて、ｈａｓ（）演算子についてのコレクション集合を生成するとき、
【０７５８】
特性トンネル番号が、演算子オペランドから導出される。
【０７５９】
逆フレーム順のヒープファイルごとに、コレクションパスについて、このトランザクションまたは任意の閉じられたトランザクションに関連するヒープセグメントが、逆時系列順にナビゲートされる。反転を含むセルごとに、フレーム番号と集合トンネル番号の組合せをメモリベースの反転の集合に加える。すべての演算子プロパティオペランドを含む必要な要素パスについての列挙要素セルを含むセルは、そのフレーム番号と集合トンネル番号の組合せがメモリベースの反転の集合に含まれない場合に、コレクション集合に含まれる。
【０７６０】
要素パスについてのメモリ常駐フレームマップは、倍率の昇順に調べられ、次いで、現在のフレーム番号からフレームの降順に調べられる。
【０７６１】
一致するフレーム間隔が見つかる場合（すべての必要な特性トンネル番号のビットが設定されている場合）には、その間隔を開始するフレーム番号が選択される。すでにスキャンされたヒープファイルに関連するフレーム番号は無視する。
【０７６２】
選択されたフレーム番号が現在開いているフレームファイルのフレーム番号でない場合には、選択されたフレーム番号を有するコレクションパスについての集合トンネルおよび特性トンネルについてのフレームファイルが開かれる。
【０７６３】
存在トンネルおよび演算子オペランドから導出された必要な特性トンネルが、要素パスのフレームファイルから読み取られ、反転トンネルがコレクションパスのフレームファイルから読み取られる。反転のビットマップマップが、現在のフレームにおけるコレクショントンネルごとにクリアビットを伴って作成される。
【０７６４】
反転トンネルが、反転セルについて、見つかったセルごとにスキャンされ、反転されたフレームと反転されたトンネル番号の組合せが、メモリベースの反転の集合に加えられ、反転するトンネルに対応するビットが反転のビットマップにおいて設定される。
【０７６５】
必要な特性トンネルが、ビットマップとして論理積的に組み合わされ、すべての必要な特性トンネルにおける対応するコレクションインスタンスにおいてビットが設定されているビット位置だけが設定される。組合せビットマップが設定ビットについてスキャンされ、対応する存在セルを持たない集合ビットが無視され、メモリベースの反転の集合内に対応するエントリを有する設定ビットが無視され、それ以外に、反転のビットマップにおいて対応するビットが設定されている各セルが無視され、それ以外に、フレーム番号および集合トンネル番号がコレクション集合に加えられる。
【０７６６】
コレクション集合エントリは、エントリがフレームファイルから生じる場合には、プロパティトンネル番号が一意のプロパティ序数から導出され、（Ｍ−Ｎ）＜Ｐ＜２Ｎであり、式中、Ｐはプロパティ序数であり、Ｍは割り当てられる最大序数であり、Ｎはプロパティトンネルの数である場合に、確実としてマークされ、他方、ヒープファイルから生じるエントリは、常に確実とマークされる。
【０７６７】
要素パスのフレームマップが、次の関連するフレームを決定するために、要素パスに関連する現在開いているフレームファイルから読み取られ、次のフレームが見つからなくなるまで上記のように続行される。
【０７６８】
開いたトランザクションのコンテキストにおいて、ｔｒｕｅ（）演算子についてのコレクション集合を生成するとき、
【０７６９】
逆フレーム順のヒープファイルごとに、このコレクションパスについての、このトランザクションまたは任意の閉じられたトランザクションに関連するトランザクションセグメントが、逆時系列順にナビゲートされる。反転を含むセルごとに、フレーム番号と集合トンネル番号の組合せをメモリベースの反転の集合に加える。必要なコレクションパスについての任意のコレクションインスタンス識別情報は、そのフレーム番号と集合トンネル番号の組合せがメモリベースの反転の集合に含まれない場合に、コレクション集合に含まれる。
【０７７０】
コレクションパスについてのメモリ常駐フレームマップが、最低の倍率において、現在のフレーム番号からフレームの降順に調べられる。すでにスキャンされたヒープファイルに関連するフレーム番号は無視する。
【０７７１】
フレーム・マップ・エントリが１つまたは複数の反転を指示する場合には、集合フレームファイルを開き、反転トンネルを読み取り、反転のビットマップマップが、現在のフレーム内のコレクショントンネルごとにクリアビットを伴って作成され、反転トンネルをスキャンし、見つかった反転セルごとに、見つかった反転ごとのメモリベースの反転の集合に反転されたフレームと反転されたトンネル番号の組合せを加え、反転するトンネルに対応するビットが反転のビットマップにおいて設定される。
【０７７２】
トンネル１から開始し、フレームマップによって指定されるコレクションインスタンスの数において終了するが、反転のビットマップにおいてビットが設定されており、またはメモリベースの反転の集合に対応するエントリを有するものを除くコレクション・インスタンス・トンネルの連続したシーケンスを追加する。これらのエントリのフレーム番号は、フレーム・マップ・エントリを検査するのに使用されるフレーム番号である。
【０７７３】
コレクション集合エントリは、常に確実としてマークされる。
【０７７４】
コレクションパスのフレームマップが、現在開いているフレームファイルから読み取られ、引き続き上記のように先行するフレームに進む。これは、次のフレームが見つからなくなるまで上記のように続行される。
【０７７５】
開いたトランザクションのコンテキストにおいて、論理積項を具体化するとき、
【０７７６】
コレクション集合内の不確実なエントリごとに、確実性または不可能性を判定するために、対応する集合トンネルが読み取られなければならず、対応する要素インスタンスが検査されなければならない。
【０７７７】
要素インスタンスが続いて不可能であるとみなされる場合、その濃度が０とマークされ、エントリがコレクション集合においてボイドとして取り扱われ、論理積項内のコレクション集合のマージの間にすべての対応するエントリを無効にする。
【０７７８】
ヒープファイルからフレームファイルへセグメントを移行するとき、
【０７７９】
まだ移行されていない適用されたトランザクションに関連するセグメントだけが移行される。破棄されたトランザクションに関連するセグメントは無視される。開いたトランザクションに関連するセグメントはカウントされる。
【０７８０】
各コレクションパスを個別に順に移行する。
【０７８１】
トンネルファミリごと、およびコレクションパス内の要素パスごとに、メモリ・セクタ・マップおよびトンネルを作成する。各トンネルの開始時にトンネルリンクを前のフレームとして初期設定する。
【０７８２】
コレクションパスを移行するに先立ち、コレクションパスおよびそれに関連した要素パスについてのフレームマップを、移行されるフレームに先行するフレームファイルからメモリへ読み取る。
【０７８３】
コレクションパスを移行するに先立ち、記憶マップ、コレクションパスについての反転トンネルおよびすべての関連する要素パストンネルについてのトンネルを、移行されるフレームへ累積させる必要のある任意のフレームファイルからメモリへ読み取る。
【０７８４】
移行されるセグメントごとに、メモリにおいて新しい集合トンネルを作成し、セグメントセルを集合トンネルへ複写する。反転について、反転トンネルに反転セルを追加する。コレクションパスのフレームマップを前述のように更新する。次いで、セグメント内の各要素セルを移行し、コレクションパスの記憶マップを更新する。
【０７８５】
識別要素ごとに、ダイジェストセルを前述のように構築し、それを関連するダイジェストトンネルに追加する。ダイジェストトンネル番号をトンネルマップに追加する。存在セルを要素パスの存在トンネルに追加する。要素値からの要素パスのフレームマップを前述のように更新し、要素パスの記憶マップを更新する。
【０７８６】
測定要素ごとに、ランクトンネルごとのランクセルを前述のように構築し、それらを関連するランクトンネルに追加する。存在セルを要素パスの存在トンネルに追加する。要素値からの要素パスのフレームマップを前述のように更新し、要素パスの記憶マップを更新する。
【０７８７】
列挙要素ごとに、プロパティトンネルごとのプロパティセルを前述のように構築し、それを関連するプロパティトンネルに追加する。存在セルを要素パスの存在トンネルに追加する。要素値からの要素パスのフレームマップを前述のように更新し、要素パスの記憶マップを更新する。
【０７８８】
セグメント内のあらゆる要素セルを移行した後で、非存在セルを、セグメントに含まれないあらゆる要素パスについての存在トンネルに追加し、０ランクセルを、セグメント内のすべての非存在要素パス内のあらゆるランクトンネルに追加し、非存在プロパティセルを、セグメント内のすべての非存在要素パス内のあらゆるプロパティトンネルに追加する。
【０７８９】
すべてのセグメントを移行した後で、最高のヒープ・ファイル・フレーム番号を使用してフレームファイルを作成し、すでに存在している可能性のあるそのようなフレームファイルを上書きする。セクタマップ、フレームマップおよびトンネルを各フレームファイルに書き込む。
【０７９０】
ヒープファイル内のすべての移行トランザクションハンドルを移行されたとマークし、ヒープファイルを記憶と同期させる。
【０７９１】
各移行トランザクションハンドルを再利用可能にする。
【０７９２】
ヒープファイルが開いたトランザクションに関連するセグメントを含む場合には、ヒープファイルを保持し、そうでない場合にはヒープファイルを削除する。
【０７９３】
以上は、特に、前述の目的を果たす装置、システム、および方法の説明である。本明細書で論じ、図示した実施形態は本発明の単なる例にすぎず、本明細書で図示し、説明した実施形態への変更を組み込んだ他の実施形態も、本発明の範囲内に含まれることが理解されるであろう。
【図１】
2013525881.tif 000052
【図２】
2013525881.tif 000053
【図３】
2013525881.tif 000054
【図４】
2013525881.tif 000055
【図５】
2013525881.tif 000056
【図６】
2013525881.tif 000057
【図７】
2013525881.tif 000058
【図８】
2013525881.tif 000059
【図９】
2013525881.tif 000060
【図１０】
2013525881.tif 000061
【図１１】
2013525881.tif 000062
【図１２】
2013525881.tif 000063
【図１３】
2013525881.tif 000064
【図１４】
2013525881.tif 000065
【図１５】
2013525881.tif 000066
【図１６】
2013525881.tif 000067
【図１７】
2013525881.tif 000068
【図１８】
2013525881.tif 000069
【図１９】
2013525881.tif 000070
【図２０】
2013525881.tif 000071
【図２１】
2013525881.tif 000072
【図２２】
2013525881.tif 000073
【図２３】
2013525881.tif 000074
【図２４】
2013525881.tif 000075
【図２５】
2013525881.tif 000076
【図２６】
2013525881.tif 000077
【図２７】
2013525881.tif 000078
【図２８】
2013525881.tif 000079
【図２９】
2013525881.tif 000080
【図３０】
2013525881.tif 000081
【図３１】
2013525881.tif 000082
【図３２】
2013525881.tif 000083
【図３３】
2013525881.tif 000084
【図３４】
2013525881.tif 000085
【図３５】
2013525881.tif 000086
【国際調査報告】
2013525881.tif 000087
2013525881.tif 000088
2013525881.tif 000089