(57)【要約】      （修正有）【課題】分散型データ記憶を管理するデータベース制御部、方法及びプログラムを提供する。【解決手段】データベース制御部は、データアイテムのセットをセグメントのシリーズに分割するよう構成されるセグメント制御モジュールであって、各セグメントは前記データアイテムを順に配置するために用いられる順序付けメトリックの所定の下限値及び上限値の範囲内に包含される各データアイテムを有する、セグメント制御モジュールと、複数の記憶ユニットの間で前記セグメントのシリーズの分布を管理するよう構成される適応型セグメントロケータモジュールであって、前記分布の管理は、前記データベースに対して実行されるリード動作を表す履歴データに基づく、前記セグメントのシリーズの中からの同じ記憶ユニットに同一場所に配置すべきセグメントの選択を含む、適応型セグメントロケータモジュールと、を有するデータベース制御部を含む。【選択図】図１
2014225260.tif 000002
【特許請求の範囲】
【請求項１】
データアイテムのセットとして符号化された情報のデータベースのためのデータベース制御部であって、前記データベース制御部は、
前記データアイテムのセットをセグメントのシリーズに分割するよう構成されるセグメント制御モジュールであって、各セグメントは前記データアイテムを順に配置するために用いられる順序付けメトリックの所定の下限値及び上限値の範囲内に包含される各データアイテムを有する、セグメント制御モジュールと、
複数の記憶ユニットの間で前記セグメントのシリーズの分布を管理するよう構成される適応型セグメントロケータモジュールであって、前記データベースに対して実行されるリード動作を表す履歴データに基づき、前記セグメントのシリーズの中から同じ記憶ユニットに同一場所に配置すべきセグメントを選択することを含む、適応型セグメントロケータモジュールと、
を有するデータベース制御部。
【請求項２】
前記データアイテムのセットに対する範囲クエリを受信するよう構成される範囲クエリ処理モジュールであって、前記範囲クエリは順序付けメトリック値の上側境界及び下側境界を定め、前記範囲クエリ処理モジュールは、前記データアイテムが前記順序付けメトリックの順に配置されるとき、前記定められた上側境界及び下側境界の間に包含されるデータアイテムのセットの中から各データアイテムの重複で応答するよう構成される、範囲クエリ処理モジュール、
を更に有する請求項１に記載のデータベース制御部。
【請求項３】
前記範囲クエリ処理モジュールは、
前記セグメント制御モジュールを用いて、前記上側境界及び前記下側境界により定められる範囲と少なくとも部分的に重なり合う範囲を定める所定の上限値及び下限値を有するセグメントを識別し、
前記適応型セグメントロケータを用いて、前記複数の記憶ユニットの中から前記識別されたセグメントを格納する記憶ユニットを識別し、
前記識別された記憶ユニットに、前記順序付けメトリックによる順序に配置されたとき前記上側境界及び前記下側境界の範囲内に包含されるデータアイテムに対するリード要求を発行することにより、
前記重複を得るよう構成される、請求項２に記載のデータベース制御部。
【請求項４】
前記セグメントのシリーズの中から同じ記憶ユニットに同一場所に配置すべきセグメントを選択することは、セグメント対の複数の順列について関連付けメトリックのスコアを計算すること、及び前記セグメント対の複数の順列についての前記関連付けメトリックの前記スコアに依存して同一場所に配置すべきセグメントを選択すること、を含む、請求項１乃至３のいずれか一項に記載のデータベース制御部。
【請求項５】
前記セグメントのシリーズの中から同じ記憶ユニットに同一場所に配置すべきセグメントを選択することは、同じ記憶ユニットに同一場所に配置されるセグメント対の間の前記関連付けメトリックの総スコアを最適化するアルゴリズムを実行することを更に含む、請求項４に記載のデータベース制御部。
【請求項６】
前記データベースに対して実行されるリード動作を表す前記履歴データは、同じリード動作で読み出されるデータアイテムのレコードを含み、
前記セグメント対の関連付けメトリックのスコアは、前記セグメント対の中の両者からのデータアイテムが同じリード動作で読み出された回数に比例する構成要素を含み、及び／又は
前記セグメント対の関連付けメトリックのスコアは、最多回数同じリード動作で読み出された前記セグメント対の各々から１つのデータアイテム対が、同じリード動作で読み出された回数に比例する構成要素を含む、
請求項４又は５に記載のデータベース制御部。
【請求項７】
セグメント対の関連付けメトリックのスコアは、データアイテムレベルで前記関連付けメトリックを適用することにより計算され、関連付けメトリックの最高スコアを有するセグメント対のうちの各々から１つのデータアイテム対を発見し、及び前記最高スコアを前記セグメント対の間の関連付けメトリックのスコアとして設定することを含む、請求項１乃至６のいずれか一項に記載のデータベース制御部。
【請求項８】
各セグメントは、セグメントＩＤにより前記セグメントのシリーズの中から識別可能であり、
前記セグメント制御モジュールは、各セグメントについて、前記セグメントＩＤ及び前記セグメントの前記所定の上限及び下限のレコードを維持するよう構成される、
請求項１乃至７のいずれか一項に記載のデータベース制御部。
【請求項９】
各セグメントの前記セグメントＩＤは、前記セグメント内のデータアイテムの各々に共通するデータのプレフィックス部分であり、前記プレフィックス部分は、前記セグメントの上限及び下限を定め、及び／又は
データアイテムの前記プレフィックス部分は、前記データアイテムを形成するデータの開始部分であり、前記順序付けメトリックによりデータアイテムの順序を決定するために用いられるデータの一部又は全部を形成する、
請求項８に記載のデータベース制御部。
【請求項１０】
前記セグメント制御モジュールにより維持される前記レコードは、プレフィックスツリーである、請求項９に記載のデータベース制御部。
【請求項１１】
前記情報のデータベースは、データアイテムの１又は複数の追加セットとしても符号化され、前記セグメント制御モジュール及び前記適応型セグメントロケータモジュールは、前記データアイテムのセットの各々及び前記データアイテムの１又は複数の追加セットをデータアイテムの別個のセットとして扱うよう構成され、
前記データアイテムのセット内の各データアイテムは、各追加データセット内の同じ情報を符号化する対応するデータアイテムを有し、前記データアイテムを形成するデータ要素は、前記データアイテム及び各対応するデータアイテム内で異なる方法で順序付けされる、
請求項１乃至１０のいずれか一項に記載のデータベース制御部。
【請求項１２】
前記情報のデータベースはグラフデータベースであり、前記グラフデータベースを符号化するデータアイテムのセットは、それぞれ３つのトリプル要素の各々の値を有するトリプルのセットである、請求項１乃至１１のいずれか一項に記載のデータベース制御部。
【請求項１３】
請求項１乃至１２のいずれか一項に記載のデータベース制御部と、前記複数の記憶ユニットと、を有するデータ記憶システム。
【請求項１４】
データアイテムのセットとして符号化された情報のデータベースのデータベース制御部により実行される方法であって、前記方法は、
前記データアイテムのセットをセグメントのシリーズに分割するステップであって、各セグメントは前記データアイテムを順に配置するために用いられる順序付けメトリックの所定の下限値及び上限値の範囲内に包含される各データアイテムを有する、ステップと、
複数の記憶ユニットの間で前記セグメントのシリーズの分布を管理するステップであって、前記データベースに対して実行されるリード動作を表す履歴データに基づき、前記セグメントのシリーズの中からの同じ記憶ユニットに同一場所に配置すべきセグメントを選択するステップを含む、ステップと、
を有する方法。
【請求項１５】
コンピューティング装置又は複数の相互接続されるコンピューティング装置により実行されると、前記コンピューティング装置又は複数の相互接続されるコンピューティング装置に、請求項１乃至１２のいずれか一項に記載のデータベース制御部又は請求項１３に記載のデータ記憶システムとして動作させ、或いは請求項１４に記載の方法を実行させる、ソフトウェア。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ記憶及び検索の分野に関する。特に、本発明は、データアイテムのセットとして符号化された情報のデータベースに提出される広範なクエリの処理に関する。
【背景技術】
【０００２】
分散型データ記憶、例えばグラフデータベースは、過去数年間集中的に研究されている。有力な技術的ソリューションは、特定の提示に対して調整される種々のデータ区分アプローチ及び／又はデータキャッシュソリューションを含む。これら２つのソリューションは理想的ではない。データ区分及び／又はクラスタリングは、本質的に複雑であり、一般的にＮＰ完全であり得る。オントロジのためのグラフ表現を用いるとき、複数の記憶ユニットに渡りデータバランスを維持しデータの重複を最小限に抑え、同時に分散処理中にいかなる知識も失われないことを保証することは困難である。したがって、サブグラフ間参照が頻繁に生じ、グラフ区分及びクラスタリングアプローチの大部分はデータノード間通信を有意に低減することができない。同様に、広く用いられるキャッシュアルゴリズムは、グラフ表現のために設計されていない。このような問題は、グラフデータに限られず、他の種類の分散型データ記憶の場合にも生じ得る。
【０００３】
キー値記憶のような分散型データ記憶にデータをどのように格納し及びデータを読み出すかという幾つかのアプローチがある。１つのアプローチは、実行範囲クエリをキーに渡り可能にする順序付きキー／値記憶を用いることである。このアプローチは、システムがサーバセット全体からデータを読み出しフィルタリングする必要がないので、スキャン動作の性能を向上する。別のアプローチは、通常の（つまり、順序付きでない）キー／値記憶にデータを格納することである。キーの順序が保持される必要がないので、リード動作は、一緒にリードされる同一場所にあるデータにより最適化できる。このアプローチは、分散型データ記憶のトラバース時間を最適化する。しかしながら、将来のリード動作を最適化するために周りの（同一場所にある）データを移動しながら順序付きデータセットを維持することは困難であるため、一般的に、キーの順序を順守せず、スキャン動作に対しては高価である。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
開示の実施形態は、分散型データ記憶を管理するデータベース制御部、方法及びプログラムを提供する。
【課題を解決するための手段】
【０００５】
本発明の実施形態は、データアイテムのセットとして符号化された情報のデータベースのためのデータベース制御部であって、前記データベース制御部は、前記データアイテムのセットをセグメントのシリーズに分割するよう構成されるセグメント制御モジュールであって、各セグメントは前記データアイテムを順に配置するために用いられる順序付けメトリックの所定の下限値及び上限値の範囲内に包含される各データアイテムを有する、セグメント制御モジュールと、複数の記憶ユニットの間で前記セグメントのシリーズの分布を管理するよう構成される適応型セグメントロケータモジュールであって、前記分布の管理は、前記データベースに対して実行されるリード動作を表す履歴データに基づく、前記セグメントのシリーズの中からの同じ記憶ユニットに同一場所に配置すべきセグメントの選択を含む、適応型セグメントロケータモジュールと、を有するデータベース制御部を含む。
【０００６】
実施形態は、プレフィックスツリーのようなデータフォーマットを用い得るセグメント制御モジュールを用いて、データアイテムのセットをインデックス付けされたセグメントに分割する。セグメントは順序付けられるので、セグメント構造は範囲クエリをサポートする。どの記憶ユニットに各セグメントが格納されるかという観点でのデータセグメントの物理的位置は、適応型ロケータモジュールにより管理される。したがって、記憶ユニット間でのセグメントの分布に際して、データ使用履歴が考慮され得る。
【０００７】
本発明の実施形態は、順序付きキー値記憶（セグメントは論理的に順序付けられる）をデータ位置の柔軟性と結合する。セグメントの論理的順序付けのレコードを、論理的位置又はセグメントＩＤと（記憶ユニットの観点からの）セグメントの物理的位置と一緒に管理するので、セグメントをどこに格納するかに関して制約がない。例えば、論理的に隣接するセグメントが、同じ記憶ユニットに格納される必要がない。セグメントがそれらが各々順序付けメトリック値の特定の範囲をカバーするように分割されるという事実は、データリード／ライト動作、例えば範囲クエリの効率的な処理を可能にする。効率的なことに、順序付けメトリックの特定の値又は値の範囲をカバーする１又は複数のセグメントが決定できる。したがって、（データ自体の中で固有の）順序付けメトリックの既知の値又は値の範囲に対するデータリード／ライト動作は、適切なセグメントＩＤを識別可能にする。セグメントは、データベースに対して実行されたリード動作を表す履歴データに基づき分散され得る。したがって、記憶ユニットの境界に跨るトラバース動作を低減するために、分散を調整することにより、性能を向上できる。適応型セグメントロケータは、セグメントＩＤを物理的記憶ユニットアドレスにマッピング可能にする。
【０００８】
記憶ユニットは、物理的アドレス又は物理的アドレスのハッシュのようなＩＤにより識別可能である。記憶ユニットは、記憶サーバ又は記憶ノードであっても良く、又はコンピュータ若しくはサーバ内のＨＤＤのような特定の構成要素であっても良い。記憶ユニットは、クエリ処理及び特定の他のリード／ライト動作を実現するためにキャッシュメモリを有しても良い。記憶ユニットは、データベース制御部に、及び場合によっては互いに、有線若しくは無線ネットワークにより又は特定の他の方法により、接続可能である。
【０００９】
適応型ロケータモジュールにより実行される記憶ユニットにセグメントを分散する処理は、データベースに対して実行されるリード動作を表す履歴データに基づき、同じ記憶ユニットに同一場所に配置すべきセグメントをセグメントのシリーズの中から選択することを含む。データセグメント及び記憶ユニットの相対的サイズに依存して、少なくとも１つのセグメント対が同じ記憶ユニットに配置される。実際には、記憶ユニットは２つより多いセグメントを格納し、同じ原理が適用され、つまり特定の記憶ユニットの同一場所に配置すべきセグメントの選択は、データベースに対して実行されたリード動作を表す履歴データに依存する。リード動作は、例えば、範囲クエリであっても良く、グラフトラバース動作を有しても良い。
【００１０】
単一のリード動作でアクセスされる記憶ユニットの数を最小化することが望ましい。したがって、本発明の実施形態は、（例えば順序付き又はランダム分布に比べて）記憶ユニットの境界に跨るリード動作を減少させるセグメントの分布を実現する。履歴情報は、システムログ又はシステムログから引き出されたデータであっても良く、任意で、各リード動作でどのデータアイテムがアクセスされたかを詳述する。次に、情報は、データアイテムの対がどれだけ強く関連付けられているかを定めるために用いることができる（２つのデータアイテムが同じリード動作で読み出される回数が多いほど、２つのデータアイテムはより強く関連付けられる）。適応型セグメントロケータモジュールは、データアイテム間（又はセグメント間）の関連付けを用いて、記憶ユニットに格納すべきセグメントを決定し、強く関連付けられたデータアイテムを有するセグメントを同じ記憶ユニットに割り当てる。
【００１１】
実施形態は、前記データアイテムのセットに対する範囲クエリを受信するよう構成される範囲クエリ処理モジュールであって、前記範囲クエリは順序付けメトリック値の上側境界及び下側境界を定め、前記範囲クエリ処理モジュールは、前記データアイテムが前記順序付けメトリックの順に配置されるとき、前記定められた上側境界及び下側境界の間に包含されるデータアイテムのセットの中から各データアイテムの重複で応答するよう構成される、範囲クエリ処理モジュール、を更に有しても良い。
【００１２】
データの実際の記憶場所は、適応型セグメントロケータモジュールにより管理される。適応型セグメントロケータモジュールは、例えば、履歴データを用いて、どのセグメントが同じリード動作で頻繁にアクセスされたデータアイテムを含むかを決定し、そのようなセグメントを同じ記憶ユニットに同一場所に配置しても良い。データアイテムのセットのセグメントへの分割は、順序付きデータアイテムにより確立された論理順序の一部を各セグメントに割り当てることにより実行される。したがって、範囲クエリが実行されるとき、順序付けメトリック値の観点でのセグメント境界に関連する範囲クエリの境界の位置は、どのセグメントが範囲クエリの範囲の少なくとも一部をカバーするかを決定可能にする。これらのセグメントの物理的位置は、適応型セグメントロケータモジュールから引き出すことができる。したがって、範囲クエリと重なり合う順序付けメトリック値の観点で範囲をカバーする記憶ユニット及びセグメントのみが、問い合わせられる。したがって、本発明の実施形態は、特定の順序で格納されているセグメントに依らずに、格納されたデータアイテムの効率的な範囲クエリを可能にする。
【００１３】
有利なことに、本発明の実施形態は、どの記憶ユニットが範囲クエリにより定められる順序付けメトリック値の範囲と重なり合う順序付けメトリック値の範囲をカバーするセグメントを格納するかを定めることにより、効率的な方法で範囲クエリを処理できる。したがって、検索結果を返す可能性を有しない無差別な範囲クエリの送信及び記憶ユニットに対するスキャンの実行に関連する性能コストは、回避される。しかしながら、範囲クエリを処理するために最適化される知られているデータベース記憶システムと異なり、本発明の実施形態は、セグメントＩＤ及び各セグメントが格納される記憶ユニットのレコード、例えばプレフィックスツリーのような論理ｔｒｉｅを格納し維持するよう構成されるセグメント制御モジュールを有する。したがって、実施形態は、データアイテム又はそれらを包含するセグメントが特定の順序で格納されることを必要としない。したがって、記憶ユニットの間のセグメントの分布の柔軟性が可能になる。
【００１４】
有利なことに、例えばアルファベット順のような順序付けメトリック又はセグメントを順序付けるために用いられる順序付けメトリックにより定められるような論理順序は、各セグメント内のデータアイテムの間で維持される。これは、範囲クエリに対する効率的な応答を支援する。代替で、記憶ユニットは、範囲クエリに応答して特定の範囲内に包含されるデータアイテムを提供するために呼び出されるとき、セグメント内のデータアイテムに論理順序を施行するよう構成されても良い。例えば、クエリの上側境界又は下側境界がセグメント内の論理的に最高又は最低のデータアイテム内に含まれる場合、セグメントが格納されている記憶ユニットは、特定の範囲内に包含されるアイテムを識別しそれらをクエリ結果として返すために処理を実行するよう構成される。必要な場合には、このような処理は、セグメント内のデータアイテムに論理順序を施行することを含む。しかしながら、データアイテムが論理順序で格納される場合、処理負荷は低減される。
【００１５】
範囲クエリは、データアイテムのセット全体をスキャンしない。実際に、最初の、最後の、及び順序付けメトリック値の点で範囲クエリと重なり合う中間セグメントは、それらが格納されている記憶ユニットと共に識別できる。したがって、クエリ結果を返さない、記憶ユニットへの不必要なデータ要求は回避される。
【００１６】
例えば、データベース制御部は、範囲クエリ処理モジュールを有しても良い。前記範囲クエリ処理モジュールは、前記セグメント制御モジュールを用いて、前記上側境界及び前記下側境界により定められる範囲と少なくとも部分的に重なり合う範囲を定める所定の上限値及び下限値を有するセグメントを識別し、前記適応型セグメントロケータを用いて、前記複数の記憶ユニットの中から前記識別されたセグメントを格納する記憶ユニットを識別し、前記識別された記憶ユニットに、前記順序付けメトリックによる順序に配置されたとき前記上側境界及び前記下側境界の範囲内に包含されるデータアイテムに対するリード要求を発行することにより、前記重複を得るよう構成される。
【００１７】
セグメント制御モジュールは、各セグメントによりカバーされる範囲のレコード、つまり、セグメントＩＤと各セグメントの上限及び下限とのレコードを維持（格納）するよう構成されても良い。適応型セグメントロケータモジュールは、各セグメントが格納される記憶ユニットの記憶ユニットＩＤのレコードを維持（格納）するよう構成されても良い。
【００１８】
前記セグメントのシリーズの中から同じ記憶ユニットの同一場所に配置すべきセグメントを選択する処理は、セグメント対の複数の順列について関連付けメトリックのスコアを計算すること、及び前記セグメント対の複数の順列についての前記関連付けメトリックの前記スコアに依存して同一場所に配置すべきセグメントを選択すること、を含む。
【００１９】
関連付けメトリックは、データベースに対して実行されるリード動作を表す履歴データを用いるメカニズムを提供する。履歴データは、特にどのデータアイテムが各リード動作で読み出されたかを指定し得る。２つのセグメント間の関連付けメトリックのスコアは、２つのセグメントが前のリード動作でどれだけ密接に関連付けられたかを表す。代替で又は追加で、関連付けメトリックのスコアは、２つのセグメントの両方からのデータアイテムが同じ（単一の）リード動作でどれだけ共通して読み出されたかを表す。２つのセグメント間の関連付けのスコアは、データアイテム対がどれだけ密接に関連するかを表す関連付けメトリックのスコアの総スコアに基づいても良い。つまり、総スコアは、各セグメントからの１つのデータアイテムを有する各データアイテム対について関連付けメトリックのスコアの合計であっても良い。代替で又は追加で、２つのセグメント間の関連付けメトリックのスコアは、各セグメントから１つのデータアイテムを有する任意のデータアイテム対のなかで、データアイテム対がどれだけ密接に関連付けられているかを測る関連付けメトリックの最高スコアに基づいても良い。
【００２０】
適応型セグメントロケータモジュールは、セグメントの現在の記憶ユニットに該セグメントを保持するか否か、又はセグメントを別の記憶ユニットに移動するか否かを決定するために同じ検討材料を用いるよう構成されても良い。あるセグメントが、該セグメントの現在の記憶ユニットに存在する任意のセグメントとよりも、別の記憶ユニットに存在するセグメントと、より高いスコアの関連付けメトリックを有する場合、適応型セグメントロケータモジュールは、そのセグメントをより高いスコアの関連付けメトリックを有するセグメントと同一場所に配置することを決定しても良い。
【００２１】
任意で、前記セグメントのシリーズの中から同じ記憶ユニットの同一場所に配置すべきセグメントを選択する処理は、同じ記憶ユニットの同一場所に配置されるセグメント対の間の前記関連付けメトリックの総スコアを最適化するアルゴリズムの実行を更に含む。
【００２２】
このようなアルゴリズムは、データベース内の同一場所に配置されたセグメントの各対の間の関連付けメトリックの最適合計スコアを決定するために用いられても良い。或いは、アルゴリズムは、他のポリシを続行するよう構成可能であっても良い。例えば、他のポリシは、新しい記憶ユニットがシステムに追加され、適応型セグメントロケータモジュールが、新しい記憶ユニットに格納すべき所定数の又は所定合計記憶領域のデータセグメントを決定するためにアルゴリズムを実行するよう構成されても良い。例えば、アルゴリズムは、記憶ユニットに存在する対の間の関連付けメトリックのスコアを最大化するセグメントを単に移動しても良く、又はセグメントを該セグメントの現在の場所から移動することの影響を考慮して、最終的な利益をもたらす移動のみが実行されるようにしても良い。適応型セグメントロケータモジュールでアルゴリズムを実行することにより関連付けメトリックを利用する可能性は限りなく存在することが理解される。
【００２３】
さらに、関連付けメトリックの設計は、設定可能であり、特定の実装に合うように設計できることが理解される。例えば、前記データベースに対して実行されるリード動作を表す前記履歴データは、同じリード動作で読み出されるデータアイテムのレコードを含み、前記セグメント対の関連付けメトリックのスコアは、前記セグメント対の中の両者からのデータアイテムが同じリード動作で読み出された回数に比例する構成要素を含み、及び／又は  前記セグメント対の関連付けメトリックのスコアは、大部分「同じリード動作で読み出された前記セグメント対の各々から１つのデータアイテム対が、同じリード動作で読み出された回数に比例する構成要素を含んでも良い。
【００２４】
セグメント対の関連付けメトリックのスコアは、データアイテムレベルで前記関連付けメトリックを適用することにより計算され、関連付けメトリックの最高スコアを有するセグメント対のうちの各々から１つのデータアイテム対を発見し、及び前記最高スコアを前記セグメント対の間の関連付けメトリックのスコアとして設定することを含んでも良い。
【００２５】
どのようにセグメントが形成され識別されるかの詳細な特性は、実施形態の特定の実装に依存する。しかしながら、各セグメントは、セグメントＩＤにより前記セグメントのシリーズの中から識別可能であり、前記セグメント制御モジュールは、各セグメントについて、前記セグメントＩＤ及び前記セグメントの前記所定の上限及び下限のレコードを維持するよう構成されても良い。
【００２６】
セグメントＩＤは、特定形式のメタデータとしてセグメントに付加されるラベルであっても良く、セグメントのシリーズの中でセグメントにユニークである。代替で、セグメントは、該セグメントの範囲（順序付けメトリック値の上限及び下限）により、及び／又は該セグメントが有するデータアイテムにより識別されても良い。例えば、各セグメントのセグメントＩＤは、セグメント内の各データアイテムに共通のデータのプレフィックス部分であっても良く、該プレフィックス部分は、セグメントの上限及び下限を定める。
【００２７】
プレフィックス部分は、セグメント制御モジュール内に論理順序で格納され、セグメントを格納する記憶ユニットのＩＤを適応型セグメントロケータから読み出せるインデックスを形成する。
【００２８】
任意で、セグメント制御モジュールにより維持されるレコードは、論理ｔｒｉｅ、例えばプレフィックスツリーである。プレフィックスツリーは、プレフィックス検索ｔｒｉｅとして参照されても良く、１番目のキャラクタから開始して進み、プレフィックス部分の任意の対が、プレフィックス部分の対が互いに異なるようになるまで、ルートからｔｒｉｅ内の共通経路を共有するように構成される。ｔｒｉｅは、記憶空間の観点で効率的な方法で、情報、この場合異なる値のプレフィックス部分を格納するメカニズムを提供する。共通ルートからのｔｒｉｅ内の経路の終端には、セグメントＩＤに対応するリーフがある。ｔｒｉｅはプレフィックスを格納するので、各リーフはデータアイテムの一部を表し、リーフにより表される部分で始まる任意のデータアイテムは、リーフにより識別されるセグメントに含まれる。この意味で、各リーフ又はセグメントＩＤは、上限及び下限を有する範囲を定める。例えば、下限はプレフィックス部分のみであり、非包括的な上限は、プレフィックス部分で指定された最後の値の次の増分である。例えば、英数字ストリングとして格納されたデータアイテム、及び順序付けメトリックがアルファベット順又は英数字順である場合を考える。プレフィックス部分「ｐｉｎｅ」は、下限「ｐｉｎｅ」及び非包括的な上限「ｐｉｎｆ」を有する範囲を定める。したがって、データアイテムがアルファベット順に配置されるとき、これら２つの英文字値の間に包含される任意のストリングは、ＩＤ「ｐｉｎｅ」を有するセグメントに割り当てられる。
【００２９】
特に、データアイテムのプレフィックス部分は、データアイテムを形成するデータの開始部分であり、順序付けメトリックによりデータアイテムの順序を決定するために用いられるデータの一部又は全部を形成しても良い。
【００３０】
有利なことに、プレフィックス部分をセグメントＩＤとして用い、プレフィックス部分が順序付けメトリックによりデータアイテムを評価するために用いられるデータの部分を形成する実施形態は、セグメントＩＤ自体によりセグメントの論理順序を決定することを可能にする。
【００３１】
前記情報のデータベースは、データアイテムの１又は複数の追加セットとしても符号化され、前記セグメント制御モジュール及び前記適応型セグメントロケータモジュール（及び範囲クエリ処理モジュール）は、前記データアイテムのセットの各々及び前記データアイテムの１又は複数の追加セットをデータアイテムの別個のセットとして扱うよう構成され、前記データアイテムのセット内の各データアイテムは、各追加データセット内の同じ情報を符号化する対応するデータアイテムを有し、前記データアイテムを形成するデータ要素は、前記データアイテム及び各対応するデータアイテム内で異なる方法で順序付けされても良い。
【００３２】
有利なことに、異なるデータアイテムセットは、効率的な方法で検索されるべき指定範囲として、データアイテムの異なる要素の値で範囲クエリを行う。セグメントは、データアイテムの第１の位置に現れるデータに従って順序付けされ、後続のデータは次第に減少する重要性を有しても良い。したがって、範囲がデータアイテムセットの始めに現れるデータ要素について定められる場合、範囲クエリはより効率的に処理できる。
【００３３】
例えば、データアイテムはトリプルであり、１又は２つの重複トリプルセットが存在し、トリプルセット及び１又は２つの重複セットは、トリプル要素の個々の固定された順序の各位置で互いに異なるトリプル要素を有しても良い。
【００３４】
上述のトリプルセットの特定の構成は、範囲クエリの効率的な処理から得られる性能の利益と、記憶空間使用のオーバヘッドとの間のバランスを最適化する。
【００３５】
例示的な実装では、前記情報のデータベースはグラフデータベースであり、前記グラフデータベースを符号化するデータアイテムのセットは、それぞれ３つのトリプル要素：主語、述語及び目的語の各々の値を有するトリプルのセットであっても良い。
【００３６】
関係型データベースは、データを行と列で格納する。行及び列は、データを格納する前に定める必要のあるテーブルを構成する。テーブルの定義及びこれらのテーブルに含まれるデータ間の関係は、スキーマと称される。関係型データベースは、固定スキーマを用いる。或いは、データグラフは、グラフデータベース又はグラフデータセットとして参照され、関係型データベースの代替データ表現であり、意味的知識モデルの表現を提供する。グラフデータベースは、データをノード及びアークの形式で格納することにより、関係型データベースの重要な拡張を表す。ここで、ノードはエンティティ又はインスタンスを表し、アークは任意の２個のノード間の特定種類の関係を表す。無向グラフでは、ノードＡからノードＢへのアークは、ノードＢからノードＡへのアークと同じであると考えられる。有向グラフでは、２つの方向は別のアークとして扱われる。本発明の実施形態は、有向グラフ又は無向グラフを符号化するデータアイテムを有する。
【００３７】
グラフデータベースは、概して２つの主な種類に分類できる広範な種類の異なるアプリケーションで用いられる。第１の種類は、知的意思決定支援及び自己学習のようなクラス記述子の大規模な集合体（「知識ベースアプリケーション」と称される）を有する複雑な知識ベースシステムを有する。第２の種類は、社会的データ及びビジネスインテリジェンスのようなトランザクションデータに対するグラフ検索の実行を含むアプリケーション（「トランザクションデータアプリケーション」と称される）を有する。多くのアプリケーションは、両方の種類を表し得る。しかしながら、大部分のアプリケーションは、主に知識ベース又はトランザクションデータアプリケーションのいずれかで特徴付けられ得る。グラフデータベースは、種々の分野の膨大な構造化又は非構造化データを格納できる大規模な「意味ネットワーク」を維持するために用いることができる。意味ネットワークは、知識表現の形式として用いられ、コンセプトを表すノード及びコンセプト間の意味関係を表すアークを有する有向グラフである。
【００３８】
本発明の実施形態は、記憶のためにグラフデータベースを符号化するために、複数の異なるアプローチのうちの１又は複数を有しても良い。グラフデータは、多次元アレイとして又は他のシンボルにリンク付けされたシンボルとしてメモリに格納されても良い。別の形式のエンコーディングは、各々指定された種類のオブジェクトの有限シーケンス又は順序付きリストである「タプル」の使用である。ｎ個のオブジェクトを含むタプルは、「ｎタプル」として知られる。ここで、ｎは零より大きい任意の非負整数である。長さ２のタプル（２タプル）は、通常、ペアと呼ばれる。３タプルはトリプルと呼ばれ、４タプルはクワドラプルと呼ばれ、以降同様である。
【００３９】
トリプルは、それぞれ指定された種類の３つのトリプル要素（タプル）を有する。種類は、トリプル自体の中のデータにより（つまり、「種類（type）＝値（value）」と等価な形式でデータを格納することにより）指定されても良く、トリプルに又はトリプルが属するトリプルセットに適用するためにシステム内で知られているメタデータであっても良い。例えば、各トリプルは、グラフデータベースを完全に符号化するトリプルセットに属しても良い。また、各セットは、それぞれ３つのトリプル要素の値を同じ（つまり固定された）順に格納するトリプルを有することが分かっている。したがって、最初の値は、トリプル要素の最初の種類であることが分かっており、以下同様である。
【００４０】
用語「トリプル要素」は、一般的に、トリプル要素の種類、例えば主語、目的語又は述語を表す。トリプル要素の特定のインスタンスは、トリプル要素の値として参照される。例えば、３つのトリプル要素は、主語、目的語及び述語であっても良い。したがって、特定のトリプルは、主語、目的語及び述語の各々の値を有する。記載されるエンティティは、トリプルの主語として表されても良い。識別されたプロパティの範囲は、目的語として表されても良い。また、範囲とエンティティとの間の関係は、述語として表されても良い。トリプルは、グラフデータを複数の主語−述語−目的語の表現として特徴付けることにより、グラフデータのエンコードを提供する。例えば、主語は、（例えば、ＵＲＩを介して）ウェブリソースを示しても良く、述語はリソースの個々の特性、特徴又は状況を示し、目的語は、該特性、特徴又は状況のインスタンス、範囲、又は例を示す。言い換えると、トリプルステートメントの集合は、元来、方向性グラフデータを表す。ＲＤＦ標準は、このようなトリプルの形式的構造を定める。本発明の実施形態におけるトリプルは、ＲＤＦトリプルであっても良い。
【００４１】
さらに、３つのトリプル要素のうち固定された順序で最初の１つ又は最初の２つのトリプル要素は、セグメントＩＤを有するプレフィックス部分として指定され、本願明細書に記載される本発明の実施形態においてインデックス付けの目的で用いられる。したがって、プレフィックス部分は、トリプルセットの中の各トリプル内の特定の値に適用されるラベルであっても良い。
【００４２】
本発明の別の態様の実施形態は、本発明を具現化するデータベース制御部と、複数の記憶ユニットと、を有するデータ記憶システムを有する。      
記憶ユニットは、それぞれ、コンピューティングリソースであっても良い。例えば、それらは、それぞれ、プロセッサ、メモリ及び／又はネットワークインタフェースカード、マザーボード、入力／出力装置のような追加構成要素に加えて、記憶ユニットを有しても良い。
【００４３】
このようなコンピューティング装置は、例えばサーバであっても良い。記憶機能に加えて、コンピューティング装置は、処理動作を実行し、記憶ユニットの分散型ネットワーク内の他の記憶ユニットと及び／又は中央制御部と通信するよう構成される。
【００４４】
実施形態は、本発明を具現化するデータベース制御部と、本発明を具現化する複数のコンピューティング装置と、を有し、記憶ユニットの分散型ネットワークとして動作するよう構成されるシステムの形式で提供されても良い。
【００４５】
このような実施形態では、複数のコンピューティング装置は、データベース制御部を形成するよう協調して動作するよう構成されても良い。
【００４６】
本発明の別の態様の実施形態は、データアイテムのセットとして符号化された情報のデータベースのデータベース制御部により実行される方法であって、前記方法は、前記データアイテムのセットをセグメントのシリーズに分割するステップであって、各セグメントは前記データアイテムを順に配置するために用いられる順序付けメトリックの所定の下限値及び上限値の範囲内に包含される各データアイテムを有する、ステップと、複数の記憶ユニットの間で前記セグメントのシリーズの分布を管理するステップであって、前記データベースに対して実行されるリード動作を表す履歴データに基づき、前記セグメントのシリーズの中からの同じ記憶ユニットの同一場所に配置すべきセグメントを選択するステップを含む、ステップと、を有する方法を有する。
【００４７】
例えば、方法は、コンピュータにより実施されても良い。
【００４８】
本発明の別の態様の実施形態は、コンピューティング装置又は複数の相互接続されたコンピューティング装置により実行されると、前記コンピューティング装置又は前記複数の相互接続されたコンピューティング装置に、本発明を具現化するデータベース制御部、又は本発明を具現化するデータ記憶システムとして機能させ、又は本発明を具現化する方法を実行させる、ソフトウェアを有する。
【００４９】
このようなソフトウェアは、プログラム又はプログラムスーツであっても良く、非一時的記憶媒体に格納されても良い。
【００５０】
さらに、本発明の実施形態は、コンピューティング装置の分散型ネットワークにより実行されると、コンピューティング装置の分散型ネットワークに、本発明を具現化するシステムとして機能させる、コンピュータプログラムスーツを有しても良い。
【００５１】
さらに、本発明の実施形態は、記憶ユニットの分散型ネットワークを有するコンピューティング装置のシステムにより実行されると、前記システムに、本発明を具現化する方法を実行させるコンピュータプログラム又はコンピュータプログラムスーツを有する。
【００５２】
態様（ソフトウェア／方法／装置）が別個に議論されたが、１つの態様に関連して議論されたその特徴及び影響は、他の態様にも等しく適用できる。したがって、方法の特徴が議論される場合、装置の実施形態はその特徴を実行する又は適切な機能を提供するよう構成されるユニット又は装置を有すること、及びプログラムは該プログラムが実行されるコンピューティング装置に前記方法の特徴を実行させるものと解釈される。
【００５３】
上述の態様のいずれにおいても、種々の特徴は、ハードウェアで、又は１又は複数のプロセッサで動作するソフトウェアモジュールとして実装されても良い。一態様の特徴は、他の態様のいずれにも適用できる。
【００５４】
本発明は、上述の任意の方法を実行するコンピュータプログラム又はコンピュータプログラムプロダクト、及び上述の任意の方法を実行するプログラムを格納しているコンピュータ可読媒体も提供する。本発明を実施するコンピュータ・プログラムは、コンピュータ可読媒体に格納されてもよい。或いは、例えば、インターネット・ウェブサイトから提供されるダウンロード可能なデータ信号のような信号形式又は任意の他の形式であってもよい。
【図面の簡単な説明】
【００５５】
本発明の特徴は、単なる例として添付の図面を参照して以下に説明される。
【図１】本発明を具現化するデータベース制御部を有するデータ記憶システムを示す。
【図２】例示的なシステムアーキテクチャを示す。
【図３】セグメント制御モジュール及び適応セグメントロケータモジュールの機能の図式表現である。
【発明を実施するための形態】
【００５６】
図１は、データ記憶システムを示す。データ記憶システムは、データベース制御部１０及び複数の記憶ユニット３０を有する。
【００５７】
複数の記憶ユニット３０は、互いに及びデータベース制御部と、典型的な目的のために図１にバスとして示される有線若しくは無線ネットワークを介してデータ通信を行う。必要に応じて及び個々のモジュールはそれらがそれらの機能を実行する際に必要なとき、データを交換するよう構成されると仮定されるので、データベース制御部１０内のデータ接続は示されない。アプリケーション２０は、データ記憶システムの外部又は内部にあると考えられても良く、範囲クエリのソースであるので重要である。アプリケーション２０は、データ記憶システム、例えばＳＰＡＲＱＬクエリインタフェース内で動作する機能層であり、外部アプリケーションからクエリを受信し、それらを範囲クエリ処理モジュール１６に転送するのに適した形式に処理する。
【００５８】
データベース制御部１０は、符号化されたデータベース情報を格納する記憶ユニットに接続可能な機能エンティティである。図１のデータベース制御部１０は、専用の範囲クエリ処理モジュール１６を介して範囲クエリを処理するよう構成される。範囲クエリ処理モジュール１６は、任意モジュールであることを示す破線の境界で示される。他のエンティティが、他のデータベース制御機能、例えば新しいデータの挿入及びデータ更新、アプリケーションへのアクセス処理を担っても良い。したがって、本発明を具現化するデータベース制御部１０は、必ずしもデータベースに対して排他的処理を有する必要はなく、単に特定の機能に対する制御を有する。データベース制御部１０は、専用ハードウェア装置として、又はトリプルを格納する記憶ユニットを有するサーバを含む１又は複数のコンピュータで実行するソフトウェアにより実現されても良い。データベース制御部は、マスタサーバ、又は記憶ユニット３０の制御を担う特定の他の中央装置で動作する機能モジュールであっても良い。例えば、セグメント制御モジュール１２により保持されるデータ量は非常に多いので、複数のサーバに渡り分散される。
【００５９】
データベース制御部１０は、セグメント制御モジュール１２、適応セグメントロケータモジュール１４、範囲クエリ処理モジュール１６を有する。
【００６０】
セグメント制御モジュール１２は、データアイテムのセットを一連のセグメントに分割するよう構成される。各セグメントは、データアイテムが順序付けメトリックにより定められる順序に配置されるとき、データアイテムのセットのうち所定の下限及び上限の範囲内に包含される各データアイテムを有する。言い換えると、セグメント制御モジュール１２は、データアイテムのセットを一連の順序付きセグメントに分割するよう構成され、各セグメントは、データアイテムを順に配置するために用いられる順序付けメトリックの所定の下限値及び上限値の範囲内に包含される各データアイテムを有する。
【００６１】
データアイテムのセットの一連のデータセグメントへの分割は、各データセグメントによりカバーされる順序付けメトリック値の範囲を指定することにより実行されても良い。したがって、データセグメントによりカバーされる範囲に包含される順序付けメトリック値を有する各データアイテムは、データセグメントのメンバである。実際に、データセグメント間の分割は、順序付けメトリックにより順序付けられたとき、データアイテムにより定められる論理的順序に重ね合わされる。セグメントは、セグメントにより定められる範囲に順序付けメトリックを適用することにより論理的に順序付けられるので、シリーズを形成する。セグメントＩＤ自体は、データセグメントの範囲を定めても良い。セグメントは、重なり合わないシリーズを形成しても良い。セグメントは、順序付けメトリック値の全範囲を必ずしもカバーせず、隣接セグメント間にギャップが存在しても良い。セグメント及びセグメントＩＤは、（データアイテムが格納される物理記憶装置の観点からの）データアイテムの位置が識別できるメカニズムを提供する。データアイテムがどのセグメントに属するかを決定することができ、各セグメントは単一の記憶ユニットに割り当てられる。事実上、セグメントは、全てのデータアイテムが単一の識別可能な記憶ユニットに一緒に格納される所定の範囲の順序付けメトリック値である。記憶ユニットは、適応型セグメントロケータモジュールのマッピングを参照することにより識別可能である。
【００６２】
順序付けメトリックは、どれが他者より高い又は低い値を有するかを定めるためにデータアイテム間の比較を可能にするルールセットである。したがって、データアイテムは、順序付けメトリックに関して値を有する。順序付けメトリック値は、データアイテム自体の固有の特性であっても良い。例えば、データアイテムが英数字シンボルストリングである場合、順序付けメトリックは、英数字順であっても良い。したがって、各ストリングは、又は１つのストリングの各部分は、英数字の値又は英数字順の順序付けメトリックの値である／を表す。更なる任意構成要素として、順序付けメトリック値は、部分的にデータアイテム自体の固有の特性であっても良く、（データベース自体のような）他の場所から得られたデータアイテムの知識に部分的に基づいても良い。例えば、データアイテムはストリングオブジェクトであり、順序付けメトリックは英数字順であっても良いが、データアイテムはデータアイテムの得られた特性に基づき追加プレフィックスを与えられても良い。したがって、データアイテムの粗ソートが可能である。例えば、階層的データ構造では、各データアイテムは、親リソースの名称を指定する追加プレフィックスを（事実上、データアイテムのペイロードに先行するヘッダデータとして）与えられても良い。このような実施形態は、データアイテムをそれらの親リソースに基づき粗くソートし、次にそれらグループをデータアイテムペイロードの英数字順にソートすることを可能にする。順序付けメトリックは、一貫性があり反復可能なように選択され、つながりを切断する１又は複数のルールを更に有しても良い。例示的な順序付けメトリックは、アルファベット順又は英数字順である。任意のキャラクタ又はキャラクタのストリングは、英数字メトリック及び／又は英字メトリックに関する値を有する。
【００６３】
セグメント制御モジュール１２は、各セグメントの識別子を表すプレフィックスツリーを、該セグメントに貢献した範囲のデータアイテムの順序付けメトリック値と共に格納しても良い（又は該セグメント自体が該範囲を表す）。或いは、プレフィックスツリーは、例えば、Ｔｒｉｅ又はプレフィックス検索ツリーとして表されても良く、セグメントの別個のインデックスを構成するために用いられる。データアイテムがストリングオブジェクトとして表される例示的な実施形態を考える。最初のストリングキャラクタから始めて進むと（場合によっては人為的に導入した共通ルート（根）を有する）、任意のストリングオブジェクト対は、２者が分岐するキャラクタに達するまで、プレフィックスツリー内の共通経路を辿り、該キャラクタで経路が分岐する。したがって、ストリングオブジェクトへの共通の始点は、１回だけソートされ、重複しないので、記憶空間が節約される。プレフィックスツリーは、ストリングオブジェクトの始点から進むことにより構築されるので、Ｔｒｉｅのリーフは、１又は複数のデータアイテムのプレフィックス部分に対応する。したがって、ツリーの各リーフは、データアイテムセットの中のデータアイテムの異なるプレフィックス部分である。ストリングオブジェクトのプレフィックス部分は、英字値の範囲を定めることが理解できる。始めにプレフィックス部分を有するストリングは、所定の範囲に含まれる。したがって、ツリーのリーフにより表されるプレフィックス部分は、それ自体が順序付けメトリック値の範囲の指標である。プレフィックスツリー構造は大きく、単一のサーバに維持するには大きすぎる。このような場合には、プレフィックスツリーは、仮想同期のようなネットワークプロトコルを通じて互いに通信するサーバのセットにより格納され維持される。例えば、サーバセットは、プレフィックスツリーを管理するタスクに専用であり、ネットワークプロトコルは、任意の強力な一貫性のあるネットワークプロトコルであっても良い。セグメントが格納される記憶ユニットは、（同一ネットワークに属しても良いが）１又は複数のプレフィックスツリーサーバとは別であっても良く、リード／ライト動作に専用であっても良い。
【００６４】
特定の実装例では、データアイテムは、３つの要素、つまり主語（Ｓ）、述語（Ｐ）、目的語（Ｏ）の各々の値を指定するトリプルであっても良い。情報は、３回、つまりフォーマットＳＰＯに、フォーマットＯＳＰに、及びフォーマットＰＯＳに、符号化されても良い。したがって、３つのデータセットがあり、先ず任意の要素対の値を指定する範囲クエリが効率的に処理できる。セグメントへの分割は、純粋に各セグメントに包含されるデータアイテムの数に基づく方法で実行されても良い。例えば、各セグメントの順序付けメトリック値の範囲、従ってセグメントＩＤは、所定数のデータアイテムがセグメントに含まれるように選択されても良い。或いは、データ要素自体が、どのようにデータアイテムがセグメントに順序付けられるかを示すために用いられる。例えば、ＳＰＯストリングフォーマットでは、同じ主語を有するトリプルは同じセグメントに属すので、セグメントＩＤは異なるＳの値であり、プレフィックスツリーはＳストリングのツリーである。他の経験則は、実装の詳細に依存して定められ得る。例えば、同じ概念を用いて、例えばＯＳＰ変形を用い、同じオブジェクトを有するセグメントを生成する。
【００６５】
適応セグメントロケータモジュール１４は、複数の記憶ユニット３０の中でセグメントの記憶場所を管理するよう構成される。適応型セグメントロケータモジュール１４は、取得した又は観察した性能統計に基づき、同じグラフトラバース動作で頻繁にアクセスされたデータアイテムを含むデータセグメントと同一場所に配置するよう構成されても良い。
【００６６】
適応型セグメントロケータモジュール１４は、複数の記憶ユニットの間でセグメントのシリーズの分布を管理するよう構成される。このような管理は、データベースに対して実行されたリード動作を表す履歴データに基づき同じ記憶ユニットに同一場所に配置するために、セグメントのシリーズの間からのセグメントを選択することを含む。分布の管理は、少なくとも最初に、記憶ユニットにセグメントを割り当てることを含み、記憶ユニットの間でセグメントを再分布することを更に含んでも良い。分布の管理は、各セグメントが格納される記憶ユニットのレコードを維持することも含む。再分布は、特定のイベントによりトリガされても良く、及び／又は周期的であっても良い。特定のイベントは、システムアイドル時間であっても良く、最後の分布から所定数のリード動作が生じたときであっても良い。代替で、適応型セグメントロケータモジュール１４は、リード動作統計を用いて連続的に記憶ユニットＩＤへのセグメントの最適分布を計算する監視機能を有しても良い。そして、再分布は、実際の分布と最適な分布との間の差の閾レベルより多くが存在するときトリガされる。最適は、後述する関連付けメトリックのようなメトリックを用いることにより決定されても良い。
【００６７】
分布の処理は、セグメントの記憶ユニットへの割り当て／指定なので、データアイテムを記憶ユニットに書き込む処理であっても良く、又はある記憶ユニットから別の記憶ユニットへのデータアイテムの転送の指示を含んでも良い。記憶ユニットに分布され／指定され／割り当てられたセグメントは、該セグメントに属する各データアイテムが記憶ユニットに格納されていること（及び特定の記憶領域に一緒にグループ化されている可能性があること）を示す。データアイテムは、それらのセグメント内の論理的順序で格納されても良く、そうでなくても良い。データアイテムが論理的順序で格納されていない場合、記憶ユニットにおける追加処理が必要であっても良い。範囲クエリに対する応答は、例えばアルファベット順のような順序付けメトリック又はセグメントを順序付けるために用いられる順序付けメトリックにより確立されるような論理的順序は、各セグメント内のデータアイテムの間で維持される。
【００６８】
記憶ユニットの間のセグメントの再分布は、データの特定の移動を生じても良い。関連するネットワークトラフィック及びリード／ライト動作は、性能ボトルネックになり得る。より小さいセグメントサイズは、ボトルネックを有る程度軽減し得る。したがって、幾つかの実装では、記憶ユニット間でセグメントを移動することにより生じるネットワークトラフィックが所定の閾値（値の段階的システムの１つであっても良い）に達したとき、セグメント制御モジュールは、より小さいセグメントサイズで（現在の平均サイズより小さい平均サイズ、現在の最大サイズより小さい最大サイズ、現在の固定サイズより小さい固定サイズが望ましい）、データアイテムのセットをセグメントに再び分割する処理を実行するよう指示される。もちろん、セグメント制御モジュール１２が維持するよう要求されるデータの量は、セグメントサイズが減少するにつれて増大する。したがって、超えてはならない最大セグメント数が存在しても良く、或いは、所定の閾セグメント数に達すると、ネットワークトラフィックが対応する閾（通常の再分割要求に対する閾セットより高くても良い）に達した場合のみセグメント数が更に増加するよう、オーバーライドが存在しても良い。
【００６９】
別の実行を検討すると、セグメント制御モジュール１２により格納されたデータ、例えばプレフィックスツリーを通じた検索のコストは、プレフィックス長により影響を受ける。小さなデータセグメントは、個々のセグメントを識別するためにより長いプレフィックスを必要とする。したがって、プレフィックスツリーを検索する実行コストは、大きくなる。したがって、セグメント制御モジュール１２からデータを検索するために要する時間が妥当な実行対価である場合、プレフィックス（つまり、セグメントＩＤ）長は制限される。したがって、セグメントは、該セグメントに含まれるデータアイテムの数の点で、小さくなり過ぎることを防止される。データセグメントのサイズ及びセグメントＩＤ若しくはプレフィックスの長さは、性能要件に従って設定可能である。データセグメントのサイズ及びセグメントＩＤの長さのような設定可能な変数は、システム管理者又は閾の体系により調整可能であり、結果として生じる再構成は、セグメント制御モジュール１２及び適応型セグメントロケータモジュール１４の機能に実装されても良い。経験的ルール及び式は、データセグメントのサイズ又はセグメントＩＤの長さの選択を支援する又は指示するために用いられても良い。
【００７０】
セグメントサイズ及び／又はセグメントＩＤは、データベース内の符号化された情報のドメインに基づき経験的ルールにより決定される。例えば、データアイテムがトリプルである例を考える。トリプルは、ＳＰＯフォーマットのストリングとして格納されても良く、セグメントは、「Ｓ」の値により識別されても良く、したがって、同じ主語を共有する全てのトリプルは、同じセグメントに格納されても良い。セマンティックＲＤＦデータモデルに適用可能な一例として、セグメント制御モジュール１２は、子リソースのトリプルを該子リソースの直接の親のトリプルと一緒にグループ化するよう構成されても良い。子及び親リソースは、次の例のように、ｒｄｆ：ｔｙｐｅを用いてリンク付けされる。ここで、ＬｅｃｔｕｒｅｒはＦａｃｕｌｔｙ_Ｍｅｍｂｅｒの子である。＜ｎｓ：Ｌｅｃｔｕｒｅｒ  ｒｄｆ：ｔｙｐｅ  ｎｓ：Ｆａｃｕｌｔｙ_Ｍｅｍｂｅｒ＞
可変セグメントサイズが許されるとき、ＲＤＦグラフのトポロジは経験的ルールを提供できる。例えば、グラフの高い階級の頂点を含むデータセグメントは、低い階級の頂点を含むデータセグメントよりも大きい。事実上、データアイテムセットがＳＰＯフォーマットのトリプルである場合、セグメントは主語の値により定めることができる。他の経験則は、同じ概念を用いて、例えばＯＳＰ変形を用いて定めることができ、同じオブジェクトを有するセグメントを生成できる。
【００７１】
セグメントがリード動作で所定回数アクセスされると、データセグメントセットをセグメントに分割するための使用に基づくルールは、経験的ドメインに基づくルールを置き換え又はそれと結合される。このような場合、時々、データセグメント制御モジュール１２は、データを再セグメント化し、データセグメントを再インデックス付けする必要があっても良い。これが生じると、クエリ履歴に基づき、データセグメント制御モジュール１２は、同様の値の順序付けメトリック（つまり、データアイテムが順に配置されるとき、絶対的には互いに所定の閾距離範囲内にあり、又は相対的には所定の閾数の場所の中にある）を有するデータアイテムが同じグラフ動作の一部としてアクセスされたときを識別し、該データアイテムが同じセグメントに含まれるようにデータアイテムをセグメントに分割するよう構成される。履歴情報は、システムログ又は適応型セグメントロケータモジュール１４からのログ情報から得られる。
【００７２】
適応型セグメントロケータモジュールは、セグメントレベルにあるデータアイテム間の関連付けの強度を測定するメトリックを適用し、あるセグメントが別のセグメントと同一場所に存在すべきか否かを決定するよう構成される。例えば、適応型セグメントロケータモジュール１４は、２つのセグメントの各々から１つのデータアイテムを有する各対の間の関連付け強度を計算することにより、データアイテムの２つのセグメント間の関連付け強度を計算し、計算した関連付け強度のうち最高のものを２つのセグメント間の関連付け強度として指定するよう構成される。代替で、中央値又は平均値のような、データアイテムの対の間の計算した関連付け強度の平均は、２つのセグメント間の関連付け強度として指定され得る。
【００７３】
データセグメントｇ、サーバＳが与えられると、２つのデータアイテム間の関連付けは、δ（ｔ，ｓ）で表されるメトリック／関数により計算されても良い。データセグメントの局所性は次式により表される。
【数１】
2014225260.tif 000003
【００７４】
適応型セグメントロケータモジュール１４により計算された関連付け強度δ（ｔ，ｓ）に基づき、δ（ｔ，ｓ）が異なるセグメントからの任意のローカルデータアイテムとｇからのデータアイテムのうちの１つとの間の関連付け強度よりも強い場合、セグメントｇは、データアイテムｓの場所へ移動される。セグメントからのデータアイテムのうちの１つと強く関連付けられたデータアイテムが存在する場合、ｇは同じサーバ内に留まる。実際に、最大関連付けは、データアイテムの各対間の関連付け強度を計算することを回避するために、セグメント間で記録され得る。２つのデータアイテム間の関連付け強度を測定する関数δ（ｔ，ｓ）は、１又は複数の構成要素を有しても良い。構成要素は、２つのデータアイテムが同じリード動作で読み出された回数（絶対数又は考慮される全ての過去のリード動作の割合として）に比例しても良い。リード動作は、クエリ（１又は複数の範囲クエリを含む）及び／又はグラフトラバース動作であっても良い。
【００７５】
範囲クエリ処理モジュール１６は、アプリケーション２０から範囲クエリを受信するよう構成される。範囲クエリ処理モジュール１６は、受信した範囲クエリに対してパース及び他の処理動作を実行し、範囲クエリ結果に含まれるべきデータアイテムの順序付けメトリック値の範囲、したがって該範囲の下側境界と上側境界を抽出するよう更に構成される。範囲クエリは、１又は複数のデータ要素の各々の境界（bound）及び非境界（unbound）値を有しても良い。例えば、範囲クエリは、１つのデータ要素又はデータ要素対を指定しても良い。したがって該要素又は要素対は境界であり、データアイテムは、クエリ結果に含まれるために範囲クエリの境界部分について指定された値と一致しなければならない。他の１又は複数のデータ要素は非境界又は変数であり、データアイテムの非境界部分の任意の１又は複数の値はクエリを満たす。もちろん、範囲クエリを効率的に処理するために、データアイテムの範囲内の要素の配置は、範囲クエリで指定された境界及び非境界データ要素のパターンにつながる。最も効率的に処理される範囲クエリは、少なくとも順序付けメトリックにより順序付けられた／評価される限り、境界部分がデータアイテムの最初に現れるデータ要素である範囲クエリである。したがって、順序付けメトリック値の単一の範囲は、範囲クエリの中で指定される境界及び非境界データ要素により定められる。
【００７６】
範囲クエリにより指定された順序付けメトリック値の範囲が抽出され又は確立されると、範囲クエリ処理モジュール１６は、セグメント制御モジュールを参照し、セグメントが順序付けメトリックに従って順序付けられているとき、どのセグメントが範囲の上限及び下限を含むか、及び範囲の上限及び下限を含むセグメントの間にあるセグメントを識別するよう構成される。次に、範囲クエリ処理モジュールは、適応型セグメントロケータモジュールを参照し、複数の記憶ユニット３０のうちどの記憶ユニット３０に識別されたセグメントが格納されるかを定めるよう構成される。次に、範囲クエリ処理モジュール１６又は適応型セグメントロケータモジュール１４は、定められた記憶ユニットから、範囲クエリを満たすデータアイテムを要求し、及び場合によっては結果を集約してアプリケーション２０に応答するよう構成される。
【００７７】
図２は、本発明を実施するデータ記憶システムの例示的なハードウェア構成を示す。システムは、アプリケーションティア２０と、データベース制御部の例でありデータベース制御部の機能を実現するために協調して動作する多数のサーバを含むプレフィックスツリーサーバティア１０１と、複数の記憶ユニット３０を有する記憶ティア３０、例えばデータ記憶サーバと、を有する。もちろん、アプリケーション２０は、システムの外部にあっても良く、システムの可能な実装を説明するために示される。
【００７８】
プレフィックスツリーサーバティア１０１は、記憶ティア３０に渡り格納されたデータのインデックスを格納する１又は複数のプレフィックスツリーサーバを有する。インデックスは、セグメントＩＤのレコードにより提供され、セグメント内のデータの共通のプレフィックスであっても良い。該又は各プレフィックスツリーサーバは、データのグラフ表現と記憶ティア３０に格納された符号化形式のデータとの間のリンク付けを含む機能を提供するソフトウェアスタックを実行する。プレフィックスツリーサーバティア１０１で、セグメント数及びセグメントＩＤ（プレフィックス）のサイズに依存して、（図示の）複数のサーバは、プレフィックスツリーを維持する必要があり得る。さらに、情報は、１より多いデータアイテムセットとして符号化され、プレフィックスツリーの総サイズは、１より多いサーバを必要としても良い。各プレフィックスツリーサーバは、データベース制御部機能を提供するソフトウェアスタックを含む。
【００７９】
グラフレイヤ１０２は、任意であり、範囲クエリ処理モジュール１６の機能の一部を提供し、アプリケーション２０と通信してクエリをＲＤＦグラフトランザクションに変換する。
【００８０】
ＫＶＳレイヤ１０３は、範囲クエリに対応するストリングオブジェクトを順序付けメトリック値の範囲に変換するよう構成される機能ユニットの例であり、どの記憶ユニットが範囲クエリの範囲と重なり合う順序付けメトリック値の範囲を有するかを特定するためにデータセグメント制御モジュール１２に問い合わせるために用いることができる。したがって、グラフレイヤ１０２とＫＶＳレイヤ１０３は、ともに、範囲クエリ処理モジュール１６の例である。さらに、ＫＶＳレイヤは、セグメントＩＤのレコードを格納する。したがって、順序付けメトリック値の範囲は、クエリの範囲と重なり合う順序付けメトリック値を有するデータアイテムを格納する１又は複数のセグメントＩＤのリストを生成するために用いることができる。
【００８１】
プレフィックスツリーサーバは、通信ネットワークを通じて互いに通信する。異なるプレフィックスツリーサーバ１０１間の通信は、Virtual  Synchronous  Total  Order  Broadcast  or  Paxosのような強力な合意プリミティブを用いて実行されても良い。このようなプリミティブが拡張可能でなくても、実装は、サーバ数が記憶ユニットの数と比較して小さくなると予想される。プレフィックスツリーサーバ１０１と記憶ユニット３０との間の通信は、ＴＣＰソケットのような信頼できる通信リンク及びデータが存在することを保証するための肯定応答を用いて実行されても良い。データの一貫性は、他のプレフィックスツリーサーバ間で合意を達成するプレフィックスツリーサーバにより、及びリード／ライト動作を記憶ユニットに発行することにより、保証されても良い。
【００８２】
記憶ティア３０は、ローカルデータを維持し及び例えば適応型ロケータレイヤ１０４を介して互いの間で通信ネットワークを通じてインデックスレイヤ１０と通信可能な多数のデータ記憶サーバを有する。記憶は、分散型キー値記憶を用いて実現されても良い。記憶ティア３０は、ローカルデータセットを管理し及び他のデータノードと通信ネットワークを通じて通信する計算能力を備えた記憶ノードとして動作するデータ記憶サーバセットを有しても良い。
【００８３】
適応型ロケータレイヤ１０４は、セグメントをデータ記憶サーバ（データノード）のプールに分散し、マッピングし及び管理する。プレフィックスツリーサーバ１０１により提供される別の機能は、どのようにデータセグメントが分散型プレフィックスツリー内で管理されるかである。多くの異なる実装が適用できる。例えば、直接的な実装は、プレフィックスツリーの階層的構造を順守するスーパーピアアーキテクチャであり得る。適応型ロケータレイヤ１０４は、セグメントＩＤと物理的記憶ノード（又はサーバ）との間のマッピングを担う。このレイヤは、上述のインデックス付け及びセグメント化機能を実装する。すなわち、適応型ロケータレイヤ１０４は、セグメント制御モジュール１２及び適応型セグメントロケータモジュール１４の機能を提供するために用いられ得るソフトウェアレイヤの例である。
【００８４】
例示的な方法及び処理を、情報のデータベースがグラフデータでありデータアイテムがトリプル、具体的にはＲＤＦトリプルである例示的なシステムを参照して以下に説明する。例示的なシステムでは、データベース制御部１０として動作する複数のＰＴＳサーバ１０１が存在する。
【００８５】
アプリケーション２０は、グラフレイヤ１０２のようなグラフインタフェースを用いてＰＴＳサーバ１０１のうちの１つに接続する。グラフインタフェースは、専用ライブラリ、ＨＴＴＰに基づくＲＥＳＴレイヤ、又は他の等価な技術により達成されても良い。グラフインタフェースは、アプリケーションが記憶レイヤ３０にデータを書き込み、単一のデータアイテムを読み出し、グラフトラバースを実行し、データアイテムセット全体に渡り範囲クエリを実行することを可能にする。以下の記載は、どのようにこれらの動作の各々がデータ記憶システム内で実行されるかを説明する。
【００８６】
アプリケーションは、データアイテム（つまりトリプル）を書き込むとき、グラフレイヤ１０２にライト動作を発行する。グラフレイヤは、発行されたライト動作の中に表されたトリプルを記憶するのに適したフォーマットに変換するよう構成される。
【００８７】
図２は、ＫＶＳレイヤ１０３及び適応型ロケータレイヤ１０４で実行される処理を説明する。ＫＶＳレイヤで、データアイテムの始めにあるキャラクタストリングは、リーフに到達するまで、プレフィックスツリーを辿る。このリーフは、データアイテムが位置すべきセグメントのセグメントＩＤを表す。この目的で、ＫＶＳレイヤ１０３は、同じデータセットについてプレフィックスツリーの部分を格納する他のＰＴＳと通信する必要があっても良い。データアイテムのセグメントへの追加は、データセグメントが大きくなりすぎる（所定の最大セグメントサイズを超える）場合、データセグメントの分割をトリガしても良い。この目的のために、システムは、セグメントの、したがってデータアイテムの論理的順序を維持できるプレフィックスツリーを用いる。
【００８８】
セグメントＩＤを発見した後、ライト動作は、適応型ロケータレイヤ１０４に発行される。適応型ロケータレイヤ１０４は、セグメントＩＤと記憶ユニットとの間のマッピングを格納し、したがって、データアイテムが位置すべきセグメントを担当する記憶ユニットを発見し、ライト動作を該サーバに直接発行するよう構成される。セグメントＩＤと記憶ユニットの識別情報との間のマッピングは、適応型ロケータレイヤ１０４により維持され、時間に渡り変化し得る。マッピングの例は、図２の破線矢印として示される。説明を目的として、データアイテムのＳＰＯセットは、シーケンシャルに順序付けられたセグメントが同じサーバに格納されるシナリオで説明される。これは、適応型ロケータレイヤ１０４が、未だ、どのセグメントが同じ記憶ユニットに同一場所に存在すべきかを検討するために最適化を実行していない状況の代表である。データアイテムのＰＯＳ及びＯＳＰセットの場合には、適応型ロケータレイヤ１０４は過去のリード動作データに基づき記憶ユニット間のセグメントの分布を最適化するので、セグメントのシーケンシャルな順序（順序付けメトリック値の降順で三角形の底辺で左から右へ行く）は、記憶ユニット３０内で保持されない。
【００８９】
システムが１より多いデータアイテムセット内に符号化された同じ情報を格納する場合、プレフィックスツリーサーバ１０１は、１より多いプレフィックスツリーを維持しても良い。このようなシステムは、範囲クエリの処理が非常に重要であり、データアイテムの異なる要素が範囲クエリにより境界を示される状況で実施されても良い。例えば、格納されたデータアイテムがＲＤＦフォーマットである実施形態では、３つのデータアイテムセットが格納されても良い（ＳＰＯ、ＰＯＳ、ＯＳＰ）。グラフデータのトラバース及びスキャンでは、また非構造化データアイテムでも、単一のプレフィックスツリーで十分である。
【００９０】
記憶ユニット３０は、それらのローカルディスクにデータを格納するよう構成されても良く、Ｉ／Ｏを最適化するためにメモリ内キャッシュメカニズムを有しても良い。単一のデータセグメントのローカルディスク記憶は、順序付きハッシュテーブルを用いて達成されても良い。順序付きハッシュテーブルは、それらのセグメント内のデータアイテムの順序を保存するメカニズムである。順序付きハッシュテーブルは、各データアイテムが同じセグメント内で順序付けられ、各セグメントが他のセグメントに関して順序付けられるよう、セグメント及びそれらの構成要素であるデータアイテムを格納する手段を各記憶ユニットに提供する。
【００９１】
単一のデータアイテム（又はトリプル主語）のリードは、ライト動作と同様の方法で発行される。アプリケーション２０は、グラフインタフェースを用いてデータアイテムを読み出すことにより開始する。アプリケーション２０は、該データアイテムをＫＶＳレイヤ１０３に発行できる動作に変換する。ＫＶＳレイヤ１０３は、データアイテムにより指示されたプレフィックスツリーを通る経路を辿ることにより、対応するセグメントＩＤを計算し、セグメントＩＤを適応型ロケータレイヤ１０４に渡す。適応型ロケータレイヤ１０４は、対応する記憶ユニットアドレス、又は記憶ユニット／サーバ／ノードに識別されたセグメントを有するセグメントを格納させる特定の他の情報を計算し、リード動作を該記憶ユニットに発行する。グラフトラバースは、リード動作を繰り返し実行することにより実施できる。
【００９２】
データアイテムセット全体に渡る範囲クエリ（スキャンとも称する）は、以下のように実行される。アプリケーションは、グラフレイヤ１０２にスキャン動作を発行し、トリプルパターンをパラメータとして与える。トリプルパターンは、トリプルと同じフォーマットを有するが、１又は複数の部分はＮＵＬＬであり、インスタンス化されるべきであることを示す。例えば、＜Ｓｕｂｊｅｃｔ，ＮＵＬＬ，ＮＵＬＬ＞は、トリプルの主語として「Ｓｕｂｊｅｃｔ」を有する全てのデータに渡るスキャンを意味する。次に、これは、ＫＶＳレイヤ１０３の２つのキー（順序付きメトリック値）、つまりトリプルパターンに対応する順序付きデータセット内の下限キー及び上限キーに変換される。次に、ＫＶＳレイヤ１０３は、この情報を用いて、対応する下限及び上限セグメントＩＤ、並びにその間に位置するセグメントＩＤのセット全体を計算する。
【００９３】
次に、セグメントＩＤのリストは、適応型ロケータレイヤ１０４に渡され、セグメントＩＤを記憶ユニット（データ記憶サーバ）アドレス又は該ＩＤを有するセグメントが格納される記憶ユニットを識別するための他の情報に変換する。次に、範囲クエリは、各記憶ユニットにローカルに実行され、部分的結果がＫＶＳレイヤ１０３に読み出される。最後にＫＶＳレイヤ１０３は、セグメントＩＤの初期リストの順序を用いて部分的結果の各々を順序付ける。最後に、データに渡る反復子（iterator）は、アプリケーションに返される。
【００９４】
結果セットは、プレフィックスツリーサーバ１０１のＫＶＳレイヤ１０３による単一の検索動作で扱うには大きすぎるかも知れない。このような場合、アプリケーション２０が初期部分を処理している間、プレフィックスツリーサーバ１０１は、記憶ユニット３０からのデータの一部を読み出し、続いてより多くのデータを要求しても良い。このシステムはディスクから記憶ユニットのメモリへデータを予めフェッチするキャッシング先行メカニズムでも最適化できる。同じ記憶ユニット内の関連するデータセグメントを同一場所に配置することにより、ネットワークトラフィックは最小化され、範囲クエリを満たすデータがより少数のサーバと連絡することによりアプリケーションに利用可能にされる。
【００９５】
纏めると、本発明の実施形態は、前に異なるサーバに置かれていたデータを読み出す将来のスキャン動作を改善するために、履歴データに基づき同じスキャン動作で頻繁に一緒に読み出されたデータアイテムを同一場所に配置するシステムを提供する。システムは、全てのサーバに問い合わせる必要性を回避することにより、範囲クエリのスキャン動作を改善するために、データアイテムが格納されるセグメントの識別表示の順序を維持する。本発明の実施形態は、スキャン動作を最適化するために、使用に基づきデータを同一場所に配置する手順をセグメント識別表示の順序付き記憶と結合する方法で、データベース内のデータアイテムの分散型記憶を実施するために用いられる、データベース制御部、システム、データ記憶システム、方法、ソフトウェア及びプログラムを含む。
【符号の説明】
【００９６】
１０  データベース制御部
１２  セグメント制御モジュール
１４  適応型セグメントロケータモジュール
１６  範囲クエリ処理モジュール
２０  アプリケーション
３０  記憶ユニット
１０１  プレフィックスツリーサーバ（ＰＴＳ）
１０２  グラフレイヤ
１０３  ＫＶＳレイヤ
１０４  適応型ロケータレイヤ
【図１】
2014225260.tif 000004
【図２】
2014225260.tif 000005
【図３】
2014225260.tif 000006