(57)【要約】      （修正有）【課題】グラフデータにおける固定値データのアグリゲーションを処理するための、ハイブリッドデータストレージシステムを提供する。【解決手段】ハイブリッドデータストレージ装置１０は、表形式データとして複数の固定値を保存するように構成される表形式データストレージシステム１４、データグラフを保存するように構成されるグラフデータストレージシステム１２、表形式データストレージシステム及びグラフデータストレージシステムの各々に対するアクセスを統合するマルチストレージ論理レイヤ１６、を有する。表形式データストレージシステム１４のテーブルにおける固定値の各々はテーブルエントリを占め、データグラフの頂点の性質を制約し、グラフデータストレージシステム１２は、エッジによりリンクされる複数の頂点としてデータグラフを保存するように構成される。【選択図】図１
2017037648.tif 000002
【特許請求の範囲】
【請求項１】
データハイブリッドストレージシステムであって：
表形式データとして複数の固定値を保存するように構成される表形式データストレージシステム；
データグラフを保存するように構成されるグラフデータストレージシステム；
前記表形式データストレージシステム及び前記グラフデータストレージシステムの各々に対するアクセス方法を統合するマルチストレージ論理レイヤ；
を有し、テーブルにおける固定値の各々はテーブルエントリを占め、前記データグラフの頂点の性質を制約し；
前記グラフデータストレージシステムは、エッジによりリンクされる複数の頂点として前記データグラフを保存するように構成され、各々のエッジは主語頂点及び目的語頂点として特定の頂点対を接続し、複数のエッジは、前記表形式データストレージシステムにより保存される複数の固定値の各々について、性質が主語頂点として固定値により制約される頂点と、目的語頂点としてのポインタ頂点とを指定するエッジを含み、前記ポインタ頂点は前記固定値により占められる前記テーブルエントリに対するポインタをエンコードする；
ことを特徴とするハイブリッドデータストレージシステム。
【請求項２】
各々のエッジは目的語頂点により制約される主語頂点の性質を規定するラベルとともに分類され、或いは、目的語頂点がポインタ頂点である場合、前記ラベルは、前記ポインタにより指し示される前記テーブルエントリを占める固定値により制約される主語頂点の性質を規定する、請求項1に記載のハイブリッドデータストレージシステム。
【請求項３】
前記マルチストレージ論理レイヤは：
前記ハイブリッドデータストレージシステムで格納するデータとして、主語情報及び目的語情報を指定するデータ項目を受信することであって、前記目的語情報は前記主語情報の性質を制約し、或るラベルが、前記目的語情報により制約される前記主語情報の性質を規定する、こと；
受信された目的語情報が固定数値であるか否かを判定することであって、前記目的語情報が固定数値であった場合：データのテーブルのテーブルエントリを占めるように、前記固定数値を表形式データストレージシステムに転送し；前記固定数値により占められる前記テーブルエントリに対するポインタを生成し；ラベルで分類されるエッジとして保存するために、前記主語情報、前記ラベル及び前記ポインタを前記グラフデータストレージシステムに転送し、主語頂点としての主語情報を、目的語頂点としてのポインタをエンコードするポインタ頂点にリンクする、こと；
を行うように構成されている、請求項1に記載のハイブリッドデータストレージシステム。
【請求項４】
前記マルチストレージ論理レイヤは：
前記目的語情報が、固定数値を取り出すことが可能な非固定数値であるか否かを判定することであって、前記目的語情報が、固定数値を取り出すことが可能な非固定数値であった場合：
データのテーブルのテーブルエントリを占めるように、前記固定数値を表形式データストレージシステムに転送し；
前記固定数値により占められる前記テーブルエントリに対するポインタを生成し；
ラベルで分類されるエッジとして保存するために、前記主語情報、前記ラベル及び前記ポインタを前記グラフデータストレージシステムに転送し、主語頂点としての主語情報を、目的語頂点としてのポインタをエンコードするポインタ頂点にリンクし；
前記ラベルで分類されるエッジとして保存するために、前記主語情報、前記ラベル及び前記非固定数値を前記グラフデータストレージシステムに転送し、主語頂点としての主語情報を、目的語頂点としての非固定数値にリンクする、こと；
を行うように構成されている、請求項3に記載のハイブリッドデータストレージシステム。
【請求項５】
前記固定値により占められる前記テーブルエントリは、性質が前記固定値により制約される前記主語頂点により特定可能な行と、性質が前記固定値により制約される前記主語頂点を、前記固定値により占められる前記テーブルエントリに対するポインタをエンコードする前記ポインタ頂点にリンクするエッジのラベルによって識別可能な列とで特定される、請求項2に記載のハイブリッドデータストレージシステム。
【請求項６】
前記表形式データストレージシステムは複数のテーブルを保存するように構成され、各々のテーブルのテーブルエントリは、グラフデータストアにより保存される頂点のサブセットの性質を制約する固定値のみによって占められ；
前記サブセットのメンバは、各々の頂点から、各サブセットの頂点を規定するサブセットへのホップ数により決定され、各サブセットのメンバは、サブセットの頂点を規定するサブセットのうちnホップの頂点に制限され、nは所定の正の整数である、請求項1に記載のハイブリッドデータストレージシステム。
【請求項７】
モジュールを規定するサブセットを有する前記グラフデータストレージシステムは、媒介中心性の次数で頂点を分類し、最高の媒介中心性を有する頂点を、頂点を規定するサブセットとして選択することにより、頂点を規定するサブセットを選択するように構成される、請求項6に記載のハイブリッドデータストレージシステム。
【請求項８】
前記グラフデータストレージシステムは複数のストレージユニットにわたるグラフを保存するように構成され、各々のストレージユニットは、前記データグラフの連続的な領域である1つ以上のパーティションを保存するように構成され；及び
前記グラフデータストレージシステムは、モジュールを規定するサブセットを有し、前記パーティション内の頂点のペアに対する媒介中心性の次数で頂点を分類することにより、各パーティションの頂点を規定するサブセットを選択するように構成され且つ最大の媒介中心性を有する頂点を、前記パーティションの頂点を規定するサブセットとして選択するように構成される、請求項1に記載のハイブリッドデータストレージシステム。
【請求項９】
前記グラフデータストレージシステムは、モジュールを規定するサブセットを有し、前記モジュールを規定するサブセットは、特定の機械学習アルゴリズムを実行する場合に読み込みアクセスがなされるデータタイプのリストを受信し、頂点にリンクするエッジ総数の内の前記データタイプのリストに属する性質を規定する頂点からのエッジの割合に従って、前記データグラフの頂点をランク付けし、及び、最高にランク付けされた頂点を、頂点を規定するサブセットとして選択するように構成される、請求項6に記載のハイブリッドデータストレージシステム。
【請求項１０】
前記表形式データストレージシステムは：
前記表形式データストレージシステムにアクセスする各々のクエリについて、1つ以上のテーブルがアクセスされたことの記録を維持するように構成されるクエリモニタ；及び
同じクエリでアクセスされるグループのテーブルのインスタンスが併合基準を充足している複数のテーブルのうちの1つより多いテーブルのグループを、前記クエリモニタにより監視される記録に基づいて特定し、前記グループ内のテーブルを、表形式データストアにおける単独のテーブルに併合するように構成されるテーブルマネジャモジュール；
を更に有する、請求項6に記載のハイブリッドデータストレージシステム。
【請求項１１】
前記ポインタ頂点は、前記表形式データストレージシステムにおけるテーブルと、指定されたテーブルにおける行及び列を指定する情報とをエンコードする、請求項1に記載のハイブリッドデータストレージシステム。
【請求項１２】
前記表形式データストレージシステムは、互いに通信するように構成される複数の同時アクセス可能な表形式データストレージユニットを有する分散ストレージ装置であり；及び/又は
前記グラフデータストレージシステムは、互いに通信するように構成される複数の同時アクセス可能なグラフデータストレージユニットを有する分散ストレージ装置であり、その各々は前記データグラフのうちの1つ以上の連続的な領域を保存している、請求項1に記載のハイブリッドデータストレージシステム。
【請求項１３】
ハイブリッドデータストレージ方法であって：
表形式データストレージシステムにおいて、固定値のテーブルを保存する工程；
グラフデータストレージシステムにおいて、データグラフを保存する工程；
マルチストレージ論理レイヤにおいて、前記表形式データストレージシステム及び前記グラフデータストレージシステムの各々への各自のアクセス方法によるアクセスを制御する工程；
を有し、前記テーブルにおける固定値の各々はテーブルエントリを占め、前記データグラフの頂点の性質を制約し；
前記データグラフを保存することは、エッジによりリンクされる複数の頂点として前記データグラフを保存することを含み、各々のエッジは主語頂点及び目的語頂点として特定の頂点対を接続し、複数のエッジは、固定値の各々について、性質が主語頂点として固定値により制約される頂点と、目的語頂点としてのポインタ頂点とを指定するエッジを含み、前記ポインタ頂点は前記固定値により占められる前記テーブルエントリに対するポインタをエンコードする；
ことを特徴とするハイブリッドデータストレージ方法。
【請求項１４】
相互接続されたコンピューティングデバイスのネットワークにより実行される場合に、相互接続されたコンピューティング装置のネットワークに、ハイブリッドデータストレージ方法を実行させるコンピュータプログラムであって、前記ハイブリッドデータストレージ方法は：
表形式データストレージシステムにおいて、固定値のテーブルを保存する工程；
グラフデータストレージシステムにおいて、データグラフを保存する工程；
マルチストレージ論理レイヤにおいて、前記表形式データストレージシステム及び前記グラフデータストレージシステムの各々への各自のアクセス方法によるアクセスを制御する工程；
を有し、前記テーブルにおける固定値の各々はテーブルエントリを占め、前記データグラフの頂点の性質を制約し；
前記データグラフを保存することは、エッジによりリンクされる複数の頂点として前記データグラフを保存することを含み、各々のエッジは主語頂点及び目的語頂点として特定の頂点対を接続し、複数のエッジは、固定値の各々について、性質が主語頂点として固定値により制約される頂点と、目的語頂点としてのポインタ頂点とを指定するエッジを含み、前記ポインタ頂点は前記固定値により占められる前記テーブルエントリに対するポインタをエンコードする；
ことを特徴とするコンピュータプログラム。
【請求項１５】
請求項14に記載のコンピュータプログラムを保存する非一時的な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータストレージシステムの技術分野に属する。特に、本発明はハイブリッドシステムにおいて概念的及び非概念的なデータを保存するシステムに関連する。
【背景技術】
【０００２】
グラフベースデータを対象とするマーケットの成長とともに、多様なストレージソリューションが発達してきた。これらの新たなシステムは以下の4つのカテゴリに分類される：
1.  ネイティブグラフソリューション(例えば、Neo4j)
2.  RDBベースソリューション(例えば、Oracle  Spatial  and  Graph)
3．カラムベースソリューション(例えば、Virtuoso)
4.  ドキュメントベースソリューション(例えば、MongoDB)
前提とするストレージに依存して、グラフストレージシステムは、通常、  (所与の頂点及び後続のグラフ経路から目的地に至る)グラフトラバース処理又は(グラフパターンとのマッチングを行う)グラフスキャン処理の何れかに対して最適化される。トラバースクエリは多くのグラフ/ネットワーク分析アルゴリズムに有用である。一方、スキャンクエリは、同じサブグラフパターンに従うデータをロードするために必要とされる(例えば、SPARQLクエリ評価、数値属性抽出)。特に、データモデルが、テキストリファレンス及び数値データを含むヘテロジニアスデータに関する場合、ストレージの最適化は様々な要請を含む。前者は主にURIに関連し、グラフモデル中の頂点を指し示す。
【０００３】
現在のグラフベースシステムは、(例えば、整数のN次元ベクトル、浮動小数点、二進数などの)マシン学習/データマイニングに必要なデータフォーマットを満足するようには設計されていないので、データは事前に処理されることを要する。理想的には、この事前処理は、データがシステムにロードされる場合でさえ徐々になされ、事前処理の時間を最適化する。現在のシステムは、データについてのこの種の一般的な事前処理を実行していない。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従って、グラフデータストレージシステムで固定値データのアグリゲーションを要するクエリを処理するために、かなりの時間及びシステムリソースが必要とされる。
【課題を解決するための手段】
【０００５】
実施形態は、データハイブリッドストレージシステムを含み、本システムは：表形式データとして複数の固定値を保存するように構成される表形式データストレージシステム；データグラフを保存するように構成されるグラフデータストレージシステム；表形式データストレージシステム及びグラフデータストレージシステムの各々に対するアクセスメカニズムを統合するマルチストレージ論理レイヤ；を有し、テーブルにおける固定値の各々はテーブルエントリを占め、データグラフの頂点の性質を制約し；グラフデータストレージシステムは、エッジによりリンクされる複数の頂点としてデータグラフを保存するように構成され、各々のエッジは主語頂点(subject  vertex)及び目的語頂点(object  vertex)として特定の頂点対を接続し、複数のエッジは、表形式データストレージシステムにより保存される複数の固定値の各々について、性質が主語頂点として固定値により制約される頂点と、目的語頂点としてのポインタ頂点(pointer  vertex)とを指定するエッジを含み、ポインタ頂点は固定値により占められるテーブルエントリに対するポインタをエンコードする。
【０００６】
グラフデータストレージシステムは、ダイナミックスキーマを許容する豊富なデータモデルの保存、及び、エンティティ及びそれらエンティティ間の関係を表現するデータの保存の双方を許容する。多くの場合、エンティティは、(例えば、「国」のエンティティの母集団についての平均所得などのような)統計的なデータ、ないし、エンティティ属性(例えば、「人物」エンティティの身長及び体重)又は時系列データ点(例えば、「センサストリーム」エンティティから読み込まれるもの)等による、それらに付随する数値を有する。そのようなデータの異種性の一例は健康管理の分野におけるものである。健康管理プラットフォームは、医者、患者、疾患などの間の関係を表現することを要する一方、患者の心拍、糖値などのような健康測定を維持しなければならない。グラフモデルでは、通常、トラバーサルクエリがなされるが、通常、数値データがアグリゲーション処理又は分析アルゴリズムによって使用される。アグリゲーションの場合に、あるグラフデータ処理システムにより既に提供されているスキャンクエリが適用可能である。しかしながら、スキャンクエリは、監視されない及び監視される機械学習アルゴリズム等のような複雑なデータ分析に必要な複雑な数値データ処理には十分でない。そのようなアルゴリズムは、数値特徴ベクトルで算出されるエンティティに関するデータを必要とし、特に、大量のデータを取り扱う場合に、時間及び演算リソースを費やす。そのような特徴ベクトルは、テーブル形式で適切に表現される。実施形態は、グラフデータストレージに関連するセマンティックな改善、及び、表形式データに関連する或る範囲内のデータエントリの高速読込による恩恵を享受するハイブリッドデータストレージシステムを提供する。
【０００７】
実施形態は、所定の情報をデータグラフで保存し且つ所定の情報を表形式フォーマットで保存することにより、トラバーサルクエリ及びスキャンクエリの双方を促す。マルチストレージ論理レイヤに提示するクエリ(又はクエリ内のサブクエリ)は、クエリにより探索されるデータに依存して、グラフデータストレージシステム又は表形式データストレージシステムの何れかに割り振られることが可能である。例えば、数値データの複数個を統合(アグリゲート)する要求として識別されるクエリは、表形式データストレージシステムに割り振られることが可能である。グラフ頂点に対する関連性から特定される情報部分を探索し、従ってグラフの横断を要するクエリは、グラフデータストレージシステムに割り振られることが可能である。
【０００８】
実施形態は、固定値データが異なるスキーマ、表形式スキーマに従って保存されることを許容することにより、グラフデータストレージシステムを改善する。固定値データは、意味論的に補強されるように、ポインタによりグラフデータにリンクされる。固定値データは、表形式データストアにおいて識別可能であり、例えば、ポインタ頂点にリンクする主語頂点は、行名称(row  name)であってもよい。このように、意味的に関連する固定データ値は、表形式データストアで一緒にアクセスされることが可能であり、スキャンクエリに対する高速応答が可能になる。
【０００９】
グラフデータストレージシステム及び表形式データストレージシステムの各々は、それらに保存されるデータに対する読み込み及び書き込みを処理するように構成される各自自身のアクセスメカニズムを有する。マルチストレージ論理レイヤは、双方のデータストレージシステムへのアクセスに対する単独のポータルを提供し、別個のストレージシステムへの振り分けがユーザにとって不透明であるようにする(ユーザは、人間的なユーザであってもよいし、アプリケーションであってもよい)。
【００１０】
ハイブリッドデータストレージシステムは、複数の相互接続されたデータストレージユニットを含む分散ストレージシステムであってもよい。更に、グラフデータストレージシステム及び表形式データストレージシステムのうちの双方又は一方が、複数の相互接続されたデータストレージユニットを含む分散ストレージシステムであってもよい。表形式データストレージシステムのデータストレージユニットと、グラフデータストレージシステムのデータストレージユニットとは、異なったものであってもよいし、或いは、データストレージユニットの全部又は一部が、表形式データ及びグラフデータを保存するものであってもよい。選択的に、表形式データストレージシステムは、互いに通信するように構成される複数の同時にアクセス可能な表形式データストレージユニットを含む分散ストレージ装置であってもよく；及び/又は；グラフデータストレージシステムは、互いに通信するように構成される複数の同時にアクセス可能なグラフデータストレージユニットを含む分散ストレージ装置であり、その各々がデータグラフの1つ上の連続した領域を保存してもよい。
【００１１】
2つのデータストレージシステムは、それらがデータを保存するスキーマの観点からは別個のものであるが、一方又は双方のスキーマに従って、単独のデータストレージユニットがデータを保存してもよい。実際、実施形態は、固定値データを指すポインタ頂点へのエッジにより接続される目的語頂点(の各々)として、固定値データを同じストレージサーバ(データストレージユニット)に保存してもよい。
【００１２】
設計段階において、グラフデータのデータモデルを検討し、グラフを設定する場合に、頂点のデータタイプは、例えばXMLプリミティブデータタイプ等を利用して(クラスの定義を利用して)宣言される。従って、XMLプリミティブデータタイプは、一定のプリミティブ値として識別可能であることが想定されている。そのような実施形態では、固定値は、一定のプリミティブ値として代替的に参照されてもよい。表形式データストレージシステムは、固定値が固定数値に限定されるように、(カラム及びローの名称は別として)固定数値のみを保存してもよい。
【００１３】
頂点はリソース又はエンティティを表現し、主語頂点としての頂点を目的語頂点としての他の頂点に結ぶエッジは、主語頂点の制約の性質を表現する。その性質は、目的語頂点それ自身により、目的語頂点に保存される情報により、目的語頂点と主語頂点及び目的語頂点の間のリンクに帰属するラベルとの組み合わせにより、及び/又は、目的語頂点としてのポインタ頂点によりエンコードされるポインタにより指し示されるテーブルエントリを占める表形式データストレージに保存される固定値により、制限される。
【００１４】
頂点に関連する主語及び目的語という接頭辞は相対的な用語である。例えば、或る頂点は或る関係では主語であり、別の関係では目的語であるかもしれない。エッジは方向性を有し、本明細書の目的に関し、エッジが出て行く基点の頂点はそのエッジに関する主語頂点であり、宛先の頂点はそのエッジに関して目的語頂点であるとする。すなわち、或る頂点と他の頂点が、或る頂点から他の頂点へのエッジにより結び付けられる場合、或る頂点は他の頂点に対して主語頂点である。同様に、或る頂点と他の頂点が、他の頂点から或る頂点へのエッジにより結び付けられる(又はリンクされる/接続される)場合、或る頂点は、他の頂点に対する目的語頂点である。ポインタ頂点は目的語頂点でしかなく、従って、データグラフのリーフとして言及されてもよい。従って、「性質が固定値によって制約される主語頂点」のような言い回しは、厳密には、「性質が固定値によって制約される頂点」のように表現されてもよい。
【００１５】
実施形態は、各々のエッジは目的語頂点により制約を受ける主語頂点の性質を規定するラベルとともに分類されること、或いは、目的語頂点がポインタ頂点である場合、前記ラベルは、前記ポインタにより指し示される前記テーブルエントリを占める固定値により制約される主語頂点の性質を規定すること、を含んでもよい。
【００１６】
すなわち、グラフデータストレージシステムは、ラベルが付されたエッジによりリンクされる複数の頂点としてデータグラフを保存するように構成され、各々のラベル付けされたエッジは、ラベル付けされたエッジのラベルにより規定される関係を有する目的語頂点及び主語頂点として指定された頂点対を結び付け、複数のラベル付けされたエッジは、表形式データストレージシステムにより保存される複数の固定値の各々について、性質が主語頂点として固定値により制約される頂点と、目的語頂点としてポインタ頂点とを指定するラベル付けされたエッジを含み、ポインタ頂点は固定値により占められるテーブルエントリに対するポインタをエンコードする。
【００１７】
表形式スキーマは、例えば、ポインタ頂点にリンクする主語頂点によって改善されることが可能であり、ポインタ頂点にリンクする主語頂点は、(固定値を保存するテーブルエントリの)行名称、及び、列名称であるポインタ頂点及び主語頂点の間のラベル付けされたエッジのラベルであってもよい。このように、意味が関連付けられた固定データ値は、表形式データストアで一緒にアクセスされることが可能であり、スキャンクエリに対する高速応答が可能にされる。
【００１８】
ラベルは、主語頂点により表現されるリソースと固定値により制約される性質との間の関係を表現するように解釈されてもよく、すなわち、ラベルは主語頂点の性質を表現/規定/指示し、その性質についての値は固定値により制約される。
【００１９】
エッジは、3つの要素を有するデータ項目であるトリプルの形式で保存されてもよい。3つの要素は、主語頂点(S)と、ポインタ頂点であってもよい目的語頂点を識別するデータ(O)と、2者間の関係を規定するラベル(P)とを特定するデータである。ラベルは述語として言及されてもよい。トリプルは<SPO>の形式で保存されてもよい。代替的に、同じトリプルが異なる順序でソートされた要素とともに複製されるインデキシング及びデータ管理方式が使用されてもよい。
【００２０】
実施形態はマルチストレージ論理レイヤを含んでもよく、マルチストレージ論理レイヤは：前記ハイブリッドデータストレージシステムで格納するデータとして、主語情報及び目的語情報を指定するデータ項目を受信することであって、前記目的語情報は前記主語情報の性質を制約し、或るラベルが、前記目的語情報により制約される前記主語情報の性質を規定する、こと；受信された目的語情報が固定数値であるか否かを判定することであって、前記目的語情報が固定数値であった場合：データのテーブルのテーブルエントリを占めるように、前記固定数値を表形式データストアに転送し；前記固定数値により占められる前記テーブルエントリに対するポインタを生成し；ラベルで分類されるエッジとして保存するために、前記主語情報、前記ラベル及び前記ポインタを前記グラフデータストレージに転送し、主語頂点としての主語情報を、目的語頂点としてのポインタをエンコードするポインタ頂点にリンクする、こと；を行うように構成されている。
【００２１】
マルチストレージ論理レイヤは、管理モジュールとして言及されてもよく、及び、マルチストレージ論理レイヤとして機能させるコンピュータプログラムを実行する単独のコンピューティングデバイスにより実現されてもよい。単独のコンピューティングデバイスは、グラフデータストア及び表形式データストアの双方又は一方のうちの少なくとも一部分を構成してもよい。代替的に、マルチストレージ論理レイヤは、マルチストレージ論理レイヤの機能を実現するように協働して動作する複数のコンピューティングデバイス(例えば、サーバー又はコンピュータ)により実現されてもよい。例えば、複数のコンピューティングデバイスの各々は、マルチストレージ論理レイヤの機能に寄与するようにコンピューティングデバイスを実行させるコンピュータプログラムを実行してよい。複数のコンピューティングデバイスの各々は、グラフデータストア及び表形式データストアの双方又は一方のうちの少なくとも一部を構成してよい。各々のコンピューティングデバイスは、マザーボード、コンピュータ処理ユニットI/Oインターフェース、メモリ、及び、データストレージを有してもよい。
【００２２】
マルチストレージ論理レイヤは、グラフデータストレージシステムへグラフAPIにより及び表形式データストレージシステムへ表形式APIによりアクセスするように構成されてよい。APIは、個々のデータストレージシステムに対する読み込み及び書き込みアクセスを行うためのシンタックスを規定する。マルチストレージ論理レイヤは、受信した主語情報で識別される主語頂点によりインスタンス化されるクラスの性質を探すために、グラフデータの一部として保存されるデータモデル又はオントロジーモデルにアクセスし、及び、受信したラベルにより識別される性質の値は固定値(すなわち、一定のプリミティブ値又は数値)として又はテキストリファレンスとして与えられるか否かを判定するように、構成されてもよい。前者である場合、そのステップの後に、表形式APIにより表形式データストレージシステムに固定値を付加し、ポインタを生成することが続く。後者の場合、受信した情報は、グラフAPIによりグラフデータストレージシステムに単に追加される。
【００２３】
所定の実施形態では、固定値又は非固定値(non-fixed  value)であるデータに加えて、テキストリファレンスのようなデータは、固定値データが取得可能又は導出可能である非固定値としてマルチストレージ論理レイヤにとって識別可能である。例えば、前記マルチストレージ論理レイヤは：前記目的語情報が、固定数値を取り出すことが可能な非固定数値(non-numeric  fixed  value)であるか否かを判定することであって、前記目的語情報が、固定数値を取り出すことが可能な非固定数値であった場合：データのテーブルのテーブルエントリを占めるように、前記固定数値を表形式データストレージシステムに転送し；前記固定数値により占められる前記テーブルエントリに対するポインタを生成し；ラベルで分類されるエッジとして保存するために、前記主語情報、前記ラベル及び前記ポインタを前記グラフデータストレージシステムに転送し、主語頂点としての主語情報を、目的語頂点としてのポインタをエンコードするポインタ頂点にリンクし；前記ラベルで分類されるエッジとして保存するために、前記主語情報、前記ラベル及び前記非固定数値を前記グラフデータストレージシステムに転送し、主語頂点としての主語情報を、目的語頂点としての非固定数値にリンクする、こと；を行うように構成されている。
【００２４】
マルチストレージ論理レイヤは、表形式データストレージシステムで保存する固定値が取得可能であるか否かを判定するために、受信情報に適用される処理規則を保存してもよい。例えば、主語情報により識別される主語頂点の識別子とラベルにより表現される性質とが、ある仮定に基づいて、データグラフに保存されるオントロジーモデル(ontological  model)を問い合わせるために使用されることが可能であり、その仮定では、設計時点において、オントロジーモデルは、特定のクラスに所属する頂点の性質に対する値をもたらすデータタイプのインジケータ(固定数値が取り出されることが可能な固定値/非固定値)で占められている。
【００２５】
代替的に、オントロジーモデルについての何らの事前情報も無しに、受信情報の関連要素に含まれるデータタイプを判定するために、絶対的な処理規則が使用されることも可能である。
【００２６】
表形式データがどのように構成されもよいかについての特定の実現手段として、前記固定値により占められる前記テーブルエントリは、性質が前記固定値により制約される前記主語頂点により特定可能な行と、性質が前記固定値により制約される前記主語頂点を、前記固定値により占められる前記テーブルエントリに対するポインタをエンコードする前記ポインタ頂点にリンクするエッジのラベルによって識別可能な列とで特定される。
【００２７】
有利なことに、この表形式データスキーマは、意味論的ネットワークであるグラフデータから取り出されることにより、有意義な意味を有するカラム及びローの名称のテーブルに固定値を自動的に保存する方法を提供する。更に、同じ性質を記述するが、同一カラム、又は、同一名であるが異なるテーブル中のカラムに保存されるデータグラフにおける異なる頂点からの固定値をもたらす。これは、データグラフにおける特定の頂点に関連する表形式データを特定及び処理するクエリを促す。
【００２８】
行及び列の命名の慣例に加えて、表形式データストレージシステムは、複数の固定値を複数のテーブルに分けるように構成されてよい。テーブルに対するデータの割り振り、分散形態の場合におけるストレージユニット間のテーブルの割り振りに関し、異なるアプローチが使用されてもよい。
【００２９】
ハイブリッドデータストレージシステムでは、前記表形式データストレージシステムは複数のテーブルを保存するように構成され、各々のテーブルのテーブルエントリは、グラフデータストアにより保存される頂点のサブセットの性質を制約する固定値のみによって占められてもよく；前記サブセットのメンバは、各々の頂点から、各サブセットの頂点を規定するサブセットへのホップ数により決定され、各サブセットのメンバは、サブセットの頂点を規定するサブセットのうちnホップの頂点に制限され、nは所定の正の整数である。
【００３０】
有利なことに、そのような実施形態はグラフデータの性質による恩恵を有し、すなわち、意味的に関連する概念又はリソースが互いに隣接する或いは互いに僅かなホップ数の範囲内にあり、表形式ストレージシステムにより保存されるデータを構成し、意味的にリンクした概念に関する固定値が同じテーブルに保存されやすくなることを保証する。当然に、実施形態は、各々の固定値の1つのインスタンスを保存することに限定されず、固定値は1つより多いテーブルに含まれることが可能である。頂点を規定するサブセットは、例えば、階層の中の特定のレベルにある頂点、平均以上頻繁に(又は閾値より多く又は平均より多い割合で)アクセスされた履歴を有する頂点、最高次数の頂点、或いは、クラスタの中心にある頂点であってもよい(クラスタは、保存の目的に対して不可分に取り扱われるデータグラフの一部の領域である)。
【００３１】
表形式データストレージシステムは、個々のテーブルの各々は、単独の物理ディスク内に又は同一のストレージユニットに保存されることを保証するように構成されてよい。
【００３２】
頂点を規定するサブセットがどのように選択されるかについての更なる具体例として：モジュールを規定するサブセットを有する前記グラフデータストレージシステムは、媒介中心性(betweenness  centrality)の次数で頂点を分類し、最高の媒介中心性を有する頂点を、頂点を規定するサブセットとして選択することにより、頂点を規定するサブセットを選択するように構成される。
【００３３】
頂点が媒介中心性の降順にランク付けされる場合、最高のものは最初のm個の頂点であり、mは所定の値であってもよいし、或いは、データグラフの頂点の総数のうちの所定の割合(例えば、上位10％或いは上位20％等)として算出されてもよい。代替的に、媒介中心性の閾値が規定されてもよく、頂点は、頂点を規定するサブセットとして選択される閾値以上の媒介中心性の値を有する。頂点を規定するサブセットのnホップの中に属していない頂点からの固定値により、追加的なテーブルが構成されてもよい。2つの頂点の間のホップ数は、ある頂点から他の頂点への最短経路におけるエッジの数である。一実施形態において、ホップは、進入する又は進出するエッジとしてカウントされるだけであってもよい。
【００３４】
媒介中心性は、グラフ全体に関して、特定のクラスタの頂点に関して、或いは、同じデータストレージユニットに保存される全ての頂点に関して決定されてもよい。媒介中心性は、全体的なグラフに対して事前に算出されることが可能である。これは、頂点がクエリで使用されやすくなり、それらの表形式表現を準備する特徴を促すことが可能である。
【００３５】
特定の具体例において：前記グラフデータストレージシステムは複数のストレージユニットにわたるグラフを保存するように構成され、各々のストレージユニットは、前記データグラフの連続的な領域である1つ以上のパーティションを保存するように構成され；及び；前記グラフデータストレージシステムは、モジュールを規定するサブセットを有し、前記パーティション内の頂点のペアに対する媒介中心性の次数で頂点を分類することにより、各パーティションの頂点を規定するサブセットを選択するように構成され且つ最大の媒介中心性を有する頂点を、前記パーティションの頂点を規定するサブセットとして選択するように構成される。
【００３６】
頂点を規定するサブセットがどのように選択されてよいかについての別の具体例として：前記データグラフストレージシステムは、モジュールを規定するサブセットを有し、前記モジュールを規定するサブセットは、特定の機械学習アルゴリズムを実行する場合に読み込みアクセスがなされるデータタイプのリストを受信し、頂点にリンクするエッジ総数の内の前記データタイプのリストに属する性質を規定する頂点からのエッジの割合に従って、前記データグラフの頂点をランク付けし、及び、最高にランク付けされた頂点を、頂点を規定するサブセットとして選択するように構成される。
【００３７】
有利なことに、そのような実施形態は、単独テーブルを構成する固定値の頂点のサブセットの中心に、機械学習アルゴリズムにとって最も関心のある頂点を配置することにより、特定の機械学習アルゴリズムによる迅速なアクセスを行うように、テーブルを適合させ、最も関心のある頂点及びその近隣(及び近隣の近隣、等々)の双方に関連する固定値のクエリが、単独のテーブルにアクセスすることしか要しないようにする。
【００３８】
頂点を規定するサブセットの選択は、ハイブリッドデータベースの初期化の際に一度実行され、リソースの利用性、データグラフに対してなされる変更の範囲、及び/又は、初期化以来の経過時間に応じて、その後間欠的にリフレッシュされてもよい。更に、個々のテーブル間の境界を跨ぐクエリを減らす観点から、テーブル構造の何らかの動的な修正が実行されてもよい。そのような動的な修正がどのように実行されてよいかについての具体例として、前記表形式データストレージシステムは：前記表形式データストアにアクセスする各々のクエリについて、1つ以上のテーブルがアクセスされたことの記録を維持するように構成されるクエリモニタ；及び；同じクエリでアクセスされるグループのテーブルのインスタンスが併合基準を充足している複数のテーブルのうちの1つより多いテーブルのグループを、前記クエリモニタにより監視される記録に基づいて特定し、前記グループ内のテーブルを、表形式データストアにおける単独のテーブルに併合するように構成されるテーブルマネジャモジュール；を更に有する。
【００３９】
併合基準は、例えば、グループ中のテーブルが、同じクエリの中で、(最近のx個のクエリのうち(xは例えば1000のような正の整数である))閾インスタンス数だけアクセスされること、及び/又は、(例えば、最近のx個のような限られた一群のクエリのうちの)最初のn個が頻繁にアクセスされるグループであること(nは正の整数である)、及び/又は、新しくないクエリよりも新しいクエリを大きく重視し、グループのテーブルが一緒にアクセスされたクエリに基づいてグループのスコアを付けるメトリックに基づいてもよい。
【００４０】
クエリ監視部及びテーブル併合部は表形式データストレージシステムに属しているが、それらは、クエリ、それらの記録、及び、データグラフ及び表形式データ双方についてのデータ構造の修正を処理する管理システム又は管理モジュールの一部分として提供されてもよい。
【００４１】
ポインタ頂点は、クエリ処理を担うエンティティが、表形式データストレージシステムから固定値を取り出すことを可能にする命令を保存する。固定データ値の意味重要性(semantic  significance)は、データグラフ内のポインタ頂点及びその接続エッジの配置により表現され、ポインタ頂点により表現される性質の範囲を制約する加工前の固定値データは、表形式データストレージシステムにおける1つ以上の固定値により制約される。ポインタ頂点によりエンコードされる情報の特定の具体例として：ポインタ頂点は、表形式データストアにおけるテーブル、指定されたテーブル内の行及び列を指定する情報をエンコードする。
【００４２】
ポインタ頂点によりエンコードされる情報は、トリプルとして保存されてもよく、すなわち、データ項目はそれぞれが値を有する3つの個別的な要素を有し、3つの値は、例えばアドレス又はテーブルIDによるテーブルの諸元；例えば数値リファレンス又は名称による列の諸元；及び；例えば数値リファレンス又は名称による行の諸元である。エンコードされるポインタの形式は、データストレージシステム全体にわたって一貫していてもよい。ポインタ頂点は、それらがポインタ頂点であることの指示を含んでいてもよく、或いは、頂点がポインタ頂点であるか否かが、頂点にてエンコードされる情報から認識可能であってもよい。すなわち、頂点にてトリプルを見出すことが通常的ではなく、従って、トリプルにより表現される頂点はポインタ頂点であることが仮定されてもよい。
【００４３】
実施形態はデータストレージシステムを含み、データストレージシステムは、管理モジュールと、データグラフを保存するように構成されるグラフデータストレージ装置と、データのテーブルを保存するように構成される表形式データストレージ装置とを有し、管理モジュールは：データグラフにおいて保存するトリプルを受信するように構成され、トリプルは、主語情報、述語情報及び目的語情報を含み、目的語情報は、主語情報により表現されるリソースの述語情報により識別される性質の範囲を制約し；目的語情報が固定値に対する性質を制約するリテラル(literal)を含む場合、管理モジュールは、固定値をテーブルに転送し、目的語情報に置き換わる表形式データストレージ内の固定値に対すポインタとともにトリプルをデータグラフに転送する。
【００４４】
特定の具体例において、管理モジュールは、リテラルが、固定値を取り出すことが可能な非数値リテラルであるか否かを識別し、表形式データストレージに転送するためにリテラルから固定値を取り出し、2つの形式でグラフデータストレージ装置にトリプルを転送するように構成され、2つの形式は、受信した目的語情報を伴うもの、及び、目的語情報を置換する表形式データストレージの固定値に対するポインタを伴うものである。
【００４５】
一実施形態において、受信した目的語情報が固定値を表すリテラルを含む場合、すなわち、関連する性質を固定値に制限する場合、マルチストレージ論理レイヤ又は管理モジュールは、グラフデータストレージにトリプルとして転送するように構成され、トリプルは、主語情報と、述語情報と、表形式データストレージにおける固定値に対するポインタとを含む。主語情報はトリプルの主語として転送され、述語情報はトリプルの述語として転送され、表形式データストレージにおける固定値に対するポインタはトリプルの目的語として転送される。
【００４６】
別の側面による実施形態はハイブリッドデータストレージ方法を含み、その方法は：表形式データストレージシステムにおいて、固定値のテーブルを保存する工程；グラフデータストレージシステムにおいて、データグラフを保存する工程；マルチストレージ論理レイヤにおいて、前記表形式データストレージシステム及び前記グラフデータストレージシステムの各々への各自のアクセス手段を介するアクセスを制御する工程；を有し、前記テーブルにおける固定値の各々はテーブルエントリを占め、前記データグラフの頂点の性質を制約し；前記データグラフを保存することは、エッジによりリンクされる複数の頂点として前記データグラフを保存することを含み、各々のエッジは主語頂点及び目的語頂点として特定の頂点対を接続し、複数のエッジは、固定値の各々について、性質が主語頂点として固定値により制約される頂点と、目的語頂点としてのポインタ頂点とを指定するエッジを含み、前記ポインタ頂点は前記固定値により占められる前記テーブルエントリに対するポインタをエンコードする。
【００４７】
他の側面の実施形態は、コンピューティング装置により実行されると、コンピューティング装置を、本発明が組み込まれたデータストレージシステムにするコンピュータプログラムを含む。
【００４８】
他の側面の実施形態は、コンピューティング装置により実行されると、コンピューティング装置に、本発明が組み込まれた方法を実行させるコンピュータプログラムを含む。
【００４９】
コンピュータプログラムは記憶媒体に保存されてもよい。例えば、コンピュータプログラムは非一時的な記憶媒体に保存されてもよい。
【００５０】
コンピュータプログラムはストレージ媒体に保存されてもよい。また、コンピュータプログラムは信号として伝送媒体により搬送されてもよい。
【００５１】
上記の実施形態におけるコンピューティング装置は、1つ以上のコンピューティングデバイスを含み、各々のデバイスは、プロセッサ、メモリ、I/Oインターフェース、及び選択的にユーザ入力を受け入れるためのディスプレイユニット及びコンポーネントを含む。コンピューティング装置は、単独のコンピュータ、又は、互いにデータの交換を行うネットワークを介して接続可能なコンポーネントのネットワークであってもよく、コンピュータのネットワークは、管理モジュール及びそのコンポーネントモジュール等のようなモジュールの機能を協同的に実現するように構成されてもよい。
【図面の簡単な説明】
【００５２】
以下、添付図面を参照しながら実施形態が詳細に説明される。
【図１】本発明を組み込むハイブリッドデータストレージ装置10を示す図。
【図２】データグラフの一部分を示す図。
【図３】ハイブリッドストレージシステムの全部又は一部を形成する個々のサーバーの例示的なサーバーアーキテクチャを示す図。
【図４】固定データ値を取り出すことが可能なデータグラフの一部分を示す図。
【図５】一実施形態のハードウェアアーキテクチャを示す図。
【発明を実施するための形態】
【００５３】
図1は、本発明を組み込むハイブリッドデータストレージ装置10(ハイブリッドデータストレージシステムと言及されてもよい)を示す。装置10は、グラフデータストレージシステム、表形式データストレージシステム14、及び、マルチストレージ論理レイヤ16を有する。データは、主にグラフデータストレージシステム12を用いて管理される一方、一部のデータはその代わりに表形式データストレージシステム14に保存されるように選択される。例えば、予め定められたプロシジャを利用してグラフから取り出される数値データ又は未加工数値データ(固定値又は固定値データの具体例である)は、例えば、専門的な数値分析アルゴリズム(specialist  numeric  analytic  algorithms)による簡易なアクセスに備えて表形式データストレージシステム14に保存されることが可能である。これらのデータは、グラフデータストレージシステム12から表形式データストレージシステム14に投入され、例えば、マシン学習データフローの一部として、1つ以上の分析プロセスの入力として使用される。
【００５４】
ハードウェアコンポーネントの観点からは、装置10は、データストレージ装置、プロセッサ及びメモリを有するコンピューティングデバイスであると考えられてよい。しかしながら、装置10は、互いに協働して動作する複数のそのようなデバイスにより実現されてもよい。データストレージシステムの各々は、個別的なコンピューティングデバイス又は個別的なデバイスにより実現されてもよいし、代替的に、表形式データストレージシステム14及びグラフデータストレージシステム12は、同じコンピューティングデバイス又はデバイス群におけるハードウェアリソースを利用してもよい。マルチストレージ論理レイヤ16は、単独のコンピューティングデバイス又は複数のコンピューティングデバイス上で動作するソフトウェアサービスとして提供されてもよい。例えば、装置が分散されたコンピューティング環境である場合、データストレージシステムにストレージリソースを提供する各々のコンピューティングデバイスが、マルチストレージ論理レイヤ16を利用するソフトウェアを動作させてもよい。コンピューティングデバイスは、例えば、データストレージサーバーであってもよい。
【００５５】
グラフデータストレージシステム12は、1つ以上のデータストレージユニット及びグラフデータ管理システムを有する。グラフデータ管理システムは、特に、グラフデータに対する読み書きのアクセス、グラフのクラスタ/パーティションへの分割、それらのクラスタの物理データストレージユニットへの分配、(誤り耐性及び/又はクエリ応答最適化のための)データ複製及び冗長化、表形式データストレージシステム14に保存するのに相応しい固定データ値であるデータ値を識別すること、ポインタ頂点の形成及び保存、グラフクエリの取り扱い、及び、クエリの監視及び記録などの機能に対する責務を担う。
【００５６】
データグラフは、例えばRDFトリプルのようなトリプルとしてエンコードされてもよく、頂点(vertex)は、トリプルにより規定され、主語として命名される。グラフパーティションは、データグラフの一部分又はサブグラフであり、データグラフの一部分又は領域であり、選択的に、グラフパーティションは、データグラフの連続的な部分又は領域に限定されてもよい。グラフパーティションは、総合接続された頂点のみを含んでもよいし、或いは、互いに接続されていない頂点を含んでもよい。
【００５７】
データグラフをエンコードする保存されたデータの例示的な形態は、トリプルであり、特にRDFトリプルである。トリプルは、主語(subject)−述語(predicate)−目的語(object)の複数の表現のとしてグラフデータを特徴付けることにより、グラフデータのエンコーディングをもたらす。その場合、主語及び目的語は、グラフデータのグラフ頂点/ノード/リソースであり、従ってエンティティ、頂点、リソース、インスタンス又は概念であり、述語は主語と目的語との間の関係の表現となる。述語は、目的語に至る特定の種類のリンクを提供することにより、主語に対する何らかのことを主張する。例えば、主語が(例えば、URIによる)ウェブリソースであり、述語が特定の特徴(trait)又はリソースの形態を示し、目的語がその特徴、特質又は形態のインスタンスを示す。言い換えれば、トリプルの記述の集まりは、有向グラフデータを本質的に表現する。RDF規格は、そのようなトリプルの一般化された構造を提供する。
【００５８】
ハイブリッドデータストレージ装置のグラフデータストレージシステム12は、グラフデータマネジャ又はグラフデータベース管理システムを含み、グラフデータをスキャンし、実施のための固定値の定義に合致するフォーマットで任意のデータ値を収集するように構成される。例えば、数値データは固定値としてカウントされてもよい。コンピューティングリソースが許容するならば、グラフデータベース管理システムは、全体的なグラフデータモデルにわたってスキャンすること、数値データを取り出すこと、数値データを表形式データストレージシステム14にそこに保存するために転送すること、データグラフ内で取り出したデータを、適切なテーブルエントリを指し示すポインタで置換することを行うように構成される。ディスクI/Oに起因する待ち時間は、マシン学習プロセスのトレーニング段階における障害の1つである。表形式データストレージシステム14に数値データを保存することは、数値を読み取るディスク範囲を拡大し、ディスクI/Oの頻発を回避する。
【００５９】
グラフストレージに保存されている元のデータモデルから数値データを収集する場合、或いは、データがストリームとして収集される場合、システムに挿入される場合、数値又は非数値のデータ特性に基づいて、新たな数値的特徴が導出されなければならないかもしれない。
【００６０】
非数値データは頂点中心(vertex-centric)(リソース中心(resource-centric))アプローチで保存される。以下に典型例を示す。頂点Aの典型的なグラフストレージフォーマットは、次のように隣接リストを利用している：インバウンド及びアウトバウンド双方のエッジが参照されてよい。
【００６１】
A:<has_parent,  B>，<has_friend,  D>
頂点Aのデータグラフ表現は、図2に示されている。
【００６２】
この頂点中心グラフデータモデルでは、エッジが逆参照可能な頂点(dereferenceable  vertex)(この表現では、B及びD)を指している。宛先(エッジのRHSエンティティ又はライトハンドサイドとしても言及される)が数値である場合、ポインタ頂点として保存されるポインタが、頂点を置換するために使用される。
【００６３】
これらのポインタの各々は、i)(マシンID、セグメントID又はディスクアドレスオフセットである)物理的な位置であって、その位置から数値データの値を発見できるもの、及び/又はii)論理的な位置(例えば、RDBストレージソリューションの場合の数値のカラム及びローの座標)を指し示すことが可能である。直接的なディスクアクセスを当てにするか又は論理的な位置を介したアクセスを当てにするかは、実施の要請及びデータインデキシングの効率に依存する。基本的な要請は、ポインタ/リファレンスが、どのようにデータが保存されアクセスされるかについての詳細をマルチストレージ論理レイヤ16に提供シアンければならないことである。
【００６４】
表形式データストレージシステム14は、1つ以上のデータストレージユニット及び表形式データ管理システムを有する。表形式データ管理システムは、特に、表形式データに対する読み書きのアクセス、表形式グラフの個々のテーブルへの分割、それらの個々のテーブルの物理データストレージユニットへの分配、(誤り耐性及び/又はクエリ応答最適化のための)データ複製及び冗長化、テーブルの併合、テーブルの形成及び修正、表形式データクエリの取り扱い、及び、クエリの監視及び記録などの機能に対する責務を担う。
【００６５】
表形式データストレージシステム14は、固定値を保存するように構成され、固定値は、一定の数値に制限されてもよいし、データグラフに保存されるデータから取り出されてもよいし、及び/又は、書き込みに先行してデータグラフに書き込むためのデータから取り出されてもよい。表形式データストレージシステム14及びそのエンティティは、グラフデータストレージシステム12に保存されるポインタ頂点により参照可能(referencable)である。固定データ値は、表形式データストレージシステム14におけるエントリにポインタをエンコードするポインタ頂点により、グラフデータにおいて置換される。ポインタは、テーブル、カラム(列)及びロー(行)という3つの要素を有し、特定のテーブルにおける1つのエントリを識別する。代替的に、テーブルエントリの範囲がポインタによって識別されるように、カラム及び/又はローは或る範囲で表現されてもよい。
【００６６】
マルチストレージ論理レイヤ16は、グラフデータストレージシステム12及び表形式データストレージシステム14に対するアクセス手段を統一し、ハイブリッドデータが単独のポータルを介してユーザによりアクセスできるようにする。例えば、APIは、グラフデータストレージシステム12及び表形式データストレージシステム14にアクセスする(読み込み、書き込み、問い合わせを行う)シンタックスを定め、マルチストレージ論理レイヤ16は、ハイブリッドデータにアクセスするリクエストを受信し、受信したリクエストを2つのサブリクエスト(データストレージシステムの各々に1つ)に分割し、個々のAPIによって決定されるフォーマット/シンタックスでキャストされるように(投じられるように)構成される。効果的に、マルチストレージ論理レイヤ16は、グラフデータ管理システム及び表形式データ管理システムを一括管理し、ユーザ及び上位レイヤにとって、あたかも単独の管理システムのみが存在しているかのように見えるようにする。
【００６７】
マルチストレージ論理レイヤ16、グラフデータ管理システム及び表形式データ管理システムは、それぞれ、命令又は実行可能なプログラムコードにより実現され、その命令等は、コンピューティングデバイスにより実行されると、個々のエンティティに帰属する機能を、コンピューティングデバイスに実行させる。コンピューティングデバイスは、メモリ、ストレージ、I/Oデバイス、ネットワークインターフェース、センサ(オペレーティングシステムを介するものであってもよいし、そうでないものであってもよい)、及び、コンピューティングデバイスの他のコンポーネントのうちの1つ以上と協働して動作するコンピュータ処理ユニットを含み、個々のエンティティに帰属する機能を実現してもよい。
【００６８】
マルチストレージ論理レイヤ16は、異なるタイプのデータのために最適化された2つの異なるストレージスキーマへのアクセスを一体化する。
【００６９】
グラフベースデータの場合、頂点中心ストレージソリューションが、グラフデータストレージシステム12により実現される。データは、頂点のID又はラベルによりインデックス指定され、ID又はラベルは隣接リストとしてアウトバウンドエッジ(及び、多くの場合、インバウンドエッジ)とともに保存されている。ハイブリッドデータストレージ装置により保存される全てのデータは、データグラフで表現されることが可能である。しかしながら、異なるルーチン及びクエリのメカニズムによるアクセスに関し、ハイブリッドシステムを最適化するために、所定の固定値データが取り出され、表形式データストレージシステム14に保存される。
【００７０】
エッジのRHSのタイプ(又はエッジの目的地又はオブジェクト)に依存して、2つの異なるアプローチをとることが可能である。目的地がリソース(グラフの頂点又はテキストリファレンス(textual  reference))である場合、類似する頂点中心ストレージソリューションが使用される。目的地が例えば数値のような固定値である場合、ポインタは実際の値に置き換わり、その数値が表形式データストレージシステム14に加えられる。目的地が数値又は非数値のリテラル(literal)である場合であって、そのリテラルから数値的な特徴が事前処理により取り出される場合、リテラルはグラフに残り、ポインタを含む新たなポインタ頂点に対する新たなエッジが(リテラルを含む頂点から)作成される。
【００７１】
ポインタは次のフォーマットを有してもよい：＜T，C，R＞。Tは、固定データ値が保存されるテーブルのユニバーサルIDである。このIDは、テーブルを一意に識別するURL又は他の何らかの種類のフォーマットであるとすることが可能である(例えば、ハドゥープファイルシステム(Hadoop  File  System：HDFS)を使用する場合、IDは「hdfs://machine.name/folder/filename」というフォーマットでHDFSのファイルを指し示す)。Cは、数値データが保存されるカラムの範囲である。Rは、データが保存されるローの範囲である。カラム及びローの範囲は、単独のセルを指す「1」まで狭められることが可能である。これらは、テーブルの一部分を指すことも可能であり、或いは、テーブル全体を指すことさえ可能である。このようにすることで、全ての数値データが、ホモジニアス表形式フォーマットで論理的に保存される。ハイブリッドデータストレージ装置に問い合わせを求めるマシン学習/データマイニングアルゴリズムは、ディスクI/Oを頻繁に招くのではなく、バッチ処理用に(列又は行の形式で)或る範囲内のまとまったローディング(range  bulk  loading)を実行することが可能である。
【００７２】
或るデータモデル又はオントロジは複数のテーブルを含むことが可能であり、すなわち、グラフデータストレージシステム12により保存される1つの連続したデータグラフから取り出される固定値を保存するために、表形式データストレージシステム14における複数の異なるテーブルが使用可能である。
【００７３】
表形式データ管理又は表形式データベース管理システムは、テーブル内での固定値データの分布を管理し、テーブルの作成を管理するように構成される。実現手段に依存して、表形式データベース管理システムにより、テーブルの作成に対して異なるアプローチが採用されてもよい。例えば、テーブルの作成は、(例えば、数値データ処理アルゴリズムにより、如何なる種類のクエリが発行される傾向があるか等のような)アプリケーションドメインについての事前情報に基づいて、静的になされることが可能である。この場合、データは、双方向に、垂直に(より多くのレコード及び/又はインスタンスを)及び水平に(より多くの特徴を)単独テーブルに付加されることが可能である。カラムは、グラフモデルにおいて、エッジ又は頂点の属性に直接的にマッピングされることがかのうである。
【００７４】
一方、ダイナミックアプローチは、表形式データベース管理システムによるテーブル作成及び管理を行う。ダイナミックテーブル構成法は以下の仮定に基づく：
1．表形式データの保存は、バイアス(bias)及び相違(variance)の間で適切なトレードオフを行い、逐次学習アルゴリズムに対するバランスのとれたトレーニングサンプルを保証するように最適化される。これは特定のクラスに対するモデルに対して過剰適合(over-fitting)であることを防ぐ。
【００７５】
2．類似する性質の数値データを一緒に保存することが有用である。これは、例えば、データ圧縮のような最適化法を促進することが可能である。例えば、データは、データが読み込まれる場合に実際の数値が生成されるディスクフットプリントを減らすように、差分のみとして保存されることが可能である。
【００７６】
3．データの関連性はクエリ特有である。そのようなグルーピングを周期的に検討し、それに応じて更を実行することが可能である。
【００７７】
初期テーブル構造を構築する際に表形式データベース管理システムにより使用される発見的方法は、以下の事項を含む：
1．N-Hopベース。テーブルのサイズを制限するだけでなくデータの入れ替えを減らすために、(サブセット規定頂点のような所与のグラフ頂点から)2ホップ又は3ホップのようなnホップのテーブルが使用される：
a．例えば媒介中心性に基づいて頂点をソート(分類)する。媒介中心性は、グラフ中の頂点のペアの間の最短経路におけるそれらの出現に基づく頂点の重要性を示す。
【００７８】
b．Nホップから数値とともに各中心について個々のテーブルを作成する。各々の固定値は1つより多いテーブルに保存されてよいことに留意を要する。
【００７９】
2．密度ベース。中心性の度合いが高い頂点は、別個のテーブルとして取り扱われ、ともに概念的に関連するデータを可能な限り多く収集する。
【００８０】
a．機械学習アルゴリズムに対する関連情報とともに、エッジ及び頂点度合いの間の比率に基づいて頂点をソートする。機械学習アルゴリズムの履歴クエリ記録は閲覧されることが可能である、或いは、ハイブリッドデータストレージ装置にアクセスすることを求める機械学習アルゴリズムに関連する情報が、確認されることが可能である。数値及び非数値データの双方が、機械学習アルゴリズムに密接に関連していると考えられることが可能である。従って、それは、テーブルが、(例えば、トレーニング用のクラスラベル)学習アルゴリズムにとって重要であると考えられる数値及び非数値(記号)の双方を含むことが可能な場合である。
【００８１】
3．クラスタベース。(例えば、モジュラリティ最大化目的関数に基づく)グラフパーティショニングアルゴリズムが適用される。
【００８２】
a．頂点はコヒーレントクラスタにクラスタ化され、クラスタ内エッジを最大化し、クラスタ間エッジを最小化する。
【００８３】
b．各クラスタ内の頂点は、ほとんどの接続されたノードを決定するためにクローズネス中心性(closeness  centrality)によりソートされる。
【００８４】
厳密には、何れのアプローチ(又はアプローチの組み合わせ)がとられるべきかは、グラフモデル固有である。同一テーブル内のデータは、メモリへのバルクローディングを促すために同一物理ディスク(又は同じディスクセグメント)に保存されてよい。
【００８５】
ストレージシステムが使用中である場合、実際のクエリパターンは論理的なグルーピングを最適化するために使用され、論理的なグルーピングは物理的なデータロケーションに反映される。例えば、単独のクエリが特定のテーブルの境界を頻繁に横断する場合、システムのアイドル時間において、そのようなクエリパターンに該当するデータは、1つの論理テーブルに統合されるべきである。これは、存在しているテーブルに加えて新たなテーブルの作成によりなされてもよいし、或いは、テーブル間の境界を指定し直すことによりなされてもよい。クエリパターンの重要性(significance)は、最も頻繁に使用されたもの(Most  Frequently  Used：MFU)又は最近使用されたもの(Most  Recently  Used：  MRU)に従って決定されることが可能である。
【００８６】
個々のテーブルが拡大するにつれて、それは異なるサーバーにわたる複数の個別テーブルに分割されることが可能である。テーブルが水平に大きくなりすぎない場合(すなわち、列数に制限がある場合)、テーブルは水平にスライスされることが可能である。クラスタの各ノードは、完全なレコードの一部分を有する。
【００８７】
図3は、ハイブリッドデータストレージ装置の全部又は一部を形成する個別サーバーの例示的なサーバーアーキテクチャを示す。図3のサーバー100は、各自の通信レイヤ40を介して互いに通信し、分散されたハイブリッドデータストレージ装置を形成するそのような複数のサーバーの内の何れかであってよい。
【００８８】
フォルトトレランスモジュール30は、保存されたデータの複製を管理し、特定のストレージロケーションにおける誤りに対する耐性をもたらすように構成される。通信レイヤ40は、ハイブリッドデータストレージ装置における他のサーバー100と通信し、これによりサーバー境界を越えるクエリ処理を支援するように構成される。
【００８９】
ストレージシステムは、2種類のストレージ(及びカプセル化)により構成される：それらは、グラフデータストレージシステム12によるグラフデータストレージ、及び、表形式データストレージシステム14による表形式データストレージである。2つのストレージシステムは、マルチストレージ論理レイヤ16により統合されるグラフAPI及び表形式APIという2つのAPIを介して上位レイヤに委ねられ、2つのAPIはストレージAPIとして言及されてもよい。マルチストレージ論理レイヤ16は、2つの機能を有し：先ず第1に、グラフ処理及びテーブル処理の双方に関して必要なAPIを上位レイヤに明らかにする(例えば、分類子をトレーニングする)。第2に、グラフの特徴と表形式ストレージにおけるテーブル/カラムとの間で関連するデータが論理的にどのようにマッピングされているかを上位レイヤから隠す。
【００９０】
ハイブリッドデータストレージ装置は、効果的なトラバーサルクエリ及び効率的なスキャンクエリをサポートする。
【００９１】
トラベルクエリはグラフデータストレージシステム12により適切にサポートされ、適応ローカリティ法により改善され、すなわち、グラフデータ管理システムは、適応パーティショニングを実行し、履歴クエリレコードに基づいて複数の物理サーバーにパーティションを分散させる。例えば、「A→B→C→D」というクエリは、開始する頂点としての「A」からのグラフ経路を示す。例えば、「トラバースクエリは、私の親友のうちの親友の好物を見出す」ために、トラバースクエリが使用される。
【００９２】
スキャンクエリ(特に、数値及び/又はシンボル値のような固定値の統合された結果においてターゲットにされるもの)は、表形式データストレージシステム14により適切にサポートされる。例えば、「祖父が30-40歳であった期間における祖父の平均給与を見出す」(“finding  the  average  salary  of  my  grandfather  during  the  period  when  he  was  between  30-40  years  old”)という問い合わせ(クエリ)は、範囲指定クエリとすることが可能であり、その範囲指定クエリは、「私の祖父の給与番号」を保存している特定のテーブルからの全ての数値をロードする。アグリゲーション又は統合(aggregation)はメモリ内でなされることが可能である。そのようなクエリについて、特殊な構成が必要とされるかもしれない。例えば、上記のクエリは、ハイブリッドな又は拡張された抽象化を利用して表現されることが可能である：
【数１】
2017037648.tif 000003
ここで、アグリゲーションオペレータは、1)統合されるデータのインデックス、及び、2)(バルク)ロードされるデータの範囲という2つのパラメータをとる。アグリゲーションを必要とするクエリは、マルチストレージ論理レイヤ16により識別され、表形式データ管理システムに割り振られることが可能である。グラフトラバーサルを必要とするクエリは、マルチストレージ論理レイヤ16により識別され、グラフデータ管理システムに割り振られることが可能である。グラフトラバーサル及び固定値アグリゲーションを必要とする複合的なクエリは、複数のサブクエリに分割され、各自の管理システムに割り振られることが可能である。
【００９３】
ハイブリッドデータストレージ装置は、表形式ストレージに対する効率的な固定値データアクセスのためのデータインデックスとしてデータグラフを効果的に活用する。これは、読み込み及び書き込みの双方に対してグラフAPIを明らかにする。数値データは、通常、グラフのリーフ(leaves)として保存されることに留意を要する(ここでは、グラフモデルのリーフは、インバウンドエッジのみを有する頂点として定義される(すなわち、out-degree=0))。Gをグラフストレージとし、Tを表形式ストレージとする。
【００９４】
1．L(g)をグラフgの一群のリーフであるとし、N(g)⊆L(g)を数値リーフの集合であるとし、p(q)=v0,...,vnをクエリqによるトラバース経路であるとし、eval(q)をqの評価であるとし、次のように求められる：
【数２】
2017037648.tif 000004
すなわち、クエリ評価がリーフに到達する場合、グラフトラバーサルはグラフストレージにより主に取り扱われ、その値が表形式ストレージに対するリファレンスである場合、リファレンスに基づいて選択トランザクションが実行される。
【００９５】
2．エッジ<v,  v’>を有するグラフの書き込み又は更新の場合、次のような処理がなされる。
【数３】
2017037648.tif 000005
【００９６】
すなわち、グラフ側の更新は、リファレンスの作成及びグラフの一群のリーフの更新を導くことが可能である。従って、テーブルを更新するのに使用される実際の値及びリファレンスの間の対応関係(マッピング)が形成される。
【００９７】
特定の具体例として、表形式データストレージシステム14は、複数読み込み単独書き込みシステムとして実現され、データの矛盾を回避するように実現されることが可能である。
【００９８】
そのようなハイブリッドソリューションでは、表形式データ構造は、監視される及び監視されない学習を含む或る範囲のデータ分析プロセスに対する高速バルクローディングを支援することが可能である。頂点中心グラフストレージは、適応ローカルベースストレージ最適化を実行してもよい。
【００９９】
数値データのような固定値データがデータモデルで拡張して使用される場合、及び、機械学習アルゴリズムを利用するトレーニング及び再トレーニングが非常に頻繁に生じ、頻繁にバルクローディングを必要とする場合、パフォーマンス障害は、表形式データストレージシステム14を介してアクセス可能な数値データを持たせることによって回避される。固定値データは、例えば、心拍や株価等のような時間依存データ系列であるとすることが可能であるが、データの価値を高める豊富な動的なスキーマを必要とする必要がある。
【０１００】
例えば、亜母集団(sub-population)の年齢プロファイルを分析する必要があると仮定する。実際のデータモデルに依存して、一般に、概念中心又はクラス中心アプローチは、個人を、亜母集団を規定するクラスのインスタンスとして提示し、年齢を、インスタンスの完全なプロパティのうちのプロパティフィラー(含有特性)として提示する。例えば、その一例が図4に示されている。
【０１０１】
例えばアグリゲーション処理のような処理のための年齢数値をロードするために、(母集団の全インスタンスを見出すための)1つのグラフスキャンクエリと(各インスタンスに対する)2つのグラフトラバースクエリとが、必要とされる。これは、各個人の年齢を読み込むために最低限3つのランダムディスクアクセス(読み込み)を行うこととなる。一方、数値年齢データを取り出し、概念グラフ構造に基づいてテーブルのデータを事前に特定することにより、年齢が、母集団及び個人により一緒に特定されインデックスされることが可能である。データを読み込む場合に、データのフラグメント(fragment)が一緒に読み込まれることが可能である。これは、ランダムアクセス毎に最低限4msで探索するランダムディスクに起因するI/O待ち時間を顕著に減らす。典型的な機械学習の状況では、ロードされるデータは、通常1000-10000個であり、全体で4-40秒に匹敵する。
【０１０２】
以下の利点の存在は明白である：
1．リソース/頂点データに関し、柔軟性に富む適応的なローカル性が適用されることが可能である。
【０１０３】
2．バルクローディングに備えて、数値データが専用(論理)テーブルに保存される。データストアは均一であり、従って最適化されることが可能である(例えば、サイズを小さくするために数値データについて圧縮法を適用する)。
【０１０４】
3.  数値データのアグリゲーション結果は、高速アクセスに備えてキャッシュされることが可能である。
【０１０５】
4．データ(数値)の一部分が表形式の形態にロードされる一方、新たなトリプルはグラフに挿入される。これは、データがデータ分析のために速やかに利用可能であり、一般にそのようなシステムの追加的な事前処理時間を回避できることを意味する。これは、システム全体のパフォーマンスを大幅に改善する。
【０１０６】
5．データを機械学習アルゴリズムに対して利用可能にすることで、新たなデータは学習され、これらのアルゴリズムの結果から導出される。この新たなデータは、グラフにフィードバックされ、データストアを充実させることが可能である。
【０１０７】
6．一部の新たなデータは、数値であるとすることが可能であり、あるいは、一般的に機械学習アルゴリズムに関連することが可能である。この場合、より多くのデータ(新たなカラム)が表形式の形態に加えられ、(他の)機械学習アルゴリズムに利用可能であるようにしてもよい。
【０１０８】
図5は、ハイブリッドデータストレージシステム又はそのシステムの一部を形成するデータストレージサーバー等のような本発明を組み込むコンピューティングデバイスのブロック図であり、そのシステム等は一実施形態によるハイブリッドデータストレージ方法を実現するために使用されてもよい。コンピューティングデバイスは、プロセッサ993及びメモリ994を有する。選択的に、コンピューティングデバイスは、他のコンピューティングデバイスと通信するためのネットワークインターフェース997を含み、例えば、本発明による他のコンピューティングデバイスと通信する。
【０１０９】
例えば、実施形態はそのようなコンピューティングデバイスのネットワークにより構成されてよい。選択的に、コンピューティングデバイスは、キーボード及びマウス996のような1つ以上の入力手段、1つ以上のモニタ995のようなディスプレイユニットを含む。コンポーネントはバス992を介して互いに接続可能である。
【０１１０】
メモリ994はコンピュータ読み取り可能な媒体を含み、この用語は、コンピュータ時国交可能な命令を搬送する又はデータ構造をそこに保存するように構成される単独媒体又は複数媒体(例えば、セントラル化された又は分散されたデータベース及び/又は関連するキャッシュ及びサーバー)を指し示してよい。コンピュータ実行可能な命令は、例えば、汎用コンピュータ、専用コンピュータ又は特定用途処理装置(例えば、1つ以上のプロセッサ)によりアクセス可能な命令及びデータを含み、かつ、その汎用コンピュータ等に1つ以上の機能又は動作を実行させる。従って、「コンピュータ読み取り可能な記憶媒体」という用語は、マシンにより実行するための一群の命令を格納し、エンコードし、或いは、搬送することが可能な任意の媒体を含んでよく、一群の命令は本開示による任意の1つ以上の方法をマシンに実行させる。「コンピュータ読み取り可能な記憶媒体」という用語は、従って、ソリッドステートメモリ、光媒体及び磁気媒体などを含んでよいが、これらに限定されない。限定ではない具体例として、そのようなコンピュータ読み取り可能な媒体は、非一時的なコンピュータ読み取り可能な記憶媒体を含んでよく、その記憶媒体は、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、電気的に消去可能なプログラマブルリードオンリメモリ(EEPROM)、コンパクトディスクリードオンリメモリ(CD-ROM)又は他の光ディスクストレージ、磁気ディスクストレージ又は他の磁気ストレージデバイス、フラッシュメモリデバイス(例えば、ソリッドステートメモリデバイス)等を含んでよい。メモリは、ハイブリッドデータストレージシステムに保存されるデータグラフの表形式データのためのストレージを提供してもよい。
【０１１１】
プロセッサ993は、コンピューティングデバイスを制御し、処理動作を実行するように構成され、例えば、メモリに保存されたコートを実行し、表形式データストレージシステム、グラフデータストレージシステム及びマルチストレージ論理レイヤについての本明細書及び請求項で言及される様々な機能を実現する。メモリ994は、プロセッサ993により読み込み及び書き込みがなされるデータを保存する。本願で言及されるように、プロセッサは、マイクロプロセッサ、中央処理ユニット等のような1つ以上の汎用処理装置を含んでもよい。プロセッサは、複合命令セットコンピューティング(CISC)マイクロプロセッサ、縮小命令セットコンピューティング(RISC)マイクロプロセッサ、超長命令語(very  long  instruction  word：VLIW)マイクロプロセッサ、他の命令セットを実行するプロセッサ、又は、命令セットの組み合わせを実現するプロセッサを含んでもよい。プロセッサは、特定用途向け集積回路(ASIC)のような1つ以上の特定用途処理装置、フィールドプログラマブルゲートアレイ(FPGA)、ディジタル信号プロセッサ(DSP)、ネットワークプロセッサ等を含んでよい。1つ以上の実施形態において、プロセッサは、本願で議論される動作及び工程を実行するための命令を実行するように構成される。
【０１１２】
ディスプレイユニット997は、コンピューティングデバイスにより保存されるデータの表現を表示し、カーソル、ダイアログボックス及びスクリーンを表示し、ユーザと、プログラムと、コンピューティングデバイスに保存されるデータとの間のやり取りを可能にする。入力手段996は、コンピューティングデバイスに対してデータ及び命令を、ユーザが入力できるようにする。
【０１１３】
ネットワークインターフェース(ネットワークI/F)997は、インターネットのようなネットワークに接続され、ネットワークを介してそのような他のコンピューティングデバイスに接続可能である。ネットワークI/F997は、ネットワークを介する他の装置から/へのデータ入力/出力を制御してもよい。マイクロフォン、スピーカ、プリンタ、電力共有ユニット、ファン、ケース、スキャナ、トラックボール等のような他のペリフェラルデバイスが、コンピューティングデバイスに含まれてもよい。
【０１１４】
図1及び図3の表形式データストレージシステム14は、メモリ994及びプロセッサ993(又はそれら複数個)を有し、プロセッサは、メモリ994に保存された処理命令(プログラム)を実行し、ネットワークI/F997又は他の通信ゲートウェイを介してデータを送受信する。特に、プロセッサ993は、マルチストレージ論理レイヤから、表形式データとして保存する固定値を、ネットワークI/Fを介して受信し、受信した固定値を保存する処理命令を実行する。更に、プロセッサ993は、表形式データストレージシステム14により保存され且つ読み込みリクエストにより要求されるデータを、ネットワークI/F997を介して、クエリ結果として返すためにマルチストレージ論理レイヤに送信する処理命令を実行する。
【０１１５】
図1及び図3のグラフデータストレージシステム12は、メモリ994及びプロセッサ993(又はそれら複数個)を有し、プロセッサは、メモリ994に保存された処理命令(プログラム)を実行し、ネットワークI/F997又は他の通信ゲートウェイを介してデータを送受信する。特に、プロセッサ993は、マルチストレージ論理レイヤから、データグラフとして保存するグラフデータを、ネットワークI/Fを介して受信し、受信したグラフデータを保存する処理命令を実行する。更に、プロセッサ993は、グラフデータストレージシステム12により保存され且つ読み込みリクエストにより要求されるデータを、ネットワークI/F997を介して、クエリ結果として返すためにマルチストレージ論理レイヤに送信する処理命令を実行する。グラフデータストレージシステム12のプロセッサ993は、エッジによりリンクされる複数の頂点としてのデータグラフをメモリ994に保存するための処理を実行し、各々のエッジは主語頂点及び目的語頂点として指定された頂点対を結び付け、複数のエッジは、表形式データストレージシステムにより保存される複数の固定値の各々に関し、性質が主語頂点としての固定値により制約される頂点と、目的語頂点としてのポインタ頂点とを指定するエッジを含み、ポインタ頂点は、固定値により占められるテーブルエントリに対するポインタをエンコードする。
【０１１６】
図1のマルチストレージ論理レイヤ16はプロセッサ993(又はそれら複数個)であってもよく、プロセッサは、メモリ994に保存された処理命令(プログラム)を実行し、ネットワークI/F997を介してデータを送受信する。特に、プロセッサ993は、データ処理レイヤから、データを求めるリクエストを、ネットワークI/Fを介して受信し、リクエストを処理し、及び/又は、要求されたデータをネットワークI/F997を介してデータ処理レイヤに送信する処理命令を実行する。
【０１１７】
クエリモニタはプロセッサ993(又はそれら複数個)であってもよく、プロセッサは、メモリ994に保存された処理命令(プログラム)を実行し、ネットワークI/F997を介してデータを送受信する。特に、プロセッサ993は、表形式データストアにアクセスする各クエリを、ネットワークI/Fを介して受信し、クエリの記録を保持される記録に付加する処理命令を実行し、保持される記録はクエリによりアクセスされる。更に、プロセッサ993は、保持される記録を、接続されるストレージユニットに保存し、及び/又は、何らかのテーブルグループが併合基準に合致するか否かを判定するために、テーブル併合部に、保持される記録をネットワークI/F997を介して送信する処理命令を実行する。
【０１１８】
テーブル併合部はプロセッサ993(又はそれら複数個)であってもよく、プロセッサは、メモリ994に保存された処理命令(プログラム)を実行し、ネットワークI/F997を介してデータを送受信する。特に、プロセッサ993は、クエリ監視部から、テーブルに対するクエリの保持された記録を、ネットワークI/F997を介して受信し、同じクエリでアクセスされるグループ中のテーブルのインスタンスが併合基準を充足する複数のテーブルのうちの1つより多いテーブルのグループを判定し、グループ中のテーブルを、表形式データストアの単独テーブルに併合する処理命令を実行する。
【０１１９】
本発明を使用する方法は、図5に示されるようなコンピューティングデバイスで実行されてもよい。そのようなコンピューティングデバイスは、図5に示される全てのコンポーネントを備えることは必須ではなく、それらのコンポーネントのうちの一部分により形成されてもよい。本発明を使用する方法は、単独のコンピューティングデバイスにより実行され、ネットワークを介して1つ以上のデータストレージサーバーと通信するマルチストレージ論理レイヤとして機能する。コンピューティングデバイスは、ハイブリッドストレージシステムにより保存されるグラフデータ及び表形式データの一部を保存するデータストレージであってもよい。
【０１２０】
本発明を使用する方法は、互いに協働して動作する複数のコンピューティングデバイスにより実行されてよい。複数のコンピューティングデバイスのうちの1つ以上は、ハイブリッドストレージシステムにより保存されるグラフデータ及び表形式データの少なくとも一部を保存するデータストレージサーバーであってもよい。
【０１２１】
以上の実施の形態に関し、更に以下の付記を開示する。
【０１２２】
（付記1）
データハイブリッドストレージシステムであって：
表形式データとして複数の固定値を保存するように構成される表形式データストレージシステム；
データグラフを保存するように構成されるグラフデータストレージシステム；
前記表形式データストレージシステム及び前記グラフデータストレージシステムの各々に対するアクセス方法を統合するマルチストレージ論理レイヤ；
を有し、テーブルにおける固定値の各々はテーブルエントリを占め、前記データグラフの頂点の性質を制約し；
前記グラフデータストレージシステムは、エッジによりリンクされる複数の頂点として前記データグラフを保存するように構成され、各々のエッジは主語頂点及び目的語頂点として特定の頂点対を接続し、複数のエッジは、前記表形式データストレージシステムにより保存される複数の固定値の各々について、性質が主語頂点として固定値により制約される頂点と、目的語頂点としてのポインタ頂点とを指定するエッジを含み、前記ポインタ頂点は前記固定値により占められる前記テーブルエントリに対するポインタをエンコードする；
ことを特徴とするハイブリッドデータストレージシステム。
【０１２３】
（付記2）
各々のエッジは目的語頂点により制約される主語頂点の性質を規定するラベルとともに分類され、或いは、目的語頂点がポインタ頂点である場合、前記ラベルは、前記ポインタにより指し示される前記テーブルエントリを占める固定値により制約される主語頂点の性質を規定する、付記1に記載のハイブリッドデータストレージシステム。
【０１２４】
（付記3）
前記マルチストレージ論理レイヤは：
前記ハイブリッドデータストレージシステムで格納するデータとして、主語情報及び目的語情報を指定するデータ項目を受信することであって、前記目的語情報は前記主語情報の性質を制約し、或るラベルが、前記目的語情報により制約される前記主語情報の性質を規定する、こと；
受信された目的語情報が固定数値であるか否かを判定することであって、前記目的語情報が固定数値であった場合：データのテーブルのテーブルエントリを占めるように、前記固定数値を表形式データストレージシステムに転送し；前記固定数値により占められる前記テーブルエントリに対するポインタを生成し；ラベルで分類されるエッジとして保存するために、前記主語情報、前記ラベル及び前記ポインタを前記グラフデータストレージシステムに転送し、主語頂点としての主語情報を、目的語頂点としてのポインタをエンコードするポインタ頂点にリンクする、こと；
を行うように構成されている、付記1に記載のハイブリッドデータストレージシステム。
【０１２５】
（付記4）
前記マルチストレージ論理レイヤは：
前記目的語情報が、固定数値を取り出すことが可能な非固定数値であるか否かを判定することであって、前記目的語情報が、固定数値を取り出すことが可能な非固定数値であった場合：
データのテーブルのテーブルエントリを占めるように、前記固定数値を表形式データストレージシステムに転送し；
前記固定数値により占められる前記テーブルエントリに対するポインタを生成し；
ラベルで分類されるエッジとして保存するために、前記主語情報、前記ラベル及び前記ポインタを前記グラフデータストレージシステムに転送し、主語頂点としての主語情報を、目的語頂点としてのポインタをエンコードするポインタ頂点にリンクし；
前記ラベルで分類されるエッジとして保存するために、前記主語情報、前記ラベル及び前記非固定数値を前記グラフデータストレージシステムに転送し、主語頂点としての主語情報を、目的語頂点としての非固定数値にリンクする、こと；
を行うように構成されている、付記3に記載のハイブリッドデータストレージシステム。
【０１２６】
（付記5）
前記固定値により占められる前記テーブルエントリは、性質が前記固定値により制約される前記主語頂点により特定可能な行と、性質が前記固定値により制約される前記主語頂点を、前記固定値により占められる前記テーブルエントリに対するポインタをエンコードする前記ポインタ頂点にリンクするエッジのラベルによって識別可能な列とで特定される、付記2に記載のハイブリッドデータストレージシステム。
【０１２７】
（付記6）
前記表形式データストレージシステムは複数のテーブルを保存するように構成され、各々のテーブルのテーブルエントリは、グラフデータストアにより保存される頂点のサブセットの性質を制約する固定値のみによって占められ；
前記サブセットのメンバは、各々の頂点から、各サブセットの頂点を規定するサブセットへのホップ数により決定され、各サブセットのメンバは、サブセットの頂点を規定するサブセットのうちnホップの頂点に制限され、nは所定の正の整数である、付記1に記載のハイブリッドデータストレージシステム。
【０１２８】
（付記7）
モジュールを規定するサブセットを有する前記グラフデータストレージシステムは、媒介中心性の次数で頂点を分類し、最高の媒介中心性を有する頂点を、頂点を規定するサブセットとして選択することにより、頂点を規定するサブセットを選択するように構成される、付記6に記載のハイブリッドデータストレージシステム。
【０１２９】
（付記8）
前記グラフデータストレージシステムは複数のストレージユニットにわたるグラフを保存するように構成され、各々のストレージユニットは、前記データグラフの連続的な領域である1つ以上のパーティションを保存するように構成され；及び
前記グラフデータストレージシステムは、モジュールを規定するサブセットを有し、前記パーティション内の頂点のペアに対する媒介中心性の次数で頂点を分類することにより、各パーティションの頂点を規定するサブセットを選択するように構成され且つ最大の媒介中心性を有する頂点を、前記パーティションの頂点を規定するサブセットとして選択するように構成される、付記1に記載のハイブリッドデータストレージシステム。
【０１３０】
（付記9）
前記グラフデータストレージシステムは、モジュールを規定するサブセットを有し、前記モジュールを規定するサブセットは、特定の機械学習アルゴリズムを実行する場合に読み込みアクセスがなされるデータタイプのリストを受信し、頂点にリンクするエッジ総数の内の前記データタイプのリストに属する性質を規定する頂点からのエッジの割合に従って、前記データグラフの頂点をランク付けし、及び、最高にランク付けされた頂点を、頂点を規定するサブセットとして選択するように構成される、付記6に記載のハイブリッドデータストレージシステム。
【０１３１】
（付記10）
前記表形式データストレージシステムは：
前記表形式データストレージシステムにアクセスする各々のクエリについて、1つ以上のテーブルがアクセスされたことの記録を維持するように構成されるクエリモニタ；及び
同じクエリでアクセスされるグループのテーブルのインスタンスが併合基準を充足している複数のテーブルのうちの1つより多いテーブルのグループを、前記クエリモニタにより監視される記録に基づいて特定し、前記グループ内のテーブルを、表形式データストアにおける単独のテーブルに併合するように構成されるテーブルマネジャモジュール；
を更に有する、付記6に記載のハイブリッドデータストレージシステム。
【０１３２】
（付記11）
前記ポインタ頂点は、前記表形式データストレージシステムにおけるテーブルと、指定されたテーブルにおける行及び列を指定する情報とをエンコードする、付記1に記載のハイブリッドデータストレージシステム。
【０１３３】
（付記12）
前記表形式データストレージシステムは、互いに通信するように構成される複数の同時アクセス可能な表形式データストレージユニットを有する分散ストレージ装置であり；及び/又は
前記グラフデータストレージシステムは、互いに通信するように構成される複数の同時アクセス可能なグラフデータストレージユニットを有する分散ストレージ装置であり、その各々は前記データグラフのうちの1つ以上の連続的な領域を保存している、付記1に記載のハイブリッドデータストレージシステム。
【０１３４】
（付記13）
ハイブリッドデータストレージ方法であって：
表形式データストレージシステムにおいて、固定値のテーブルを保存する工程；
グラフデータストレージシステムにおいて、データグラフを保存する工程；
マルチストレージ論理レイヤにおいて、前記表形式データストレージシステム及び前記グラフデータストレージシステムの各々への各自のアクセス方法によるアクセスを制御する工程；
を有し、前記テーブルにおける固定値の各々はテーブルエントリを占め、前記データグラフの頂点の性質を制約し；
前記データグラフを保存することは、エッジによりリンクされる複数の頂点として前記データグラフを保存することを含み、各々のエッジは主語頂点及び目的語頂点として特定の頂点対を接続し、複数のエッジは、固定値の各々について、性質が主語頂点として固定値により制約される頂点と、目的語頂点としてのポインタ頂点とを指定するエッジを含み、前記ポインタ頂点は前記固定値により占められる前記テーブルエントリに対するポインタをエンコードする；
ことを特徴とするハイブリッドデータストレージ方法。
【０１３５】
（付記14）
相互接続されたコンピューティングデバイスのネットワークにより実行される場合に、相互接続されたコンピューティング装置のネットワークに、ハイブリッドデータストレージ方法を実行させるコンピュータプログラムであって、前記ハイブリッドデータストレージ方法は：
表形式データストレージシステムにおいて、固定値のテーブルを保存する工程；
グラフデータストレージシステムにおいて、データグラフを保存する工程；
マルチストレージ論理レイヤにおいて、前記表形式データストレージシステム及び前記グラフデータストレージシステムの各々への各自のアクセス方法によるアクセスを制御する工程；
を有し、前記テーブルにおける固定値の各々はテーブルエントリを占め、前記データグラフの頂点の性質を制約し；
前記データグラフを保存することは、エッジによりリンクされる複数の頂点として前記データグラフを保存することを含み、各々のエッジは主語頂点及び目的語頂点として特定の頂点対を接続し、複数のエッジは、固定値の各々について、性質が主語頂点として固定値により制約される頂点と、目的語頂点としてのポインタ頂点とを指定するエッジを含み、前記ポインタ頂点は前記固定値により占められる前記テーブルエントリに対するポインタをエンコードする；
ことを特徴とするコンピュータプログラム。
【０１３６】
（付記15）
付記14に記載のコンピュータプログラムを保存する非一時的な記憶媒体。
【図１】
2017037648.tif 000006
【図２】
2017037648.tif 000007
【図３】
2017037648.tif 000008
【図４】
2017037648.tif 000009
【図５】
2017037648.tif 000010