(57)【要約】      （修正有）【課題】ターゲットデータグラフによりソースデータグラフをリコンサイルする方法を提供する。【解決手段】データグラフは、複数の頂点と複数の相互接続とを有し、相互接続は、複数の頂点のうちの2つの頂点を接続して、接続される頂点の関係を表現する。本方法は、ターゲットデータグラフにおける一群の処理イベントの実行のプロパゲーションパターンを表現するターゲットイベントプロパゲーション情報を生成する。ターゲットデータグラフによりソースデータグラフをリコンサイルする要求を受信し、要求に応じて、ソースデータグラフにおける一群の処理イベントの実行をトリガして実行のプロパゲーションパターンを表現するソースイベントプロパゲーション情報を生成する。ターゲットイベントプロパゲーション情報及びソースイベントプロパゲーション情報を利用して、ソースデータグラフ及びターゲットデータグラフの頂点ペアの類似性を評価する。【選択図】図１
2016100005.tif 000002
【特許請求の範囲】
【請求項１】
ターゲットデータグラフによりソースデータグラフをリコンサイルする方法であって、前記ソースデータグラフ及び前記ターゲットデータグラフの各々は、複数の頂点と複数の相互接続とを有し、前記複数の相互接続の各々は、前記複数の頂点のうちの2つの頂点を接続し及び接続される頂点の間の関係を表現し、当該方法は、
前記ターゲットデータグラフにおける一群の処理イベントの各々の1つ以上の実行のプロパゲーションパターンを表現するターゲットイベントプロパゲーション情報を生成するステップと、
前記ターゲットデータグラフにより前記ソースデータグラフをリコンサイルする要求を受信し、前記要求に応じて、前記ソースデータグラフにおける一群の処理イベントの各々の1つ以上の実行をトリガするステップと、
前記ソースデータグラフでトリガされた処理イベントの各実行の前記プロパゲーションパターンを表現するソースイベントプロパゲーション情報を生成するステップと、
前記ターゲットイベントプロパゲーション情報及び前記ソースイベントプロパゲーション情報を利用して、前記ソースデータグラフ及び前記ターゲットデータグラフの各々からの頂点を含む頂点ペアの類似性を評価するステップと、
を有する方法。
【請求項２】
前記ターゲットイベントプロパゲーション情報を生成すること及び/又は前記ソースイベントプロパゲーション情報を生成することは、個々のデータグラフにおける挙動を観察することにより、或いは、個々のデータグラフにおける挙動を表現する保存されたデータを読み込むことにより、前記処理イベントの実行の結果として結果の処理イベントが生じる各頂点を特定するデータを取得することを含む、請求項1に記載の方法。
【請求項３】
当該方法は、前記一群の処理イベントの各々について：
前記ターゲットデータグラフ及び前記ソースデータグラフの各々において前記処理イベントを1回以上実行するステップと、
各々の実行について、前記複数の相互接続に沿って個々のデータグラフの頂点に前記処理イベントの実行を伝搬させるステップと、
前記処理イベントの実行が伝搬した各々の頂点に関し、結果の処理イベントを実行するか否かを判断し、前記処理イベントの実行を更に伝搬させるか否かを判断するステップとを更に有し、
前記ターゲットイベントプロパゲーション情報を生成すること及び/又は前記ソースイベントプロパゲーション情報を生成することは、前記処理イベントの実行の結果として結果の処理イベントが実行される前記又は各々の頂点を維持することを含む、請求項2に記載の方法。
【請求項４】
当該方法は、前記一群の処理イベントの各々の実行について：
イベントプロパゲーション値を、前記処理イベントの実行に帰属させるステップを更に有し、
複数の相互接続の各々に沿って前記処理イベントの実行を伝搬させることは、処理イベントの実行によりアクセスされる前記又は各々の頂点のうち前記又は各々の隣接する頂点に、前記処理イベントの実行の通知を出力することを含み、前記通知は前記イベントプロパゲーション値を含み、
前記処理イベントの実行が伝搬する各頂点について：
結果の処理イベントを実行するように判断される場合には前記イベントプロパゲーション値を増加させ、結果の処理イベントを実行しないように判断される場合及び修正されたイベントプロパゲーション値が所定の閾値を超える場合には、前記イベントプロパゲーション値を減少させることにより、前記イベントプロパゲーション値を修正するステップと、
受信された前記イベント通知の送信元の頂点につながる相互接続以外の頂点への前記又は各々の相互接続に沿って、修正されたイベントプロパゲーション値とともに前記処理イベントの実行を伝搬させるステップとを有し、
前記ターゲットイベントプロパゲーション情報を生成すること及び/又は前記ソースイベントプロパゲーション情報を生成することは、前記又は各々の複数の頂点に関し、前記処理イベントの実行を特定するデータに関連する前記頂点について、修正されたイベントプロパゲーション値の記録を維持することを含む、請求項3に記載の方法。
【請求項５】
前記ターゲットイベントプロパゲーション情報及び前記ソースイベントプロパゲーション情報を利用して、前記ソースデータグラフ及び前記ターゲットデータグラフの各々からの頂点を含む頂点ペアの類似性を評価するステップは、
結果の処理イベントが、同じ処理イベントの実行の結果として前記頂点ペアの各頂点において実行されたか否かを判断するステップと、
結果の処理イベントが、前記同じ処理イベントの実行の結果として前記頂点ペアの各頂点において実行されたことが確認された場合に、前記頂点ペアの類似性の更なる評価を実行するステップと、
結果の処理イベントが、前記同じ処理イベントの実行の結果として前記頂点ペアの各頂点において実行されなかったことが確認された場合に、類似性の更なる評価から前記頂点ペアを除外するステップと、
を含む、請求項2に記載の方法。
【請求項６】
前記類似性の評価は、前記頂点ペアの各々に関し、前記一群の処理イベントの各々に関し、前記処理イベントの実行について、前記頂点に関する修正されたプロパゲーション値を加算し、2つの頂点の数値比較の基礎として、修正され加算されたプロパゲーション値を処理イベント毎に利用することを含む、請求項4又は5に記載の方法。
【請求項７】
前記数値比較は、コサイン距離比較である、請求項6に記載の方法。
【請求項８】
前記ターゲットデータグラフで実行される処理イベントのリストを取得するステップと、
最も頻繁に実行されるn個の処理イベントを特定するステップと、
特定されたn個の処理イベントを前記一群の処理イベントとして選択するステップと、
更に有する請求項1に記載の方法。
【請求項９】
前記ソースデータグラフで実行される処理イベントのリストの時間スタンプされたリストを取得するステップと、
最近実行されたm個の処理イベントを特定するステップと、
特定されたm個の処理イベントを前記一群の処理イベントとして選択するステップと、
更に有する請求項1に記載の方法。
【請求項１０】
処理イベントの実行は、1つ以上のプロパティに従って特徴付けられ、前記1つ以上のプロパティの各々について同じ形式で特徴付けられる処理イベントの実行は、同じ処理イベントの実行であると判断される、請求項1に記載の方法。
【請求項１１】
前記頂点ペアの前記類似性の評価は、2つの頂点が意味的に同等である可能性を示す信頼度値を生成し、生成された信頼度値が意味的同等性閾値を超える場合、前記2つの頂点の間に同等性の関係を示す同等リンクを付加する、請求項1に記載の方法。
【請求項１２】
データストレージシステムのコントローラとして機能するように命令を実行するように構成されるプロセッサであって、前記データストレージシステムは、ターゲットデータグラフを保存するように構成されかつ前記ターゲットデータグラフ及びソースデータグラフの間でリコンシリエーション処理を実行するように構成され、
前記ソースデータグラフ及び前記ターゲットデータグラフの各々は、複数の頂点と複数の相互接続とを有し、前記複数の相互接続の各々は、前記複数の頂点のうちの2つの頂点を接続し及び接続される頂点の間の関係を表現し、当該コントローラは、
前記ターゲットデータグラフにおける一群の処理イベントの各々の1つ以上の実行のプロパゲーションパターンを表現するターゲットイベントプロパゲーション情報を生成するように構成されるターゲットグラフイベントプロパゲーション記録部と、
前記ターゲットデータグラフにより前記ソースデータグラフをリコンサイルする要求を受信するように構成されるリコンシリエーション要求マネジャと、
受信した要求に応じて、前記ソースデータグラフにおける一群の処理イベントの各々の1つ以上の実行をトリガするように構成されるソースグラフイベントプロパゲーション実行部と、
前記ソースデータグラフでトリガされた処理イベントの各実行の前記プロパゲーションパターンを表現するソースイベントプロパゲーション情報を生成するように構成されるソースグラフイベントプロパゲーション記録部と、
前記ターゲットイベントプロパゲーション情報及び前記ソースイベントプロパゲーション情報を利用して、前記ソースデータグラフ及び前記ターゲットデータグラフの各々からの頂点を含む頂点ペアの類似性を評価するように構成される頂点ペア比較部と、
を有するプロセッサ。
【請求項１３】
前記ターゲットデータグラフとしてデータグラフを保存するように構成されるストレージユニットの分散ネットワークと、請求項12に記載のプロセッサと、を有するデータストレージシステム。
【請求項１４】
コンピュータプログラムを保存する非一時的な記憶媒体であって、前記コンピュータプログラムは、プロセッサにより実行される場合に、前記プロセッサを、データストレージシステムのコントローラとして機能させ、前記データストレージシステムは、ターゲットデータグラフを保存するように構成され、前記ターゲットデータグラフ及びソースデータグラフの間でリコンシリエーション処理を実行するように構成され、
前記ソースデータグラフ及び前記ターゲットデータグラフの各々は、複数の頂点と複数の相互接続とを有し、前記複数の相互接続の各々は、前記複数の頂点のうちの2つの頂点を接続し及び接続される頂点の間の関係を表現し、前記コントローラは、
前記ターゲットデータグラフにおける一群の処理イベントの各々の1つ以上の実行のプロパゲーションパターンを表現するターゲットイベントプロパゲーション情報を生成するように構成されるターゲットグラフイベントプロパゲーション記録部と、
前記ターゲットデータグラフにより前記ソースデータグラフをリコンサイルする要求を受信するように構成されるリコンシリエーション要求マネジャと、
受信した要求に応じて、前記ソースデータグラフにおける一群の処理イベントの各々の1つ以上の実行をトリガするように構成されるソースグラフイベントプロパゲーション実行部と、
前記ソースデータグラフでトリガされた処理イベントの各実行の前記プロパゲーションパターンを表現するソースイベントプロパゲーション情報を生成するように構成されるソースグラフイベントプロパゲーション記録部と、
前記ターゲットイベントプロパゲーション情報及び前記ソースイベントプロパゲーション情報を利用して、前記ソースデータグラフ及び前記ターゲットデータグラフの各々からの頂点を含む頂点ペアの類似性を評価するように構成される頂点ペア比較部と、
を有する、記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータストレージ及び関連する処理の分野におけるものである。特に、本発明の実施形態は、データグラフの頂点についてのリコンシリエーション処理のパフォーマンスに関連する。リコンシリエーション処理はグラフ内で意味的に同等な頂点の間で不均一性(heterogeneity)をリコンサイルするように意図される。
【背景技術】
【０００２】
利用可能な膨大な量のグラフデータは、統計的な傾向を明らかにするだけでなく潜んでいるパターンを発見してデータから知識を抽出することが可能な自動化又は半自動化される分析の可能性を生み出す。形式的意味(formal  semantics)は演算インセンティブタスクの自動化において主要な役割を演じる。如何にして意味を最適に把握するかについては様々な意見があるが、グラフ及びグラフ的な表現は、(エンティティ及びエンティティ間の関係を伴うオントロジ(又は概念体系)のように)人間がその世界をどのように把握するかをエミュレートする最良の手段である、と広く認められている。
【０００３】
データセットは一般に非常に不均一に分散されている。そのようなデータの分散された性質は、しばしば、多くのデータソースが同じ現実世界の対象を指すために異なるリファレンスを使用するという問題を招く。利用可能なグラフデータを効果的に活用するために必要な重要なステップは、意味的に一貫して複数のリファレンスを識別及びリコンサイルすることである。以下、「リコンシリエーション(reconciliation)」又は「リコンサイル(reconcile)」のような用語は、(データのグラフ中のノードのような、例えば、RDFトリプルの主語又は目的語のような)意味的に互いに対応する頂点間の同等リンクを識別及び決定することにより、頂点同士の間の不均一性(又は異種性)をリコンサイルするプロセスを指すために使用される。従って、「リコンシリエーション処理」は、リコンシリエーションを達成するためのプロセッサによるアルゴリズム及び命令の実行である。頂点又は相互に接続される複数の頂点のグループ(頂点群)は、リソースを表現する。頂点という用語は、ノード又はグラフノードと可換に使用されることが可能である。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
データリコンシリエーションの重要性は明白である。データリコンシリエーションは、異種のデータセットがリンクされる場合に、データの整合性を保証する(データの意味的な多様性が生じる)。そのようにしなければ、有意義な分析を実行することはできない。一方、同等性(equivalence)は、互いに整合することをアプリーションに許容する。従って、アプリケーション間の通信は、自動化され及びコンピュータに任せることが可能である。
【０００５】
データリコンシリエーションは、非常に大きなデータベース及び大規模な知識ベースにおける魅力的な研究テーマである。以下、知識ベース又はナレッジベースは、例えばオントロジ及びリレーショナルデータベーススキーマのような所定のスキーマを有するデータリポジトリを指すように使用される。
【０００６】
既存のデータリコンシリエーションスキーマでは、データ項目の意味が比較される。データの意味は、データの名前/ラベル及びそれらの特性/属性の名前/ラベルを用いて詳細に説明される。これは、データについてのネーミング及びモデリングの慣習の影響を受ける。データリコンシリエーションは、通常、静的な情報に基づく。そのような情報に関し、データがアプリケーションにおいてどのように活用されるかを動的に反映することは困難である。
【課題を解決するための手段】
【０００７】
開示される実施形態の一側面による方法は、
ターゲットデータグラフによりソースデータグラフをリコンサイルする方法であって、前記ソースデータグラフ及び前記ターゲットデータグラフの各々は、複数の頂点と複数の相互接続とを有し、前記複数の相互接続の各々は、前記複数の頂点のうちの2つの頂点を接続し及び接続される頂点の間の関係を表現し、当該方法は、
前記ターゲットデータグラフにおける一群の処理イベントの各々の1つ以上の実行のプロパゲーションパターンを表現するターゲットイベントプロパゲーション情報を生成するステップと、
前記ターゲットデータグラフにより前記ソースデータグラフをリコンサイルする要求を受信し、前記要求に応じて、前記ソースデータグラフにおける一群の処理イベントの各々の1つ以上の実行をトリガするステップと、
前記ソースデータグラフでトリガを受けた処理イベントの各実行の前記プロパゲーションパターンを表現するソースイベントプロパゲーション情報を生成するステップと、
前記ターゲットイベントプロパゲーション情報及び前記ソースイベントプロパゲーション情報を利用して、前記ソースデータグラフ及び前記ターゲットデータグラフの各々からの頂点を含む頂点ペアの類似性を評価するステップと、
を有する方法である。
【図面の簡単な説明】
【０００８】
添付図面を参照しながら、単なる具体例により本発明の特徴が説明される。
【図１】本発明を使用する方法の図式的表現である。
【図２】一実施形態におけるイベントプロパゲーションを示す。
【図３】一実施形態におけるイベントプロパゲーション手段のシステムアーキテクチャを示す。
【図４】コンピューティングデバイスのブロック図を示す。
【発明を実施するための形態】
【０００９】
本発明の実施形態は、ターゲットデータグラフによりソースデータグラフをリコンサイルする方法であって、前記ソースデータグラフ及び前記ターゲットデータグラフの各々は、複数の頂点と複数の相互接続とを有し、前記複数の相互接続の各々は、前記複数の頂点のうちの2つの頂点を接続し及び接続される頂点の間の関係を表現する。当該方法は、前記ターゲットデータグラフにおける一群の処理イベントの各々の1つ以上の実行のプロパゲーションパターンを表現するターゲットイベントプロパゲーション情報を生成するステップと、前記ターゲットデータグラフにより前記ソースデータグラフをリコンサイルする要求を受信し、前記要求に応じて、前記ソースデータグラフにおける一群の処理イベントの各々の1つ以上の実行をトリガするステップと、前記ソースデータグラフでトリガを受けた処理イベントの各実行の前記プロパゲーションパターンを表現するソースイベントプロパゲーション情報を生成するステップと、前記ターゲットイベントプロパゲーション情報及び前記ソースイベントプロパゲーション情報を利用して、前記ソースデータグラフ及び前記ターゲットデータグラフの各々からの頂点を含む頂点ペアの類似性を評価するステップとを有する。
【００１０】
データのリコンシリエーションは、意味的に互いに対応する即ち同じリソースを表現する頂点(ノードとして言及されてもよい)の間の同等リンクを識別及び生成することにより、不均一性(又は異質性)をリコンサイルするプロセスである。例えば、異なる名称又はラベルを有する2つの頂点、或いは、別々の2つの頂点(すなわち、同じ名称であるが異なるグラフに登場する或いは同じグラフの異なるセクションに登場する頂点)が、現実世界の同じ対象を指し示す場合(すなわち、2つの頂点が意味論的に同等な意味である場合)、2つの頂点は同等であることを示すリンクをグラフに付加することが望ましい。データをリコンサイルすることは、頂点の間に同等性が存在する場所を特定すること、及び、同等性の指標をグラフに追加することを含んでもよい。現実世界の存在に関する複数の表現の同定は、オントロジーマッピング、オントロジーマッチング又はオントロジーアライメント等としても知られている。
【００１１】
ターゲットデータグラフとともにソースデータグラフをリコンサイルすることは、ソースデータグラフ中の頂点に対して意味的に同等であるターゲットデータグラフ中の何らかの頂点を特定すること、及び、意味的な同等性を示すリンクによりソースデータグラフをターゲットデータグラフに追加することを含む。意味的に同等である何らかの頂点を特定するのに必要な処理は、データグラフシステムにおけるかなりのパフォーマンスオーバーヘッドである。
【００１２】
実施形態は、データグラフの部分を比較する手段、特にそれらの部分の中の頂点を比較する手段を提供する。頂点の比較はリコンシリエーション処理の基礎をなし、リコンシリエーション処理は頂点間の一連の比較を含むように考えられることが可能である。実施形態において頂点を比較する仕組み(又は手段)は、グラフにおけるイベントのプロパゲーション(propagation)に基づいており、この点、既存のセマンティックベースの仕組みと異なる。プロパゲーションは、伝搬、進行などと言及されてもよい。実施形態は、異なるグラフの中で関連する頂点は、同等な処理イベントに対して同一の又は類似する形式で反応するという仮定を利用する。従って、頂点の挙動を観察することにより、処理イベントに応答して、頂点を比較し、ソースデータグラフ中の頂点がターゲットデータグラフの中で同等な頂点を有する場合を特定することが可能である。
【００１３】
既存のリコンシリエーション処理では、データリコンシリエーションは静的な情報に基づく。静的な情報にとって、データがアプリケーションによってどのように活用されるかを動的に反映することは困難である。実施形態は、アプリケーションによりトリガされる処理イベントとそれらのイベントのプロパゲーションとを利用して頂点を記述し、その記述により、ソース及びターゲットデータグラフの中で同等性が存在する場所を識別する。従って、命名法とは独立したリコンシリエーション処理が可能になる。
【００１４】
ソースデータグラフは、ターゲットデータグラフとともにリコンサイルされるべきデータであり、従って、ターゲットデータグラフに新たに組み込まれるべきデータである。ターゲットデータグラフは事前に存在しているので、処理イベントは古い順に(又は歴史的に)実行される傾向があり、その情報から、処理イベントの実行のプロパゲーションパターンを表現するターゲットイベントのプロパゲーション情報が生成されることが可能である。そして、本方法はターゲットデータグラフにおける処理イベントの実際の実行を含んでも含まなくてもよいが、少なくとも、ターゲットデータグラフにおける実行のプロパゲーションパターンを表現するターゲットイベントのプロパゲーション情報を生成することを含む。
【００１５】
ターゲットデータグラフとの比較の基礎をなすソースデータグラフに関する情報を明らかにするため、ターゲットデータグラフで歴史的に実行される及び実行を表現する情報が利用可能である処理イベントの実行が、ソースデータグラフにおいてトリガされる。トリガされた実行に応答して、ソースデータグラフの挙動が観察され、その挙動の記述(例えば、プロパゲーションパターンを表現する情報)が、2つのデータグラフを比較する基礎として使用されるために生成される。
【００１６】
プロパゲーションパターンは、処理イベントの実行が伝わる個々のデータグラフ中の(複数の)頂点である。実装に依存して、プロパゲーションは、相互接続に沿うだけであってもよい。更に、処理イベントの実行に応答して、結果の処理イベントが別の頂点で実行される場合に限って、処理イベントの実行は別の頂点に伝わるように考えられてもよい。代替的に、応答によらず、別の頂点が処理イベントの実行の通知を受ける場合に、処理イベントの実行は別の頂点に伝わるように考えられてもよい。プロパゲーションパターンは、結果として起こる処理イベントの詳細、及び、プロパゲーションを記述する他の統計のようなプロパゲーションに関連する更なる情報を含んでもよい。プロパゲーションパターンは1内上のプロパゲーション経路を含んでもよく、プロパゲーション経路は、処理イベントの実行が伝わる一連の頂点であって、処理イベントの実行の通知がたどる一連の頂点である。
【００１７】
ここで使用される命名法によって、処理イベントは固有の出来事ではなく、各々の処理イベントは何回実行されてもよい。処理イベントの実行は、固有の出来事であり、実行される処理の特定のインスタンスを指し示す。処理イベントは、例えば、データアクセスのタイプ(単独の頂点読み込みアクセス、グラフ横断読み込みアセス、頂点ステータス修正、複数の頂点の修正、新たな相互接続の追加、新たな頂点の追加など)、由来するアプリケーションの識別子(身元)、処理イベントによりアクセスされる頂点/頂点群の場所/クラス等に従って特徴付けられてもよい。上記のリストにより同じ特徴を有する処理イベントの実行は、従って、同じ処理イベントの実行であると考えられてよい。ここで、あるデータグラフで実行される処理イベントが、別のデータグラフでトリガされてもよい。従って、「処理イベント」という用語は、「処理イベントのタイプ」又は「処理イベントのカテゴリー化」を表現するために使用されてもよく、処理イベントの実行は、処理イベントのインスタンス又は処理イベントの出現であると考えられてもよい。
【００１８】
各々のデータグラフは、処理イベントに対してどのように応答(又は反応)するかを決定する処理論理部を含んでもよい。そのような処理論理部の例示的な形式は、イベントハンドラである。イベントハンドラは、プロセス又は命令群であってもよく、プロセス又は命令群は、プロセッサにより実行される場合に、プロセスが実行されることを引き起こす。実行されるイベントハンドラは、イベントハンドラが実行される頂点をエンコードするデータに対してなされるリード(読み込み)又はライト(書き込み)アクセスを含んでもよい。処理は、保存されたデータを修正すること、及び/又は、実行を引き起こす処理イベントの特徴を含んでもよい要因に基づいて、データを修正するか否かを判断することを含んでもよい。イベントハンドラは、データグラフにおける頂点として保存されてもよいし、或いは、頂点により表現されてもよい。
【００１９】
イベントハンドラと頂点との間の関連付け(又は関連性)は、登録の形式であってもよいし、或いは、イベントハンドラと頂点との間の他の何らかの明示的なリンクの形式であってもよい。例えば、イベントハンドラは、登録される頂点のリストとともに保存されてもよく、イベントハンドラは登録される頂点で実行されるように構成される。イベントハンドラが登録される頂点の範囲は、例えば、イベントハンドラ及び頂点が登録されるデータストレージサーバにより決定されてもよい。一形態では、イベントハンドラは、データストレージサーバの観点から共存している頂点に対して登録されるだけでもよい。イベントハンドラは、処理イベントの特定のタイプに応答して実行するように構成されてもよい。例えば、データハンドラは、所定の一群の処理イベントタイプの各々について、データストレージサーバ毎に提供されてもよい。
【００２０】
イベントプロパゲーションの仕組みは、個々の関連する頂点において1つ上のイベントハンドラの実行をトリガすることにより、処理イベントに応答するように構成される。更に、イベントプロパゲーションの仕組みは、他の頂点においてイベントハンドラの別の実行をトリガすることによって、頂点におけるイベントハンドラの実行に応答するように構成されてもよい。このように、単独の処理イベントは、プロパゲートすることが可能であり、単独の処理イベントにより修正されるもの以外の頂点における効果を生じさせることが可能である。
【００２１】
処理イベントは、新たな頂点の作成、及び/又は、保存されたデータにおける既存のオブジェクト/範囲/値の修正などを含むデータ修正イベントであってもよい。処理イベントは、複数のイベントハンドラのうちの何れかの実行を含んでもよく、及び/又は、処理は、データグラフ外部のエンティティによる特定の頂点に対するリード/ライトリクエストを包含してもよい。処理イベントは、例えば、分析アプリケーションにより頂点に対してなされるアクセスを含んでもよい。処理イベントは、頂点(又は頂点をエンコードするデータの少なくとも一部)の読み込みに対する試行であってもよい。例えば、頂点の遅延更新(lazy  update)の処理において−すなわち、必要に応じて頂点を更新/リフレッシュするだけでもよい。
【００２２】
初期の処理イベントに応じて頂点におけるイベントハンドラにトリガを与えることは、経路によって表現されることが可能である(経路は、初期の処理イベントにより開始されるイベント通知を受信した頂点間の一連の相互接続；或いは、イベントハンドラが初期の処理イベントの結果としてトリガされた頂点間の一連の相互接続である)。特定の初期の処理イベントに応答するイベントハンドラにトリガを与えることは停止されてもよく、すなわち、イベントを伝搬させる更なる頂点が存在しない場合、或いは、プロパゲーションプロセス自身により又は代替的にシステムレベルのイベントにより、停止が明示的に呼び出される場合に、特定の初期の処理イベントに応答するデータストレージシステムはイベントハンドラの何らかの将来的なトリガ処理を除外してもよい。
【００２３】
イベントハンドラは、処理イベントの特定のカテゴリ、例えば、新たなリンク生成イベントに応答して、実行されるように構成されてもよい。処理イベントがカテゴリ化される方法及びカテゴリ数は、実装に依存する。特定のカテゴリ又は処理イベントのカテゴリに応じて、カテゴリ固有のイベントハンドラが実行されるのみであってもよい。代替的又は追加的に、イベントハンドラは、処理イベントに応じて実行可能であってもよく、実行されることに応じて、カテゴリ又は処理イベントタイプに基づいて、実行する命令/コード/プロセスを決定するように構成されてもよい。単独のイベントハンドラは、1つより多い頂点で実行可能であってもよい。例えば、各々のデータストレージサーバは、唯1つのイベントハンドラ又は処理イベントカテゴリにつき1つのイベントハンドラを保存してもよく、イベントハンドラは同じデータストレージサーバに保存される任意の頂点で実行可能である。
【００２４】
更に、各々のデータグラフは、グラフを通じて処理イベントの実行をプロパゲートする仕方を決定するプロパゲーション手段を含んでもよい。そのようなプロパゲーション手段は、セントラル化されてもよいし、或いは、分散されてもよい。分散されるプロパゲーション手段の具体例は、データグラフの各頂点にローカルイベントプロパゲーションマネジャを提供することである。ローカルイベントプロパゲーションマネジャは、データストレージユニット毎に1つのローカルイベントプロパゲーションマネジャにおいて提供されてもよく、各々のイベントプロパゲーションマネジャは、ローカルイベントプロパゲーションマネジャが提供されるデータストレージユニットに保存される各頂点に割り振られる。代替的に、必要に応じて、プロパゲーションマネジャは各頂点で定義されることが可能である。
【００２５】
ソースデータグラフにおいて実行がトリガされるべき場所をそれ自身決定する処理イベントの特徴が存在してもよい。或いは、一群の処理イベントの各々の実行は、ソースデータグラフの中央部の頂点又はその各々でトリガされてもよく、中央部は、中間(betweenness)のような尺度によって決定される。
【００２６】
頂点のペアの間の比較は、リコンシリエーション処理の基礎をなし、頂点のペアの間に同等性リンクをアサートしてデータグラフをリコンサイルするために使用されてよい尺度を提供する。ソースデータグラフの各頂点は、ターゲットデータグラフの各頂点と比較されてもよい。一方、リコンシリエーション処理の処理負担を軽減するために、そのような比較が実行される前に、何らかの論理部又はフィルタリングが適用されてもよい。
【００２７】
実施形態において、前記ターゲットイベントプロパゲーション情報を生成する及び/又はソースイベントプロパゲーション情報を生成するステップは、(個々のデータグラフにおける挙動を観察することにより、或いは、個々のデータグラフにおける挙動を表現する保存されたデータを読み込むことにより)、前記処理イベントの実行の結果として結果の処理イベントが生じる各頂点を特定するデータを取得することを含む。
【００２８】
特定の手段において、処理イベントの実行のプロパゲーションパターンは、処理イベントの実行の結果として更なる処理イベント(例えば、リード又はライトアクセス)が実行された頂点のリスト又は頂点の表現についての等価な形態により表現される。すなわち、処理イベントの実行の通知の後の頂点において、その頂点に対するリード又はライトアクセスを含む何らかの処理が実行されている。処理イベントの実行は、処理イベントがその経路の現在の末端の頂点でトリガされた場合に、その経路に沿ってプロパゲーションを続けることのみが可能であってもよい。そのような場合、プロパゲーションパターンは、相互接続された頂点のみを含む。代替的に、所定の環境において、処理イベントの実行のプロパゲーションは、結果の処理イベントが特定の頂点で実行されなかったとしても、特定の頂点を超えて経路に沿って継続することが可能である。
【００２９】
有利なことに、結果の処理イベントが処理イベントの実行の結果として生じた各頂点を特定するデータは、結果の処理イベントがその頂点で実行された処理イベントの頂点関連リスト(per-vertex  list)を提供する。そのようなリスト化は、少ない処理コストで頂点ペア間の完全な又は予備的な比較の基礎を実行することができる。
【００３０】
実施形態は、更に、前記一群の処理イベントの各々について：前記ターゲットデータグラフ及び前記ソースデータグラフの各々において前記処理イベントを1回以上実行するステップと、各々の実行について、個々のデータグラフの頂点への複数の相互接続に沿って前記処理イベントの実行を伝搬させるステップと、前記処理イベントの実行が伝搬した各々の頂点に関し、結果の処理イベントを実行するか否かを判断し、前記処理イベントの実行を更に伝搬させるか否かを判断するステップとを更に有し、前記ターゲットイベントプロパゲーション情報及び/又は前記ソースイベントプロパゲーション情報を生成することは、前記処理イベントの実行の結果として結果の処理イベントが実行される前記又は各々の頂点を維持することを含む。
【００３１】
ターゲットデータグラフにおいて、処理イベントの実行、プロパゲーション、及び、結果的な処理イベントの実行は、リコンシリエーションのリクエストが要求される時点で歴史的に実行されてきたプロセスである。従って、リコンシリエーションのリクエストを受信すると、それらの処理を記述する統計が、ターゲットイベントプロパゲーション情報の生成の形式で収集される。ターゲットデータグラフのフォーマットに依存して、ターゲットイベントプロパゲーション情報を生成するために必要なデータは、各頂点について又は個々の頂点に関連して、分散形式で保存されてもよい。代替的に、ターゲットイベントプロパゲーション情報を生成するのに必要なデータは、データベースマネジャにおいて集中的に又はセントラル化されたイベントブローカに保存される。処理イベントは、ターゲットデータグラフに保存されるデータを利用又は管理するアプリケーションにより開始されるデータアクセスプロセスである。
【００３２】
一方、ソースデータグラフは、ターゲットデータグラフとともにリコンサイルされるべきデータグラフの一部分である。リコンシリエーションのリクエストに先行して、ソースデータグラフは、ターゲットデータグラフの一部分としてアクセス可能ではなく、言い換えれば、ターゲットデータグラフに関して孤立したデータ部分であった。従って、リコンシリエーションのリクエストの時点において、ターゲットデータグラフに保存されるデータを利用又は管理するアプリケーションによって開始されるデータアクセスプロセスは、ソースデータグラフのデータに関して実行されていないことが、仮定される。従って、個々のデータグラフの挙動が同じ処理イベントに応じて2つのデータグラフの比較、特に2つのデータグラフ内の頂点ペアの比較の基礎として機能するために、本方法は、ターゲットデータグラフで既に実行されている処理イベントを、ソースデータグラフにおいて実行することを含む。更に、本方法は、ソースデータグラフにおける処理イベントの実行のプロパゲーションを記述する統計を記録及び収集することを含み、その統計からソースイベントプロパゲーション情報が生成される。
【００３３】
本明細書を通じて、頂点のペアの間の比較に関し、ペアは、ターゲットデータグラフ及びソースデータグラフの各々からの頂点を含むことが、仮定される。
【００３４】
更に、本明細書を通じて、ソースイベントプロパゲーション情報を生成することは、イベントプロパゲーションのプロセスであること、及び、ソースデータ(モデル/グラフ)におけるイベントプロパゲーションに関連する処理の挙動を記録することと考えられる。同様に、ターゲットイベントプロパゲーション情報を生成することは、イベントプロパゲーションのプロセスであること、及び、ターゲットデータ(モデル/グラフ)におけるイベントプロパゲーションに関連する処理の挙動を記録することと考えられる。
【００３５】
選択的に、実施形態は、前記一群の処理イベントの各々の実行について：
前記イベントプロパゲーション値を、前記処理イベントの実行に帰属させるステップを更に有し(イベントプロパゲーション値は同じ処理イベントの実行の各々について等しい)、複数の相互接続の各々に沿って前記処理イベントの実行を伝搬させることは、処理イベントの実行によりアクセスされる前記又は各々の頂点のうち前記又は各々の隣接する頂点に、前記処理イベントの実行の通知を出力することを含み、前記通知は前記イベントプロパゲーション値を含む。更に、前記処理イベントの実行が伝搬する各頂点について：結果の処理イベントを実行するように判断される場合には前記イベントプロパゲーション値を増加させ、結果の処理イベントを実行しないように判断される場合及び修正されたイベントプロパゲーション値が所定の閾値を超える場合、前記イベントプロパゲーション値を減少させることにより、前記イベントプロパゲーション値を修正するステップと、受信された前記イベント通知の送信元の頂点につながる相互接続以外の頂点への前記又は各々の相互接続に沿って、修正されたイベントプロパゲーション値とともに前記処理イベントの実行を伝搬させるステップとを有し、前記ターゲットイベントプロパゲーション情報及び/又は前記ソースイベントプロパゲーション情報を生成することは、前記又は各々の複数の頂点に関し、前記処理イベントの実行を特定するデータに関連して、前記頂点について、修正されたイベントプロパゲーション値の記録を維持することを含む。
【００３６】
有利なことに、処理イベントの実行が許容される実施形態では、プロパゲーション経路に沿うプロパゲーションモーメンタムであると考えられることが可能なイベントプロパゲーション値は、頂点のペアの数値比較(numerical  comparison)のための更なる基礎を提供する。イベントプロパゲーション値は、通知の開始又は生成の際に、同じ処理イベントの実行の各々に等しくてもよい。当然に、プロパゲーションの仕組みの性質上、通知は反復され、異なるプロパゲーション経路が設定されてもよく、従って、処理イベントの単独の実行が、イベント通知の多くのインスタンスを引き起こし、インスタンスの各々が、互いに独立に修正されてよいイベントプロパゲーション値を有してもよい。
【００３７】
代替的な形態において、頂点に対する相互接続又はその各々に沿って処理イベントの実行を伝搬させる代わりに(イベント通知が受信された頂点を結ぶ相互接続以外に)、プロパゲーションは、相互接続に沿ってその頂点に入るのみ又はその頂点から外へ方向付けられるのみであってもよい。当然に、そのような実施形態は、ターゲットデータグラフ及びソースデータグラフが有向グラフである場合に限って実現可能である。
【００３８】
データグラフのイベントプロパゲーションの仕組みの詳細に依存して、イベントプロパゲーション値が増加又は減少させられる値は、データグラフ内の各頂点について予め固定された量であってもよいし、或いは、アプリケーション又はデータベースのアドミニストレータにより設定可能な、或いは、そうでないものに対して結果の処理イベントを引き起こす受信した通知の相対的な数の関数として自動的に設定可能な頂点の属性であってもよい。
【００３９】
各々の頂点について維持される記録は、例えばイベントプロパゲーションマネジャにより集中的に維持されてもよいし、或いは、例えば複数のローカルイベントプロパゲーションマネジャによって分散形式で維持されてもよい。記録は、頂点により修正される場合に頂点により受信される各通知のイベントプロパゲーション値の値をリスト化してもよいし、或いは、処理イベント(又は処理イベントタイプ又はカテゴリ)により通知をグループ化し、(その処理イベントタイプ又はカテゴリ又は)その処理イベントの実行の通知の各々についてイベントプロパゲーション値を合計し、処理イベントの各々について累積値が維持されるようにしてもよい。
【００４０】
実施形態において、前記ターゲットイベントプロパゲーション情報及び前記ソースイベントプロパゲーション情報を利用して、前記ソースデータグラフ及び前記ターゲットデータグラフの各々からの頂点を含む頂点ペアの類似性を評価するステップは、結果の処理イベントが、同じ処理イベントの実行の結果として前記頂点ペアの各頂点において実行されたか否かを判断するステップと、結果の処理イベントが、前記同じ処理イベントの実行の結果として前記頂点ペアの各頂点において実行されたことが確認された場合に、前記頂点ペアの類似度の更なる評価を実行するステップと、結果の処理イベントが、前記同じ処理イベントの実行の結果として前記頂点ペアの各頂点において実行されなかったことが確認された場合に、類似度の更なる評価から前記頂点ペアを除外するステップとを含む。
【００４１】
有利なことに、異なるデータグラフにおける同じ処理イベントの実行に応じて、結果の処理イベントが(各データグラフからの)頂点のペアの各々で実行されたか否かの単独の判断は、更なる比較処理から頂点ペアを除外するフィルタとして機能することが可能である。すなわち、フィルタリングの効果が達成され、全体的な処理オーバーヘッドは削減される。言い換えれば、同じ処理イベント又は同じタイプ/カテゴリの処理イベントの実行に応じて、結果の処理イベントが頂点ペアの各々で実行される場合に、その頂点ペアは更なる比較処理のために選択される。そうでない場合、そのペアは更なる比較処理から除外され、その頂点ペアは互いにリコンサイルされない。
【００４２】
更なる比較処理は、既に確立されている意味論的な比較技術によるセマンティックベースの比較処理であってもよい。あるいは：
選択的に、前記類似度の評価は、前記頂点ペアの各々に関し、前記一群の処理イベントの各々に関し、前記処理イベントの実行について、前記頂点に関する修正されたプロパゲーション値を合計し、2つの頂点の数値比較の基礎として、加算され修正されたプロパゲーション値を処理イベント毎に利用することを含む。
【００４３】
合計及び修正されたプロパゲーション値を利用する類似度の評価は、上記の更なる比較処理の具体例である。一群の処理イベントの各々について修正され加算されるプロパゲーション値は、事実上、頂点のフィンガープリントを与え、フィンガープリントは、個々のデータグラフ内の頂点の位置の指標(目印)、及び、特定の処理イベントの実行に対して又は特定のタイプ/カテゴリの処理イベントの実行に対して頂点(又は関連するイベントプロパゲーションブローカ又はイベントハンドラ)がどのように反応するかについての指標(目印)を組み込む。例えば、ターゲットデータグラフの頂点は、特定のアプリケーションによりグラフに追加される新たな頂点に応じて一貫して(つじつまが合うように)修正されるが、他のアプリケーションによってグラフに追加される新たな頂点に応じては修正されない場合、これは、それら2つの処理イベントに関する合計及び修正されるプロパゲーション値の相対的なサイズにより反映される。同様に、ソースデータグラフにおける頂点が同一の又は類似する形式でこれらの処理イベントに応答する場合、これらの処理イベントに対する2つの頂点についての合計される修正値の間に或る関連性が期待される。2つの頂点の数値比較は、これらの関連性又はそれが無いことを特定しようとする。
【００４４】
数値比較の例示的な形式は、コサイン距離比較である。
【００４５】
有利なことに、コサイン距離比較は、ベクトル量を比較する際の演算効率の良い手段であり、ベクトル量は、例えば、特定の頂点に対する一群の処理イベントの各々の実行に対する修正され合計されるプロパゲーション値を取得することにより生成されることが可能である。更に、コサイン距離比較は、比較の全てに対して正規化され及び閾値に対して評価されることが可能な値を生成し、閾値を超えることは、2つの頂点が同等であることの指標あり、従ってそれはリコンサイルされるべきである(すなわち、ソースデータグラフ及びターゲットデータグラフの組み合わせにおける頂点間に同等性の相互接続が追加される)。
【００４６】
実施形態は、前記ターゲットデータグラフで実行される処理イベントのリストを取得するステップと、頻繁に実行される上位n個の処理イベントを特定するステップと、特定されたn個の処理イベントを前記一群の処理イベントとして選択するステップとを更に有してもよい。
【００４７】
有利なことに、一群の処理イベントを最も頻繁に実行されるn個の処理イベントに制限することは、リコンサイル処理により課される処理負担を減らす手段を提供する。更に、リコンシリエーション処理はインクリメント方式(徐々に増える方式)で実行されてもよく、最も頻繁に実行される最初のn個の処理イベントが使用され、その後のシステムアイドル時間において、より多くの処理イベント群とともに、リコンシリエーション処理が実行される。上記において、nは正の整数であることが仮定される。nの値は、データベースのアドミニストレータにより予め決定されてもよいし、或いは、リコンシリエーションリクエストの条件であってもよい。代替的に、nは利用可能なシステムリソースに応じて適応的であってもよく、nは利用可能な処理リソースの量に比例してもよい。ターゲットデータグラフで実行される処理イベントのリストは、システムログ(システム履歴)から取得されてもよいし、或いは、セントラル化された又はローカルなイベントプロパゲーションマネジャにより維持される記録を分析することにより導出されてもよい。
【００４８】
実施形態は、前記ソースデータグラフで実行される処理イベントのリストの時間スタンプされた(タイムスタンプを伴う)リストを取得するステップと、最近実行されたm個の処理イベントを特定するステップと、特定されたm個の処理イベントを前記一群の処理イベントとして選択するステップと更に含んでもよい。
【００４９】
代替的又は追加的に、n個の最も頻繁に実行される処理イベントに関し、m個の最近実行された処理イベントが一群の処理イベントとして選択されてもよい。実装の詳細に依存して、ある期間内では一般的に使用されていた処理イベントがもはや非常に一般的には実行されなくなり、従ってグラフの現在の状態を正確には反映しない場合のように、ターゲットデータグラフの利用性は時間とともに大きく変化するかもしれない。従って、m個の最も最近に実行された処理イベントを選択することは、何らかの処理イベントを分析から除外する有益な判別部を提供する。選択される処理イベントは、ある所定の期間(すなわち、長さがxであり、リコンシリエーションリクエストの時点又はその近辺で終了する期間(xは設定可能な変数))にわたって最も頻繁に実行されたn個の処理イベント及びm個の最近実行された処理イベントを含んでもよい。mの値は、データベースのアドミニストレータにより予め決定されてもよいし、或いは、リコンシリエーションリクエストの条件であってもよい。代替的に、mは利用可能なシステムリソースに応じて適応的であってもよく、mは利用可能な処理リソースの量に比例してもよい。ターゲットデータグラフで実行される処理イベントのリストは、システムログから取得されてもよいし、或いは、セントラル化された又はローカルなイベントプロパゲーションマネジャにより維持される記録を分析することにより導出されてもよい。
【００５０】
選択的に、実施形態において、処理イベントの実行は、1つ以上のプロパティに従って特徴付けられ、前記1つ以上のプロパティの各々について同じ形式で特徴付けられる処理イベントの実行は、同じ処理イベントの実行であると判断される。
【００５１】
アプリケーションによる通常の利用に関してターゲットデータグラフで実行される処理イベントは、リコンシリエーションリクエストに対するレスポンス(応答)として、ソースデータグラフにおいてエミュレート又は再現される。同じ処理イベントの実行に対する個々のデータグラフの挙動の比較は、2つのデータグラフにおける頂点の比較の基礎として機能し、従って同等な頂点ペアが同定されることを可能にする。処理イベントを再現又はエミュレートするための技術は、特定の実行環境及びデータグラフのフォーマットに依存してもよい。例えば、処理イベントは、保存された一群の命令、又は、プロセッサにより読み込まれて実行される処理イベントに固有の他の処理ロジックにより実行されてもよい(これは処理イベントの実行である)。その場合、ソースデータグラフにおける再現又はエミュレーションは、ターゲットグラフで実行されたのと同じ命令群又は他の処理ロジックを読み込んで実行することを含んでもよい。再現又はエミュレーションがソースデータグラフにおいて実行されるべき場所の観点からは、ターゲットデータグラフで実行された場所に類似する場所を特定するために、何らかのロジックが適用されてもよい。例えば、階層的なデータ構造では、階層のトップからの距離がコピーされてもよい。代替的に、中間の中心部からの距離が、実行の場所を特徴付ける基礎として使用されてもよい。実行の場所は、処理イベントの実行によりアクセスされる頂点であると考えられる。
【００５２】
再現された処理ロジック及び実行の場所を越えて、アクセスのタイプ(リード/ライト)、新たなデータ項目が生成されたか否か、それらの身元(識別子)/タイプ、命令するアプリケーションの識別子などを含む属性に応じて、処理イベントを特徴付けることが可能である。処理イベントのライブラリのうち、処理イベント群の中で実行された処理イベントの特徴に合致する処理イベントが、ソースデータグラフで実行され、処理イベントの実行であると判断されてもよい。
【００５３】
リコンシリエーション処理は、異なるデータ項目が意味的に同等であることの印(指標)をデータグラフにエンコードすることにより、データの不均一性を補償する。選択的に、複数の頂点を1つの頂点に統合すること等のような以後の更なる処理が実行されてもよい。更なる選択肢として、データ項目を返すクエリ(問い合わせ)は、データ項目と同等なものを返してもよい。同等リンクは、多数の方法で使用されてよい。同等リンクを追加する場所の判断は、頂点ペアの類似性の評価の結果に依存してなされてもよい。
【００５４】
選択的に、前記頂点ペアの前記類似度の評価は、2つの頂点が意味的に同等である可能性を示す信頼度値を生成し、生成された信頼度値が意味的同等性閾値を超える場合、前記2つの頂点の間に同等性の関係を示す同等リンクを付加する。
【００５５】
本発明の別の実施形態は、ターゲットデータグラフを保存するように構成されかつ前記ターゲットデータグラフ及びソースデータグラフの間でリコンシリエーション処理を実行するように構成されるデータストレージシステムのコントローラを含み、前記ソースデータグラフ及び前記ターゲットデータグラフの各々は、複数の頂点と複数の相互接続とを有し、前記複数の相互接続の各々は、前記複数の頂点のうちの2つの頂点を接続し及び接続される頂点の間の関係を表現する。当該コントローラは、前記ターゲットデータグラフにおける一群の処理イベントの各々の1つ以上の実行のプロパゲーションパターンを表現するターゲットイベントプロパゲーション情報を生成するように構成されるターゲットグラフイベントプロパゲーション記録部と、前記ターゲットデータグラフにより前記ソースデータグラフをリコンサイルする要求を受信するように構成されるリコンシリエーション要求マネジャと、受信した要求に応じて、前記ソースデータグラフにおける一群の処理イベントの各々の1つ以上の実行をトリガするように構成されるソースグラフイベントプロパゲーション実行部と、前記ソースデータグラフでトリガを受けた処理イベントの各実行の前記プロパゲーションパターンを表現するソースイベントプロパゲーション情報を生成するように構成されるソースグラフイベントプロパゲーション記録部と、前記ターゲットイベントプロパゲーション情報及び前記ソースイベントプロパゲーション情報を利用して、前記ソースデータグラフ及び前記ターゲットデータグラフの各々からの頂点を含む頂点ペアの類似性を評価するように構成される頂点ペア比較部とを有する。
【００５６】
コントローラは、複数のコンピューティングリソースが協働することによってセントラル化されるコントローラのように単独のコンピューティングリソースにおけるセントラル化されたコントローラとして実現されてもよいし、或いは、分散されたストレージシステムにおける個々のコンピューティングリソースそれぞれにおける複数の同等なコントローラのうちのコントローラとして実現されてもよい。例えば、コントローラは、ストレージシステムのコンピューティングリソースで動作するプログラムにより提供されてもよいし、1つ以上の他のコンピュータリソースは、データベースが複数のコントローラを介してアクセス可能であるように、同等なプログラムを走らせてもよい。コントローラは、データベースコントローラ又はデータベースマネジャのように言及されてもよい。
【００５７】
各々の機能モジュールは、モジュールの機能を実行するように特別に構成されたハードウェアにより実現されてもよい。機能モジュールは、命令又は実行可能なプログラムコードにより実現されてもよく、命令又は実行可能なプログラムコードは、コンピュータ処理ユニットにより実行される場合に、コンピュータ処理ユニットが、機能モジュールに帰属する機能を実行することを引き起こす。コンピュータ処理ユニットは、機能モジュールに帰属する機能を実現するために、メモリ、ストレージ、I/Oデバイス、ネットワークインタフェース、センサ(例えば、オペレーティングシステム又は他の手段を介する)、及び、コンピュータデバイスの他のコンポーネントのうちの1つ以上と協働して動作してもよい。モジュールは、ユニットのように言及されてもよく、方法、プログラム又はプロセスのステップ又はステージであってもよい。
【００５８】
本発明の他の実施形態は、ターゲットデータグラフのようなデータグラフを保存するように構成されるストレージユニットの分散ネットワークと、本発明を組み込むコントローラとを有するデータストレージシステムを含む。
【００５９】
当然に、データストレージユニットは、コンピューティングリソースの具体例であり、ストレージに加えて、処理機能及び制御/管理機能を有してよい。
【００６０】
ストレージユニットの各々はコンピューティングリソースであってもよく、例えば、それらの各々はストレージユニットに加えて、プロセッサ、メモリ、及び/又は、追加的なコンポーネント(例えば、ネットワークインタフェースカード、マザーボード、入力/出力デバイス)を含んでもよい。
【００６１】
本発明の他の実施形態はコンピュータプログラムを提供し、コンピュータプログラムは、コンピュータにより実行される場合に、コンピュータが、本発明を組み込む方法を実行することを引き起こす。更に、本発明の他の実施形態はコンピュータプログラムを提供し、コンピュータプログラムは、1つ以上のコンピュータにより実行される場合に、1つ以上のコンピュータが、本発明を組み込むデータベースコントローラとして機能することを引き起こす。本発明を組み込むコンピュータプログラムは、非一時的な記憶媒体のようなコンピュータ読み取り可能な記憶媒体に保存されてもよく、単独のコンピュータプログラムとして又はサブプログラム一式として提供されてもよい。
【００６２】
本発明の実施形態に本質的ではないが、実現手段は、グラフがコンピューティングリソースの分散ネットワークに保存されるシステムを含んでもよい。コンピューティングリソースの分散ネットワーク(コンピューティングリソースはストレージノード/ユニット/サーバであってもよい)は、互いに通信する1つより多い個々のストレージユニットのシステムを含んでもよい。例示的な通信の実例は、ピアツーピア(P2P)であり、コンピューティングリソースの分散ネットワークはストレージノードのピアツーピアネットワークであってもよい。P2Pは、各ピアの間でタスク又はワークロードを分ける分散アーキテクチャである。ピア(個々のストレージユニット又はプロセッサ)は、アプリケーションにおいて同等に権能が与えられる平等な参加者である。各々のピアは、サーバ又は固定ホストによるセントラル化された制御を必要とすることなく、例えば、処理能力、処理電力、ディスクストレージ、ネットワーク帯域幅などのようなリソースの一部分を、他のネットワーク参加者と直接的に利用できるように構成される。サーバが供給者でクライアントが消費者である従来のクライアントサーバモデルとは異なり、ピアは、リソースの供給者及び消費者の双方であると考えられる。有利なことに、P2Pシステムは、対数的に増える通信コストとともに、メッセージを交換するストレージノードの大規模なグループを維持することができる。
【００６３】
本発明の実施形態が実現される形態に依存して、ターゲットデータとともにリコンシリエーション処理が実行される頂点の集合に属しかつコンピューティングリソースに保存されるターゲットデータ及び頂点の間で、リコンシリエーション処理は、コンピューティングリソースの分散ネットワーク内の1つより多いコンピューティングリソースで同時に実行されてもよい。
【００６４】
図1はプロシジャのステップを示す図である。ターゲットデータグラフ10の表現及びソースデータグラフ20の表現が説明の目的で含まれている。図示されるようなデータグラフの幾何学的な表現は、データグラフが表現されてもよい多数の可能な方法のうちの1つに過ぎない。例えば、データグラフは、RDFトリプルのように、基本データ構造とともにエンコードされる。更に、(不図示の)ラベルは、頂点(ドット、点)と、相互接続又はエッジ(ライン、線)とに帰属する。説明されるデータグラフのサイズ及び幾何学形状は任意である。
【００６５】
図1のプロシジャフローは5つのステップS101ないしS105を含む。矢印が出る元のステップが、矢印が指すステップへ論理的に至るように、矢印は或るステップから次のステップへの論理的な進行を示す。これは、矢印が指すステップが開始可能になる前に、矢印が出る元のステップが完了しなければならないことを、必ずしも意味しておらず、例えば、ソースのプロパゲーション情報の生成が依然として進行している間に新たな実行が更にトリガされる意味において、ステップS103及びS104は重複してもよい。しかしながら、2つのステップの間の論理的なリンクは、生成されるソースイベントプロパゲーション情報に関して実行がトリガされなければならないことを示す。更に、S101はS102ないしS104のタイミングとは独立しているが、そのような情報を使用するステップS105が処理される前に利用可能になっている何らかのターゲットイベントプロパゲーション情報が存在しなければならない。
【００６６】
ステップS101において、ターゲットイベントプロパゲーション情報が生成される。ターゲットイベントプロパゲーション情報は、ターゲットデータグラフ内の一群の処理イベントの各々の1つ以上の実行についてのプロパゲーションパターン(伝達パターン又は進行パターン)を表現する。ターゲットデータグラフは、使用中のデータグラフであり、ソースデータグラフはそのデータグラフとリコンサイルされる。従って、アプリケーションにより又は他のターゲットから、ターゲットデータグラフに対してアクセスがなされる場合に、処理イベントの実行が生じる。ターゲットデータグラフは、処理イベントの実行がグラフの中を進行して行く形式で実行される。例えば、ローカルイベントプロパゲーションマネジャは一方からもう一方へ通知を転送し、頂点に関連するイベントハンドラは処理論理を実行する。代替的に、セントラル化されたイベントブローカが、イベントの伝達と処理論理を実行するようにイベントハンドラにトリガを与えることとの責務を担ってもよい。それらの技術のうちの何れかにより、処理イベントの実行の伝わり方を記述するデータは、頂点自身において又はセントラル化されたモジュールにおいて維持される。そのようなデータは、頂点が通知を受ける処理イベントの実行についての各頂点におけるリスト、或いは、頂点において何れかの結果的な処理イベントが実行されたことに応じる処理イベントの実行を含んでもよい。そのようなデータは、ターゲットイベントプロパゲーション情報として又はその基礎として収集され使用されてもよい。
【００６７】
ターゲットイベントプロパゲーション情報の形式は、ターゲットデータグラフの実現の詳細に依存する。第1の具体例として、ターゲットイベントプロパゲーション情報は、処理するイベントの実行に関するリスト、処理するイベントの実行の通知を受けた頂点のうちの何れか又は双方を説明するリスト、及び、処理するイベントの実行の通知を受けたことに応じて結果の処理イベントが実行される頂点などであってもよい。結果の処理イベントは、頂点に対する読み込み又は書き込みアクセスを行う場合に、その頂点の場所を占めるように考えられてよい。
【００６８】
データグラフは処理イベントの実行を伝達する手段とともに実現されてもよく、その手段では、数値が、その実行に適用され及び実行の通知に含められ、プロパゲーション経路における各頂点で修正される。修正は、通知を受けたことに応じて結果の処理イベントがその頂点で実行され得とその値を増加させ、そうでなければ値を減少させることを含んでもよい。各々の頂点において、一群の処理イベントの実行の各々に関する(頂点での修正後の)累積的な数値が、イベントプロパゲーション情報として保存され使用されることが可能である。代替的に、各々の実行についての数値が頂点毎に保存され、そして、イベントプロパゲーション情報を生成する処理は、各々の実行を、一群の処理イベントのうちの何れかにグループ化し、数値を加算(又は合計)することを含んでもよい。
【００６９】
ターゲットイベントプロパゲーション情報の形式についての上記の議論は、同様に、ソースイベントプロパゲーション情報にも適用される。
【００７０】
ステップS102において、ソースデータグラフのリコンシリエーションのためのリクエストが受信される。リクエストは、ターゲットデータグラフのデータベースマネジャにおいて、或いは、ターゲットデータグラフを維持する責務を有する他の何らかのエンティティにおいて受信されてもよい。リクエストは、ソースデータグラフ自身をエンコードするデータを含んでもよいし、或いは、ソースデータグラフのロケーションを説明し及びソースデータグラフにアクセスできるようにする情報を含んでもよい。リクエストは、命令又はコマンドの形式におけるものでもよく、データベースのアドミニストレータ又はそれと同等なレベルから発せられてもよい。代替的に、リクエストは、新たなデータグラフをターゲットデータグラフに付加する権限を伴うアプリケーション中のアプリケーションレベルの命令の結果であってもよい。ソースデータグラフをデータグラフとして言及することは、頂点間の関係を示すラベルが付されたエッジにより相互接続される複数の頂点としてグラフが表現されること以外に、ソースデータに関する如何なる特定の構造的な限定をも意味しない。ソースデータグラフをデータグラフとして言及することにより込められる限定はなく、単にデータグラフの一部分であるに過ぎない。当然に、ソースデータグラフは、RDFトリプルのような基本データフォーマットにより何らかの方法でエンコードされる。
【００７１】
リコンシリエーションのリクエストが受信されると、ソースデータグラフのイベントプロパゲーション情報を生成するためにステップS103ないしS104が実行され、そのイベントプロパゲーション情報は、ターゲットデータグラフについて生成されるイベントプロパゲーション情報と容易に比較されることが可能である。
【００７２】
ステップ103において、ターゲットグラフで実行される一群の処理イベントの各々の実行が、ソースデータグラフにおいてトリガを受ける。一群の処理イベントは、ターゲットデータグラフで実行される処理イベントである。その群(set)は、例えば最近のx秒間のような特定の期間内にターゲットデータグラフで実行された全ての処理イベントを含んでもよい。システムのログ(履歴)は、実行された処理イベントを記録していてもよく、システムログの中で実行済みとしてリスト化されている全ての処理イベントがその群に含まれてもよい。代替的に、例えば、(全期間又は特定の期間内に)最も頻繁に実行されるn個の処理イベントを選択すること、及び/又は、最も最近に実行されたm個の処理イベントを選択すること等のような何らかの論理装置(又は論理プログラム)が適用されてもよく、n及びmは何れも正の整数である。各々の処理イベントは、一群の命令として実現されてもよいし、或いは、その処理イベントを実行するためのプロセッサ上で動作する他の何らかの処理する論理装置の形態で実現されてもよい。従って、ターゲットデータグラフで既に実行された処理イベントのソースデータグラフにおける実行をトリガするために、処理イベントを実現する一群の命令又は他の処理論理装置が修正され、或いは、それに応じて引数が提供され、ターゲットデータグラフではなくソースデータグラフにアクセスしてもよい。処理イベントの最初の実行が、ソースデータグラフにおいて実行されると、ソースデータグラフにおける頂点の間の内部の相互接続及び本来のイベントプロパゲーション手段は、処理イベントの実行がどのように進められるかを決定する。
【００７３】
処理イベントに依存して、ソースデータグラフの中で実行をトリガする特定の1つ又は複数の頂点を選択する必要があるかもしれない。ソースデータグラフとターゲットデータグラフとの間の最初の何らかの対応関係が分かっている場合、ターゲットデータグラフの中で処理イベントが実行された頂点に類似する頂点において、実行がトリガされることが可能である。そのような何らかの最初の対応関係が欠如している場合、一群の処理イベントの各々は、ソースデータグラフの中央部の頂点の各々で実行されてもよい。中央部は、例えば、イベントが全てのグラフ頂点に速やかに伝わること及び何れの頂点も初期の実行から不釣り合いに隔たっていないことを保証する中間領域(between-ness)に基づいて算出されてもよい。別の実施形態として、一群の処理イベントの各々は、より正確な結果のために、ソースデータグラフの各頂点において実行されることが可能である。
【００７４】
ステップ104において、ソースイベントプロパゲーション情報が生成される。ソースイベントプロパゲーション情報は、ソースデータグラフでトリガされる処理イベントの各々の実行のプロパゲーションパターンを表現する情報である。ターゲットイベントプロパゲーション情報の形式についての上記の議論は、ソースイベントプロパゲーション情報にも適用される。有利なことに、各々の形式は同じになり、2つのデータグラフ各々からのものを含む頂点のペアの間の効率的な有意義な比較を促す。
【００７５】
ステップS105において、2つのデータグラフを比較し、ソースデータグラフにおける何らかの頂点がターゲットデータグラフにおける頂点と同等であるか否かをそのような何らかの同等性の確認とともに立証する基礎として、生成されたソースイベントプロパゲーション情報及び生成されたターゲットイベントプロパゲーション情報が使用される。比較は、各々のデータグラフからの何れかの」頂点を含む頂点ペアの間で実行される。ソースデータグラフ内の各頂点が、ターゲットデータグラフ内の各頂点と比較されてもよい。
【００７６】
比較は頂点の間でなされるので、比較の第1段階は、比較されるソースデータグラフ内の頂点に関連するソースイベントプロパゲーション情報から情報を抽出し、比較されるターゲットデータグラフ内の頂点に関連するターゲットイベントプロパゲーション情報から情報を抽出することである。抽出される情報は、その頂点に至るまでに進行した処理イベントの実行のリストを、通知の形式あるいは実行される結果の処理イベントの形式で含んでもよい。処理イベントの実行には固有のIDが帰属していてもよく、IDは、そのイベントに進行するために使用されるイベント通知に含まれてもよいし、或いは、実行の進捗を記述するデータとともにシステムログにより記録されてもよい。抽出される情報は、一群の処理イベント中の処理イベント各々に対する累積値のような数値を含んでもよく(その各々は、個々のデータグラフの中で1回より多い回数実行されてもよい)、その数値は、対象の頂点から発する経路に沿って進行が終端するまでの処理イベントの実行についての負担(resistance)を表現する。そのような数値は、イベントプロパゲーション値として言及され、この点については後述する。比較は、例えば、頂点のペアの一方に進行した処理イベントの実行の各々について(処理イベントの通知が頂点で受信されていること、或いは、結果の処理イベントがその頂点で実行されたことを意味する)、同じ処理イベントの実行が、頂点のペアの他方に進行したか否かを判定することであってもよい。
【００７７】
両者の間で一致を示す値が生成されてもよい。簡易な技術では、その値は、一群の処理イベントのうち、少なくとも1つの実行がそのペアの各頂点に進行した処理イベントの個数であってもよい。値は、その群における処理イベントの数の比率として、0及び1の間にあってもよい。代替的な技術において、その値は、個々のデータグラフにおける頂点に進行した処理イベントの実行の比率の間の一致度を定量化してもよい。例えば、特定の処理イベントの全ての実行が双方の頂点に到達し、他の処理イベントの実行は何れの頂点にも到達しない場合、両者の一致度は優れており、従って高い値になる。
【００７８】
何れかの技術において、結果は、ソースイベントプロパゲーション情報及びターゲットイベントプロパゲーション情報に基づく2つの頂点の間の類似度を定量化する値である。その値は閾値と比較されてもよく、閾値を超えることは2つの頂点が意味的に同等であることのしるしであり、従って、ターゲットデータグラフ及びソースデータグラフは、(2つの頂点の間の相互接続である)同等性を示す同等リンクとともに保存される。その値は、閾値が必要な信頼度に応じて設定されるように、同等性のしるしの信頼性を定量化してもよい。
【００７９】
代替的に、上記の何れかの技術により生成される値は、更なる比較処理から排除するために、頂点のペアを選別する手段として使用されてもよい。例えば、同じ処理イベントの実行が進行していない任意の頂点ペアは、更なる比較処理から排除されてもよい。代替的に、上記の技術のいずれかによりペアに関して生成される値に対する閾値が適用されてもよく、生成された値が閾値を超えないペアは、以後の比較処理から除外されてもよい。これは、同等であると判断される見込みが僅かしかない頂点ペアに関する処理リソースの利用度を、より高い見込みの頂点ペアよりも減らす。
【００８０】
更なる比較処理は、対象の頂点から発する経路に沿ってその進行を終端させ、その頂点に到達する同じ処理イベントのうちの異なる実行の各々に対する値を一緒に加算することにより一群の処理イベントの各々について合計される、処理イベントの実行の負担を表現する値を利用してもよい。その値は、イベントプロパゲーション値として言及されてもよい。各々の頂点に関し、一群の処理イベントの各メンバに対する何れかの値とともに、累積的なイベントプロパゲーション値のベクトルが組み立てられてもよい。そのベクトルは、ベクトルの類似性を定量化する値を生成する頂点の間の数値的な比較の基礎を形成する。数値的な比較は、例えば、コサイン距離比較であってもよい。数値比較により生成される指数は、2つの頂点が意味的に同等であることの信頼性の目安となる。閾値を超える信頼性の値は、2つの頂点は意味的に同等であるしるしとして判断され、2つのデータグラフは、同等性を示す2つの頂点間の相互接続とともに、おそらくは信頼性値とともに保存される。
【００８１】
例示的なプロセスを説明する。
【００８２】
すなわち、例示的なプロセスは以下の通りである：
Gtをターゲットデータモデルとし(プロセス例において、データモデルはグラフデータ構造によるものである)、そのGtについて、イベントのリスト(ベクトルE(→E)=<e0,...,en>)(一群の処理イベントの具体例である)というプロパゲーションメタデータが取得されているものとする。
【００８３】
GSを、Gtに対してリコンサイルされるべきソースデータモデルとする(プロセス例において、データモデルはグラフデータ構造によるものである)。
ターゲットデータモデルにおいて既に処理されている<e0,...,en>は、ソースデータモデルにおいて発行されており、プロパゲーションパターンが記録/登録されている。
【００８４】
プロパゲーションパターンは、各々からの頂点を含む頂点ペアの類似度の計算及びデータリコンシリエーションの基礎として使用される。
【００８５】
例示的プロセスに先行して又は予備的段階として、ターゲットグラフデータモデルGtは、所定の期間の間にバランスよく使用されることが仮定される。バランスよく使用されること(balanced  use)は、データベースのモニタリング行為のために実行される内的な自律的な処理からではなく、データ問い合わせから生じ、データベースに対してなされるアクセスから生じる処理をアップデートする利用として解釈されることが可能である。動的処理及び並列処理を増進するために、データ処理はイベント駆動のフレームワークで実行されることも仮定される。例示的なイベント駆動フレームワークの更なる詳細については、この例示的なプロセスの説明の後になされる。実際には、イベントは、データ項目(頂点)について実行される読み込み又は書き込み処理(オペレーション)である。データ項目の相互接続に起因して、リード/ライト処理は、他のデータ項目に対して結果的に起こるリード/ライト処理を招き、実行される処理(処理イベントの実行の具体例である)は、実行される処理のプロパゲーションパターンである統合された経路とともに、データモデルの中で事実上進行する。データモデルがグラフデータ構造によるものである場合、この進行(プロパゲーション)は、通常、(2つのグラフ頂点を結ぶ)グラフエッジに沿って実行される。
【００８６】
実行される処理のプロパゲーションパターンは、分散方式又は集中方式で記録されることが可能である。例えば、分散ストレージの場合、プロパゲーションモーメンタム又はイベントプロパゲーション値のように言及される値及びイベントidが、各々のグラフ頂点に保存される。各頂点に保存されるということは、頂点の一部分であると考えられる保存場所、或いは、頂点に付随しかつ特定の頂点に割り振られる保存場所に保存されることを意味する。プロパゲーションモーメンタム(又は進行力)は、進行に応じて以後の処理を行わない頂点に到達することにより、進行経路に沿って終端する進行に対して実行される処理の負担を定量化する数であり、従って、その経路に沿ってプロパゲーションモーメンタムから或る量を減算し、プロパゲーションモーメンタムが所定の最小閾値を超える場合に限って進行が続く。集中方式で保存される場合(セントラル化される場合)、これは、キーとしてのイベントid、及び、イベントが到達した範囲を示す値としての頂点リストとともに、キー値マップとして実行されることが可能である。
【００８７】
例えば、あるグラフ頂点で実行される新たなポストイベント又は新たな要求イベント(e)は、そのようなイベントに関してグラフ頂点を監視しているグラフ頂点において結果のイベント(ei’)をトリガすることが可能である。これは、結果のイベント(ei’)が実行された頂点を監視している頂点に対する更なる進行を引き起こす。このようにして、イベントの実行毎にプロパゲーションパターンが形成される。
【００８８】
関連性に関し、イベントプロパゲーションパターンを明示的に記録することにより、データ項目(頂点)の意味が明らかにされることが可能であり、定量的な比較の基礎を提供する。イベントは(ポスト(post)/リード(read)/モディファイ(modify)/クレーム(claim)のうちの1つ以上を含む)イベントタイプに応じて分類されてもよく、各々のイベントタイプはソースデータグラフの中で1回以上反復される。イベントプロパゲーションは能動的又は受動的であってもよい。能動的なプロパゲーションは、データフロープログラミングの同じ原理(philosophy)に従って実現され、登録されたリスナーにより、あるデータ項目は他のデータ項目を能動的に「傾聴する(listen)」。例示的な能動的なプロパゲーションの仕方については、この例示的なプロセスの説明の後になされる。受動的なプロパゲーションは或る技法であり、その技法は、手段によらずデータグラフ内で実行される処理を監視し、ある頂点で発行されるイベントの実行が他の頂点における状態変化を引き起こすか否か及び何処で引き起こすかを確認することを含む。
【００８９】
ターゲットデータモデルで処理されたイベントは、それらが到達した範囲の広がりに基づいてランク付けされてもよい。このランキングは、全ての処理イベントを複製することは許可されない環境(又は、反復プロセスが他の何らかの理由により制限される状況)において、ソースデータグラフの中で実行する処理イベントを選択する基礎として使用されることが可能である。
【００９０】
ソースデータモデルがリコンサイルされるべき場合に、→E=<e0,...,en>内のイベントは、イベントを実行して各イベントのプロパゲーションパターンを記録するステップにより、ソースデータモデル内のデータ項目を効果的に注釈するために使用される。システムリソースの利用可能性に関し、→E内の各イベントの処理が実行不可能である場合、徐々に増やすプロセス(インクリメンタルプロセス)が使用され、これにより、最も頻繁に/最近に実行されたもの或いはターゲットデータグラフにおいて最も広い範囲をもたらすものが、優先される。以後のシステムアイドル時間において、ソースデータグラフにおける実行をトリガするステップ、プロパゲーションパターンを記録するステップ、及び、頂点のペアを比較するステップが、より完全なバージョンの→Eとともに反復されることが可能である。
【００９１】
注釈付け(ソースイベントプロパゲーション情報を生成するステップ)は、(例えば、この例示的なプロセスの説明の後に説明されるイベントプロパゲーション手段を利用して)ソースグラフのうち選択された一群の中央部の頂点におけるイベントを実行することによりなされる。
【００９２】
GSにおいてトリガする→E内の各処理イベントの実行の数、及び実行がトリガされるべき頂点は、異なる方法で決定されることが可能であり、例えば：
ソースデータグラフ及びターゲットデータグラフの間の何らかの初期の関係が分かっている場合、その実行は、ターゲットデータグラフで処理イベントが実行された頂点に類似する頂点でトリガされることが可能である。
そのような何らかの初期の関係が不明である場合、一群の処理イベントの各々は、GSの中央部の頂点の各々において実行されてもよい。中央部は、例えば、イベントが全てのグラフ頂点に速やかに伝わること、及び、初期の実行から不釣り合いな距離には頂点が無いことを保証する中間領域に基づいて算出されてもよい。
別の代替例として、一群の処理イベントの各々は、より正確な結果のために、GS内の各頂点で実行されることが可能である。
【００９３】
選択的に、イベントのプロパゲーションは、選択された頂点の全てにおいて同時にプロパゲーションを開始することにより、分散方式で処理されることが可能である。ソースグラフが分散ストレージに保存される場合、真の並列処理が達成可能になる。
【００９４】
GSでトリガされる実行の結果、すなわち、ソースイベントプロパゲーション情報は、ソースデータモデルのプロパゲーションの仕方に依存する何らかの形式におけるものである。この例示的なプロセスでは、プロパゲーションの仕方は、以下に説明されるローカルイベントのプロパゲーションマネジャのネットワークによるものであることが仮定される。結果は、各々の頂点viについてペア<ej,r>の形式で保存され、ペア<ej,r>は、→Eのうちトリガされた処理イベントであるejと、viにより変化するイベントの実行についての累積的なモーメンタム又は動き(momentum)を示す数値rとを特定する(数値rは、一群の処理イベントのうちの処理イベントの各実行についてのイベントモーメンタム又はイベントプロパゲーション値を示す)。累積(値)は、単に、ejがソースデータモデルにおける異なる中央部の頂点で実行される場合に、全てのモーメンタムの合計として算出されることが可能である。
【００９５】
複数のイベント実行のプロパゲーションの後、各々の頂点viについて、イベントモーメンタムトリプルのベクトルは、次のように取得されることが可能である：
<<e0,r0>,<ei,ri>,...,<en,rn>>
これは、データの非類似性/類似性の計算に対するイベントベースのセマンティック特徴ベクトルとして使用されることが可能である。
【００９６】
プロパゲーションが終了すると、ソース及びターゲットグラフの双方における全部又は一部のグラフ頂点は、ベクトルにより表現される。ベクトルの要素インデックスは、双方のグラフで処理されたイベントである。ベクトルの値は、(実現手段の詳細に依存する)通知が対象の頂点に届いた又はそこを去る場合の、各イベントの実行についての累積的な定量化されるモーメンタム値である。これは、リコンシリエーションの信頼レベルの定量化を可能にする。
【００９７】
例示的なプロセスでは、リコンシリエーションの比較ステップがステージで実行される。
【００９８】
最初のフィルタリングステージにおいて、頂点のペアの各々に進められるように記録されるイベントの個々のリストが算出される。このステージは、類似するイベントを受ける頂点は、大きく相違するイベントを受けたものよりも類似していると考えられるべきである、という仮定を利用する。2つのリスト間で共通するイベントについての(→E内のイベントについての)閾値数又は比率が、数値的な比較ステージに進むペアについて確認される必要がある。そうでない場合、ペアの間で更なる処理は実行されず、それらは互いに同等ではないと考えられる。
【００９９】
初期のフィルタリングステージで閾値数の共通イベントを充足する頂点ペアは、数値比較ステージに進行するようにマークされるキュー又はその他の手段に加えられる。数値比較ステージは、より詳細に及び細かく調整されるので、従って、初期フィルタリングステージよりも、ペアに関する処理リソースを多く必要とする。数値比較ステージ、各頂点について記録された累積された数値モーメンタム値のベクトルに基づく。イベントウェイト/モーメンタム値を利用して、コサイン距離が、頂点ペアの間の類似性/非類似性を定量化するために算出されることが可能である。実際には、閾値未満の何らかのモーメンタム値は、最終的な非類似性/類似性の計算に対する寄与は重要ではないので、支障なく無視されることが可能である。
【０１００】
別の選択的なステージとして、数値比較ステージにおける定量化に基づく類似閾値を超える頂点ペアは、既存の意味の照合/アライメントアルゴリズム及び方法を利用する完全な意味の比較に委ねられ、2つの頂点が同等であるか否かを判断するための別の基礎を提供してもよい。
【０１０１】
数値比較及び/又は完全な意味的な比較において算出される類似性の定量化は、閾値と比較され、その閾値を超える場合には、頂点のペアは同等であることを示し、従って、それらは同等であると考えられることを示すそれらの間の相互接続とともに保存される。定量化は、同等性の判断における信頼レベルを有効に提供し、従って、信頼性レベルは相互接続と関連して保存されてもよい。
【０１０２】
例示的なプロセスは、リコンシリエーション処理の先行する処理オーバーヘッドを減らすために、徐々に処理を進める機会を提供する。以下、例示的なプロセスのフレームワーク内で徐々に進行するリコンシリエーション処理をに関する可能なアプローチを説明する。
【０１０３】
初期のリコンシリエーションプロセスにおいて、ターゲットデータグラフ内で最も頻繁に実行されたイベントのみが、ソースデータグラフにおいてトリガされる。このアプローチは、ターゲットデータグラフからイベントリストを階層化し、リスト全体ではなく、上位にランキングされたイベントのプロパゲーションをリコンサイルすることにより、比較を開始するのみである。このアプローチは、頻繁に生じるイベントは、ターゲットデータグラフの意味を豊富に表現する、という仮定に基づく。従って、それらは、頻繁には生じないものと比較して、より信頼できる意味を明らかにすることが可能になり、従って、リコンシリエーションに対する信頼性を増やす。
【０１０４】
代替的又は追加的なアプローチとして、動的な利用傾向に委ねられるターゲットデータグラフにおいて特に有利なことに、初期のリコンシリエーションプロセスにおいて、ターゲットデータグラフで最も最近実行されたイベントのみが、ソースデータグラフでトリガされてもよい。このアプローチは、イベントの選択を、最も最近のものに制限する。最も最近のイベントは、データを活用するアプリケーションの動きを、より信頼性高く反映することが可能である。
【０１０５】
イベントプロパゲーション処理が未だ完了していない場合に、暫定的及び近似的な結果を得ることが可能である。これは、あたかもプロパゲーションが首尾よく終了したのと同様な形式で、イベントのプロパゲーション及び処理リコンシリエーションについてのスナップショットを事実上もたらす。言い換えれば、比較処理を実行する前にソースデータグラフにおいて終了するまでイベントのプロパゲーションを待機する必要はない。実行後の所定の時間的制限は、実行の結果を利用して比較処理を開始するように設定されてもよいし、或いは、有限個数のプロパゲーションステージが考慮されてもよい。
【０１０６】
以下、例示的なイベントプロパゲーション手段を説明する。
【０１０７】
イベントプロパゲーション手段は、複数のローカルイベントプロパゲーションマネジャであってもよく、各々のローカルイベントプロパゲーションマネジャが頂点に対して指定される。すなわち、ローカルイベントプロパゲーション手段は、1つの頂点について1つのローカルイベントプロパゲーションマネジャの形式に基づいて、頂点の各々に対して個別化されたローカルイベントプロパゲーションマネジャである。代替的に、ローカルイベントプロパゲーションマネジャが提供されるデータストレージユニットに保存される各頂点に、各々のローカルイベントプロパゲーションマネジャが指定されるように、ローカルイベントプロパゲーションマネジャは、データストレージユニットについて1つのローカルイベントプロパゲーションマネジャの形式に基づいて提供されてもよい。代替的に、必要な場合には、プロパゲーション手段は、各頂点で決定されることが可能である。
【０１０８】
ローカルイベントプロパゲーションマネジャは、処理イベントに応じて、それらが指定された頂点において、何時イベントハンドラを実行するか、及びおそらくは何れのイベントハンドラを実行するかを決定するように構成される。更に、ローカルイベントプロパゲーションマネジャは、隣接するローカルイベントプロパゲーションマネジャ(すなわち、処理イベントが生じた頂点につながっている頂点に対して指定されているローカルイベント処理マネジャ)に、処理イベントを何時通知するかを決定するように構成される。
【０１０９】
図2の例において、処理イベントは頂点101において生じる。頂点101に割り振られているローカルイベントプロパゲーションマネジャは、イベント通知を生成すること及び/又は頂点101におけるイベントハンドラの実行をトリガすることにより、処理イベントに応答するように構成される。更に、ローカルイベントプロパゲーションマネジャは、生成したイベント通知を隣接する頂点102及び103に転送するように構成されてもよい。
【０１１０】
頂点103では何らの応答(レスポンス)もない。何らのイベントハンドラも頂点103に関連付けられなくてもよいし、或いは、頂点103に割り当てられるローカルイベントプロパゲーションマネジャは、イベント通知を受信し、頂点103及び1つ以上のイベントハンドラ間の関連性に対して適用される条件は充足されない旨の判断を行い、そして、何らの実行もトリガされない。更に、イベント通知が受信された際の送信元の頂点101以外に隣接する頂点は無いので、頂点103に割り当てられたローカルイベントプロパゲーションマネジャは、イベント通知の転送は不要/不可能である旨の判断をする。本明細書を通じて、頂点及び頂点に割り当てられるローカルイベントプロパゲーションマネジャに対する「隣(又は隣接)」という考え方は、データのグラフ表現における相互接続により与えられ、相互接続により接続される任意の頂点ペアは、隣接しており、ローカルイベントプロパゲーションマネジャの割り当てを受けることに、留意を要する。
【０１１１】
頂点102に割り当てられるローカルイベントプロパゲーションマネジャは、処理イベントが生じた頂点101に割り当てられるローカルイベントプロパゲーションマネジャから、イベント通知を受信し、頂点102においてイベントハンドラの実行をトリガするか否かを判断するように構成される。そのような判断はイベント通知の内容に依存してもよく、例えば、イベント通知は、処理イベントのタイプ/カテゴリ、及び/又は、処理イベントが生じた頂点の識別子又は場所を特定してもよい。例えば、ローカルイベントプロパゲーションマネジャは、受信したイベント通知の内容に適用可能な条件を保存し、何れの条件が満たされるかに依存して何れのイベントハンドラを実行するか又は実行するか否かを決定してもよい。図2の例において、頂点102を円形状に囲む矢印によって示されるように、頂点102においてイベントハンドラの実行をトリガすることにより、受信したイベント通知に応答することが、頂点102に割り当てられたローカルイベントプロパゲーションマネジャにより判断されてもよい。
【０１１２】
頂点102に割り当てられたローカルイベントプロパゲーションマネジャは、イベント通知が受信された際の送信元のローカルプロパゲーションマネジャ以外の隣接するローカルプロパゲーションマネジャへ、受信したイベント通知を送信するか否かを判断するようにも構成される。そのような判断は、イベント通知の内容に依存してもよく、例えば、イベント通知は、処理イベントのタイプ/カテゴリ、及び/又は、処理イベントが生じた頂点の識別子又は場所を特定してもよい。例えば、ローカルイベントプロパゲーションマネジャは、受信したイベント通知の内容に適用可能な条件を保存し、何れの条件が満たされるかに依存してイベント通知を送信するか否かを決定してもよい。更に、頂点102におけるイベントハンドラの実行は、送信する前にイベント通知に対してなされる修正を生じさせてもよい。代替的又は追加的に、頂点102におけるイベントハンドラの実行は、頂点102に割り当てられたローカルイベントプロパゲーションマネジャにより又は隣接するローカルイベントプロパゲーションマネジャにより生成される新たなイベント通知を生じさせてもよい。図2の例において、頂点104及び頂点105に割り当てられたローカルイベントプロパゲーションマネジャにイベント通知を送信することが、頂点102に割り当てられたローカルイベントプロパゲーションマネジャにより判断されてもよい。
【０１１３】
頂点105に割り当てられたローカルイベントプロパゲーションマネジャは、受信したイベント通知に応答してイベントハンドラを実行することを行わない。頂点104に割り当てられたローカルイベントプロパゲーションマネジャは、受信したイベント通知に応じてイベントハンドラを実行し、頂点106に割り当てられたローカルイベントプロパゲーションマネジャへイベント通知を送信する。頂点105に割り当てられたローカルイベントプロパゲーションマネジャ及び頂点106に割り当てられたローカルイベントプロパゲーションマネジャは、何れも、イベントハンドラを実行せず、隣接するローカルイベントプロパゲーションマネジャへイベント通知を送信しない。
【０１１４】
代替的に、頂点101に割り当てられたローカルイベントプロパゲーションマネジャにより最初の生成が実行されなくてもよく、すなわち、頂点102に割り当てられたローカルイベントプロパゲーションマネジャが、隣接する頂点を観察し、そして、イベント通知を生成し及び/又は頂点102におけるイベントハンドラの実行をトリガすることにより、隣接する頂点(又は指定された隣接する頂点)における処理イベントに応答するように構成されてもよい。
【０１１５】
ローカルイベントプロパゲーションマネジャに対する代替例として、イベントプロパゲーション手段は、頂点の間の有向リンクを保存するセントラル化された処理マネジャであってもよく、有向リンク(directed  link)は、リンクされた一方の頂点において、リンクされた他方の頂点における処理イベントに応じて実行される。セントラル化された処理マネジャは、データグラフ全体に対して設けられる単独の処理マネジャであってもよいし、或いは、特定のデータストレージサーバに保存されるデータグラフの領域/部分に対して指定されてもよい。データストレージサーバ毎に1つの処理マネジャが存在してもよい。図2の例では、頂点102及び頂点104の双方が、処理マネジャに関し、頂点102にリンクされていもよい。例えば、プロセスマネジャは、特定の頂点に関し、他の頂点のレジスタを保存するように構成されてもよく、他の頂点では特定の頂点における処理イベントに応じてイベントハンドラがトリガされる。更に、登録は、イベントハンドラが実行されるべきかいなかを判断する1つ以上の条件を指定してもよく、特定のイベントハンドラ又はイベントハンドラのカテゴリを指定してもよい。
【０１１６】
図2の例において、頂点102及び頂点101の間のリンクとともに保存される何らかの条件が充足され、その結果、頂点102においてイベントハンドラが実行されてもよい。頂点104は頂点101に関する処理マネジャにおけるレジスタに含まれてもよく、従って、頂点104におけるイベントハンドラの実行を引き起こす頂点101における処理イベントであってもよい。代替的に、頂点104は頂点102のレジスタに含まれ、頂点102におけるイベントハンドラの実行は登録の条件を充足し、頂点104におけるイベントハンドラが実行されるようにしてもよい。
【０１１７】
図3は、本発明の実施形態を示し、1つのローカルイベントプロパゲーションマネジャ200を詳細に示す。保存されるデータ100はグラフ表現で示され、破線は、異なるデータストレージサーバに保存される領域の間の境界を示す。サーバー通信モジュール300は、同じデータストレージサーバに保存される、ローカルイベントプロパゲーションマネジャのような他のエンティティと通信するための手段を提供する。通信ネットワーク400は、他のサーバーに保存される、ローカルイベントプロパゲーションマネジャのようなエンティティと通信する手段を提供する。
【０１１８】
説明されるローカルイベントプロパゲーションマネジャ200は、ローカルイベントプロパゲーションマネジャ200及びグラフ頂点の間の矢印によって示されるように、特定の頂点に対して割り当てられる。ローカルイベントプロパゲーションマネジャは、残りのグラフ頂点の各々にも提供されるが、図3では示されていない。
【０１１９】
ローカルイベントプロパゲーションマネジャ200は、プロパゲーションマネジャモジュール210、イベントマネジャモジュール220、イベントハンドラ230、及び、頂点通信モジュール240を有する。これらの機能ユニットは、単に、ローカルイベントプロパゲーションマネジャ200の仕事を実行するように構成される機能モジュールの例示的な選択物にすぎない。ローカルイベントプロパゲーションマネジャ200の中で他のタスクの分散の仕方も可能であり、或いは、機能は、複数のモジュールへの分割によらずに単にローカルイベントプロパゲーションマネジャ200により実行されてもよい。イベントハンドラ230は、図2のローカルイベントプロパゲーションマネジャ200の機能的なコンポーネント(又は要素)として示される。これは選択的な構成であり、イベントハンドラは、データストレージサーバのレベルで提供されてもよいし、或いは、1つより多いローカルイベントプロパゲーションマネジャ200によりアクセス可能なエンティティとして提供されてもよい。図3の具体例では、イベントハンドラ230は特定の頂点に割り当てられる。更なる選択肢として、1つより多い数のイベントハンドラが、頂点毎に提供されてもよく、例えば、イベントのタイプ/カテゴリにつき1つのイベントハンドラを備えていてもよい。
【０１２０】
頂点通信モジュール240は、隣接するローカルイベントプロパゲーションマネジャからイベント通知を受信し、また、イベント通知を、隣接するローカルイベントプロパゲーションマネジャへ送信するように構成される。プロパゲーションマネジャモジュール210は、ローカルイベントプロパゲーションマネジャが割り当てられている頂点に関連付けられる任意のイベントハンドラの実行をトリガするか否かを判断し、受信したイベント通知を、何らかの隣接するローカルイベントプロパゲーションマネジャへ送信するか否かを判断するように構成される。プロパゲーションマネジャモジュール210は、イベントプロパゲーション値の属性(又は帰属)及び修正を含むイベント通知の生成に関する責務も担う。プロパゲーションマネジャモジュール210は、ローカルイベントプロパゲーションマネジャ200が他の(複数の)頂点に対して指定される頂点を接続する複数の相互接続の各々に帰属する相互接続送信値を維持するように構成される。
【０１２１】
イベントマネジャモジュール220は、イベントハンドラ230の代わりに、イベントキュー及びイベント優先度を管理するように構成される選択的なモジュールである。イベントハンドラは、イベントに応じて実行可能であり、それが実行されている頂点を修正するか否か、その頂点をどのように修正するかを決定し、決定した修正を実行するプロセッサを含んでもよい。
【０１２２】
ローカルイベントプロパゲーションマネジャは、それらが割り当てられる頂点に対するホストとなるデータストレージサーバで動作する様々な処理スレッドとして実現されてよい。代替的に、ローカルイベントプロパゲーションマネジャは、データストレージサーバ毎に(或いは、特定の構成に依存して、データストレージユニット毎に)1つの単独の処理スレッドとして実現されてもよい。
【０１２３】
本発明を実現するデータストレージシステムにおいて例示的なローカルイベントプロパゲーションマネジャ200により実行されるプロセス例が、以下において説明される。
【０１２４】
グラフ頂点v0に関し、隣接グラフの各々(v1,...,vn)は、v0で生じるイベントに対する関心(interest)を登録している。その関心の登録は、明示的であってもよいし、隣接する各頂点においてv0を指すポインタとして保存されてもよい。代替的に、関心の登録は黙示的(暗黙的)であってもよく、単に近隣からv0への相互接続が存在することに起因して、それらの近隣はv0に対して関心の登録を有すると考えられてもよい。
【０１２５】
処理イベントは初期モーメンタム(本願の他の箇所において言及されるイベントプロパゲーション値についての具体例)を有し、初期モーメンタムはイベントがプロパゲーションを止めるべき場合を決定する(例えば、モーメンタムが0又はそれ未満に落ち込んだ場合であることを決定する)。初期イベントモーメンタムは、処理イベントが生じた頂点におけるローカルイベントプロパゲーションマネジャ200又はその近隣におけるものにより、処理イベントに対して割り当てられる。初期イベントモーメンタムは、ローカルイベントプロパゲーションマネジャの間で転送されるイベント通知の内容の一部を形成し、その初期値は、以下のものを含む要因に基づいて指定されることが可能である：
−データグラフ特徴(例えば、高い次数の頂点(high  degree  vertex)で生じたイベントは、より高いモーメンタムを有するべきである)；
−データ特徴(例えば、(ユーザ又はデータベースのアドミニストレータにより)重要であるとして指定されたドメインデータに関連するイベントは、より高いモーメンタムを有するべきである)；或いは
−イベントタイプ(例えば、システムイベントは、データイベントよりも高いモーメンタムを有するべきである)。
【０１２６】
そのようなモーメンタム値の指定は、実施の実現状況に応じて設定されてもよい。
【０１２７】
任意のエッジ<v0,vi>に関し(エッジは、2つの頂点の間の相互接続である)(ここで、1≦i≦nである)、例えば、エッジに沿ってイベント通知を受信する頂点のローカルイベントプロパゲーションマネジャにより、ある値が計算されてそのエッジに割り振られる。その値は、v0からviのエッジ方向に沿う2頂点間のイベント通知の転送後に、イベントモーメンタムがどのように修正されるかを決定する。その値は、本願の他の箇所で言及される相互接続送信値の具体例である。
【０１２８】
相互接続送信値は、以下のものを含む1つ以上の要因に基づいて計算及び/又は調整されてもよい：
−特定のイベント分類におけるviの関心；
−2つの頂点間の相互接続の特徴；
−viにおけるv0の信頼性；及び
−エッジの区間(betweenness)のようなグラフ特性：上位の区間エッジには低い相互接続送信値が与えられ、より迅速な及び/又はより多くのイベントの伝搬を可能にする(受信側の頂点において止められずに他の頂点に速やかに到達する)；
−階層的なエッジには他のエッジよりも高い相互接続送信値が付与されてもよい。
【０１２９】
イベントが首尾良くviに到達する場合(viはイベント通知を受信し、イベントハンドラがトリガを受ける場合)：
−v0及びviの間のエッジに属する相互接続送信値は調整され、例えば、減少させられ；
−イベント通知に含まれるイベントモーメンタムは、イベント通知をviから隣へ送信する場合に増やされてもよい。
【０１３０】
viが受信したイベント通知を拒否する場合、すなわち、受信したイベント通知がviにおけるイベントハンドラにトリガを与えない場合：
−v0及びviの間のエッジに帰属する相互接続送信値は調整され、例えば、増やされ；
−viから隣へ送信される場合に、イベントモーメンタムは、イベント通知において減らされる。
【０１３１】
(例えば、到来するリンク加算イベント(IncomingLinkAddedEvent)、到来するリンク消去イベント(IncomingLinkDeletedEventなど)のように)相互接続毎に分類/イベントタイプ毎に1つの相互接続送信値が維持されるように、相互接続送信値は、特定のイベントタイプ/分類に特有であってもよい。
【０１３２】
図4は、本発明を実現し及び実施例の方法を実現するために使用されてよいデータストレージサーバのようなコンピューティングデバイスのブロック図である。コンピューティングデバイスは、コンピュータ処理ユニット(CPU)993、ランダムアクセスメモリ(RAM)995のようなメモリ、ハードディスク996のようなストレージを有する。選択的に、コンピューティングデバイスは、実施例のような他のコンピューティングデバイスと通信するためのネットワークインタフェース999も含む。例えば、実施例はそのようなコンピューティングデバイスのネットワークにより構成されてもよい。選択的に、コンピューティングデバイスは、リードオンリメモリ994、キーボードやマウスのような1つ以上の入力手段998、及び、1つ以上のモニタ997のような表示ユニットも含む。コンポーネントはバス992を介して互いに接続可能である。
【０１３３】
CPU993はコンピューティングデバイスを制御し、処理する動作を実行するように構成される。RAM995はCPU993により読み込まれ及び書き込まれるデータを保存する。ストレージユニット996は、例えば、不揮発性ストレージユニットであってもよく、データを保存するように構成される。
【０１３４】
ディスプレイユニット997は、コンピューティングデバイスにより保存されるデータの表現を表示し、コンピューティングデバイスに保存されるデータ、プログラム及びユーザの間でのやりとりを可能にするカーソル、ダイアログボックス及びスクリーンを表示する。入力手段998は、コンピューティングデバイスにデータ及び命令を、ユーザが入力することを可能にする。
【０１３５】
ネットワークインタフェース(ネットワークI/F)999は、インターネットのようなネットワークに接続され、ネットワークを介して、他のコンピューティングデバイス等に接続可能である。ネットワークI/F999は、ネットワークを介する他の装置から/へのデータの入力/出力を制御する。
【０１３６】
マイクロフォン、スピーカ、プリンタ、電力供給ユニット、ファン、ケース、スキャナ、トラックボール等のような他の周辺装置が、コンピューティングデバイスに含まれてもよい。
【０１３７】
データストレージシステムに対するコントローラは、図4に示されるようなコンピューティングデバイスにより実現される機能として具現化されてもよい。コントローラの機能は、単独のコンピューティングデバイスにより実現されもよいし、或いは、ネットワーク接続を介して協調する複数のコンピューティングデバイスの機能により実現されてもよい。実施例による装置は、図4に示されるように設定されるハードウェアを有するコンピューティングデバイスにより実現されてもよい。本発明を利用する方法は、図4に示されるようなコンピューティングデバイスにおいて実行されてもよいし、或いは、それにより実現されてもよい。1つ以上のそのようなコンピューティングデバイスは、実施例によるコンピュータプログラムを実行するように使用されてもよい。実施例を実現するために使用される又はそれを組み込むコンピューティングデバイスは、図4に示される全てのコンポーネントを有する必要はなく、それらのコンポーネントのうちの一部分により形成されてもよい。本発明を組み込む方法は、ネットワークを介して1つ以上のストレージサーバと通信する単独のコンピューティングデバイスにより実行されてもよい。
【０１３８】
ターゲットグラフのイベントプロパゲーション記録部は、ストレージユニット996に保存される処理命令と、処理命令を実行するプロセッサ993と、処理命令の実行中に情報オブジェクトを保存するRAM995とを有してもよい。
【０１３９】
リコンシリエーション要求マネジャは、ストレージユニット996に保存される処理命令と、処理命令を実行するプロセッサ993と、処理命令の実行中に情報オブジェクトを保存するRAM995とを有してもよい。
【０１４０】
ソースグラフのイベントプロパゲーション記録部は、ストレージユニット996に保存される処理命令と、処理命令を実行するプロセッサ993と、処理命令の実行中に情報オブジェクトを保存するRAM995とを有してもよい。
【０１４１】
ソースグラフのイベントプロパゲーション実行部は、ストレージユニット996に保存される処理命令と、処理命令を実行するプロセッサ993と、処理命令の実行中に情報オブジェクトを保存するRAM995とを有してもよい。
【０１４２】
頂点ペア比較部は、ストレージユニット996に保存される処理命令と、処理命令を実行するプロセッサ993と、処理命令の実行中に情報オブジェクトを保存するRAM995とを有してもよい。
【０１４３】
実施形態(ソフトウェア/方法/装置)は別々に議論されているが、一形態に関連して議論される特徴及びその結論は、他の形態にも等しく適用可能であることが、理解されるべきである。従って、方法的な特徴が議論される場合、装置の実施形態は、その特徴を実行する又は適切な機能を提供するように構成されるユニット又は装置を含むこと、及び、プログラムは、それらが実行されるコンピューティング装置に、方法の特徴を実行させるように構成されことが当然に認められる。
【０１４４】
上記の任意の形態において、様々な特徴は、1つ以上のプロセッサで洞阿するモジュール、ソフトウェア又はハードウェアにおいて実現されてよい。ある形態の特徴は他の任意の形態に適用されてもよい。
【０１４５】
本発明は、本願で説明される任意の方法を実行するためのコンピュータプログラム又はコンピュータプログラムプロダクト(関連製品)、及び、本願で説明される任意の方法を実行するためのプログラムを保存するコンピュータ読み取り可能な媒体も提供する。本発明を組み込むコンピュータプログラムは、コンピュータ読み取り可能な媒体に保存されてもよいし、或いは、インターネットウェブサイトから提供されるダウンロード可能な信号のような信号の形態であってもよいし、或いは、他の任意の形態をとってもよい。
【０１４６】
以上の実施の形態に関し、更に以下の付記を開示する。
【０１４７】
（付記1）
ターゲットデータグラフによりソースデータグラフをリコンサイルする方法であって、前記ソースデータグラフ及び前記ターゲットデータグラフの各々は、複数の頂点と複数の相互接続とを有し、前記複数の相互接続の各々は、前記複数の頂点のうちの2つの頂点を接続し及び接続される頂点の間の関係を表現し、当該方法は、
前記ターゲットデータグラフにおける一群の処理イベントの各々の1つ以上の実行のプロパゲーションパターンを表現するターゲットイベントプロパゲーション情報を生成するステップと、
前記ターゲットデータグラフにより前記ソースデータグラフをリコンサイルする要求を受信し、前記要求に応じて、前記ソースデータグラフにおける一群の処理イベントの各々の1つ以上の実行をトリガするステップと、
前記ソースデータグラフでトリガを受けた処理イベントの各実行の前記プロパゲーションパターンを表現するソースイベントプロパゲーション情報を生成するステップと、
前記ターゲットイベントプロパゲーション情報及び前記ソースイベントプロパゲーション情報を利用して、前記ソースデータグラフ及び前記ターゲットデータグラフの各々からの頂点を含む頂点ペアの類似性を評価するステップと、
を有する方法。
【０１４８】
（付記2）
前記ターゲットイベントプロパゲーション情報を生成すること及び/又は前記ソースイベントプロパゲーション情報を生成することは、個々のデータグラフにおける挙動を観察することにより、或いは、個々のデータグラフにおける挙動を表現する保存されたデータを読み込むことにより、前記処理イベントの実行の結果として結果の処理イベントが生じる各頂点を特定するデータを取得することを含む、付記1に記載の方法。
【０１４９】
（付記3）
当該方法は、前記一群の処理イベントの各々について：
前記ターゲットデータグラフ及び前記ソースデータグラフの各々において前記処理イベントを1回以上実行するステップと、
各々の実行について、前記複数の相互接続に沿って個々のデータグラフの頂点に前記処理イベントの実行を伝搬させるステップと、
前記処理イベントの実行が伝搬した各々の頂点に関し、結果の処理イベントを実行するか否かを判断し、前記処理イベントの実行を更に伝搬させるか否かを判断するステップとを更に有し、
前記ターゲットイベントプロパゲーション情報を生成すること及び/又は前記ソースイベントプロパゲーション情報を生成することは、前記処理イベントの実行の結果として結果の処理イベントが実行される前記又は各々の頂点を維持することを含む、付記2に記載の方法。
【０１５０】
（付記4）
当該方法は、前記一群の処理イベントの各々の実行について：
前記イベントプロパゲーション値を、前記処理イベントの実行に帰属させるステップを更に有し、
複数の相互接続の各々に沿って前記処理イベントの実行を伝搬させることは、処理イベントの実行によりアクセスされる前記又は各々の頂点のうち前記又は各々の隣接する頂点に、前記処理イベントの実行の通知を出力することを含み、前記通知は前記イベントプロパゲーション値を含み、
前記処理イベントの実行が伝搬する各頂点について：
結果の処理イベントを実行するように判断される場合には前記イベントプロパゲーション値を増加させ、結果の処理イベントを実行しないように判断される場合及び修正されたイベントプロパゲーション値が所定の閾値を超える場合には、前記イベントプロパゲーション値を減少させることにより、前記イベントプロパゲーション値を修正するステップと、
受信された前記イベント通知の送信元の頂点につながる相互接続以外の頂点への前記又は各々の相互接続に沿って、修正されたイベントプロパゲーション値とともに前記処理イベントの実行を伝搬させるステップとを有し、
前記ターゲットイベントプロパゲーション情報を生成すること及び/又は前記ソースイベントプロパゲーション情報を生成することは、前記又は各々の複数の頂点に関し、前記処理イベントの実行を特定するデータに関連する前記頂点について、修正されたイベントプロパゲーション値の記録を維持することを含む、付記3に記載の方法。
【０１５１】
（付記5）
前記ターゲットイベントプロパゲーション情報及び前記ソースイベントプロパゲーション情報を利用して、前記ソースデータグラフ及び前記ターゲットデータグラフの各々からの頂点を含む頂点ペアの類似性を評価するステップは、
結果の処理イベントが、同じ処理イベントの実行の結果として前記頂点ペアの各頂点において実行されたか否かを判断するステップと、
結果の処理イベントが、前記同じ処理イベントの実行の結果として前記頂点ペアの各頂点において実行されたことが確認された場合に、前記頂点ペアの類似性の更なる評価を実行するステップと、
結果の処理イベントが、前記同じ処理イベントの実行の結果として前記頂点ペアの各頂点において実行されなかったことが確認された場合に、類似性の更なる評価から前記頂点ペアを除外するステップと、
を含む、付記2に記載の方法。
【０１５２】
（付記6）
前記類似性の評価は、前記頂点ペアの各々に関し、前記一群の処理イベントの各々に関し、前記処理イベントの実行について、前記頂点に関する修正されたプロパゲーション値を加算し、2つの頂点の数値比較の基礎として、修正され加算されたプロパゲーション値を処理イベント毎に利用することを含む、付記4又は5に記載の方法。
【０１５３】
（付記7）
前記数値比較は、コサイン距離比較である、付記6に記載の方法。
【０１５４】
（付記8）
前記ターゲットデータグラフで実行される処理イベントのリストを取得するステップと、
最も頻繁に実行されるn個の処理イベントを特定するステップと、
特定されたn個の処理イベントを前記一群の処理イベントとして選択するステップと、
更に有する付記1に記載の方法。
【０１５５】
（付記9）
前記ソースデータグラフで実行される処理イベントのリストの時間スタンプされたリストを取得するステップと、
最近実行されたm個の処理イベントを特定するステップと、
特定されたm個の処理イベントを前記一群の処理イベントとして選択するステップと、
更に有する付記1に記載の方法。
【０１５６】
（付記10）
処理イベントの実行は、1つ以上のプロパティに従って特徴付けられ、前記1つ以上のプロパティの各々について同じ形式で特徴付けられる処理イベントの実行は、同じ処理イベントの実行であると判断される、付記1に記載の方法。
【０１５７】
（付記11）
前記頂点ペアの前記類似性の評価は、2つの頂点が意味的に同等である可能性を示す信頼度値を生成し、生成された信頼度値が意味的同等性閾値を超える場合、前記2つの頂点の間に同等性の関係を示す同等リンクを付加する、付記1に記載の方法。
【０１５８】
（付記12）
データストレージシステムのコントローラとして機能するように命令を実行するように構成されるプロセッサであって、前記データストレージシステムは、ターゲットデータグラフを保存するように構成されかつ前記ターゲットデータグラフ及びソースデータグラフの間でリコンシリエーション処理を実行するように構成され、
前記ソースデータグラフ及び前記ターゲットデータグラフの各々は、複数の頂点と複数の相互接続とを有し、前記複数の相互接続の各々は、前記複数の頂点のうちの2つの頂点を接続し及び接続される頂点の間の関係を表現し、当該コントローラは、
前記ターゲットデータグラフにおける一群の処理イベントの各々の1つ以上の実行のプロパゲーションパターンを表現するターゲットイベントプロパゲーション情報を生成するように構成されるターゲットグラフイベントプロパゲーション記録部と、
前記ターゲットデータグラフにより前記ソースデータグラフをリコンサイルする要求を受信するように構成されるリコンシリエーション要求マネジャと、
受信した要求に応じて、前記ソースデータグラフにおける一群の処理イベントの各々の1つ以上の実行をトリガするように構成されるソースグラフイベントプロパゲーション実行部と、
前記ソースデータグラフでトリガされた処理イベントの各実行の前記プロパゲーションパターンを表現するソースイベントプロパゲーション情報を生成するように構成されるソースグラフイベントプロパゲーション記録部と、
前記ターゲットイベントプロパゲーション情報及び前記ソースイベントプロパゲーション情報を利用して、前記ソースデータグラフ及び前記ターゲットデータグラフの各々からの頂点を含む頂点ペアの類似性を評価するように構成される頂点ペア比較部と、
を有するプロセッサ。
【０１５９】
（付記13）
前記ターゲットデータグラフとしてデータグラフを保存するように構成されるストレージユニットの分散ネットワークと、付記12に記載のプロセッサと、を有するデータストレージシステム。
【０１６０】
（付記14）
コンピュータプログラムを保存する非一時的な記憶媒体であって、前記コンピュータプログラムは、プロセッサにより実行される場合に、前記プロセッサを、データストレージシステムのコントローラとして機能させ、前記データストレージシステムは、ターゲットデータグラフを保存するように構成され、前記ターゲットデータグラフ及びソースデータグラフの間でリコンシリエーション処理を実行するように構成され、
前記ソースデータグラフ及び前記ターゲットデータグラフの各々は、複数の頂点と複数の相互接続とを有し、前記複数の相互接続の各々は、前記複数の頂点のうちの2つの頂点を接続し及び接続される頂点の間の関係を表現し、前記コントローラは、
前記ターゲットデータグラフにおける一群の処理イベントの各々の1つ以上の実行のプロパゲーションパターンを表現するターゲットイベントプロパゲーション情報を生成するように構成されるターゲットグラフイベントプロパゲーション記録部と、
前記ターゲットデータグラフにより前記ソースデータグラフをリコンサイルする要求を受信するように構成されるリコンシリエーション要求マネジャと、
受信した要求に応じて、前記ソースデータグラフにおける一群の処理イベントの各々の1つ以上の実行をトリガするように構成されるソースグラフイベントプロパゲーション実行部と、
前記ソースデータグラフでトリガされた処理イベントの各実行の前記プロパゲーションパターンを表現するソースイベントプロパゲーション情報を生成するように構成されるソースグラフイベントプロパゲーション記録部と、
前記ターゲットイベントプロパゲーション情報及び前記ソースイベントプロパゲーション情報を利用して、前記ソースデータグラフ及び前記ターゲットデータグラフの各々からの頂点を含む頂点ペアの類似性を評価するように構成される頂点ペア比較部と、
を有する、記憶媒体。
【符号の説明】
【０１６１】
101〜106：頂点
210：プロパゲーションマネジャ
220：イベントマネジャ
230：イベントハンドラ
240：頂点通信モジュール
300：サーバー通信モジュール
【図１】
2016100005.tif 000003
【図２】
2016100005.tif 000004
【図３】
2016100005.tif 000005
【図４】
2016100005.tif 000006