(57)【要約】      （修正有）【課題】データグラフを符号化するデータを格納するよう構成されるデータ記憶システムを提供する。【解決手段】データグラフは複数のリソース及び複数の相互接続を有し、複数の相互接続の各々は、複数のリソースのうちの２つのリソースを接続し、リンク付けされたリソース間の関係を表す。データ記憶システムは、データグラフを符号化するデータを格納するよう構成されるデータ記憶装置と、複数のイベントハンドラであって、各イベントハンドラは、複数のリソースのうちの１又は複数のリソースに関連付けられ、個々の関連付けられたリソース又はその各々において実行可能である、イベントハンドラと、個々の関連付けられたリソースにおいて複数のイベントハンドラのうち１又は複数のイベントハンドラの実行をトリガすることにより、複数のリソースのうちの１つのリソースにおける処理イベントに応答するよう構成されるイベント伝搬メカニズムと、を有する。【選択図】図１
2015156202.tif 000002
【特許請求の範囲】
【請求項１】
データグラフを符号化するデータを格納するよう構成されるデータ記憶システムであって、前記データグラフは複数のリソース及び複数の相互接続を有し、前記複数の相互接続の各々は、前記複数のリソースのうちの２つのリソースを接続し、前記リンク付けされたリソース間の関係を表し、
前記データ記憶システムは、
前記データグラフを符号化する前記データを格納するよう構成されるデータ記憶装置と、
複数のイベントハンドラであって、各イベントハンドラは、前記複数のリソースのうちの１又は複数のリソースに関連付けられ、個々の関連付けられた前記リソース又はその各々において実行可能である、イベントハンドラと、
個々の関連付けられたリソースにおいて前記複数のイベントハンドラのうち１又は複数のイベントハンドラの実行をトリガすることにより、前記複数のリソースのうちの１つのリソースにおける処理イベントに応答するよう構成されるイベント伝搬メカニズムと、
を有するデータ記憶システム。
【請求項２】
前記リソースにおける前記処理イベントは、前記複数のイベントハンドラのうち前記リソースに関連付けられたイベントハンドラによる、前記リソースを符号化するデータの変更である、請求項１に記載のデータ記憶システム。
【請求項３】
前記リソースにおける前記処理イベントは、前記リソースからの指示の結果として、前記複数のリソースの部分を形成する新しいリソースの生成である、請求項１に記載のデータ記憶システム。
【請求項４】
前記イベント伝搬メカニズムにより前記イベントハンドラがトリガされる前記リソース又はその各々は、前記複数の相互接続のうちの１又は複数の相互接続により前記処理イベントが生じたリソースに接続される、請求項１に記載のデータ記憶システム。
【請求項５】
前記イベント伝搬メカニズムは、前記複数のリソースの各々に割り当てられるローカルイベント伝搬マネジャであり、
各ローカルイベント伝搬マネジャは、第１の近隣ローカルイベント伝搬マネジャからイベント通知を受信し、前記の受信イベント通知に応答して、
前記ローカルイベント伝搬マネジャが割り当てられるリソースに関連付けられるイベントハンドラのうちの任意のイベントハンドラの実行をトリガするか否か、
前記受信イベント通知を前記第１の近隣ローカルイベント伝搬マネジャ以外の任意の残りの近隣ローカルイベント伝搬マネジャに送信するか否か、
を決定するよう構成され、
近隣ローカルイベント伝搬マネジャは、前記複数のローカルイベント伝搬マネジャのうち、前記複数の相互接続の中の１つの相互接続を介して前記ローカルイベント伝搬マネジャが割り当てられているリソースにリンク付けされたリソースに割り当てられたローカルイベント伝搬マネジャである、請求項１に記載のデータ記憶システム。
【請求項６】
前記複数のローカルイベント伝搬マネジャのうちの１つのローカルイベント伝搬マネジャは、前記ローカルイベント伝搬マネジャが割り当てられているリソース又は個々の近隣ローカルイベント伝搬マネジャのうちの１つが割り当てられているリソースにおける処理イベントに応答して、イベント通知を生成するよう構成される、請求項５に記載のデータ記憶システム。。
【請求項７】
前記イベント通知の生成は、イベント伝搬値を前記イベント通知の属性とすることを有し、
前記複数のローカルイベント伝搬マネジャの各々は、
前記の受信イベント通知を受信するのに応答して、前記ローカルイベント伝搬マネジャが割り当てられるリソースに関連付けられたイベントハンドラのうちの任意のイベントハンドラの実行をトリガすることを決定する場合、前記イベント伝搬値を増大し、及び／又は、
前記受信イベント通知を受信するのに応答して、前記ローカルイベント伝搬マネジャが割り当てられるリソースに関連付けられたイベントハンドラのうちの任意のイベントハンドラの実行をトリガしないことを決定する場合、前記イベント伝搬値を減少し、及び／又は、
前記イベント伝搬値の変更の後に、前記イベント伝搬値が所定の閾値より低い場合、前記近隣ローカルイベント伝搬マネジャのうちの任意の近隣ローカルイベント伝搬マネジャへ前記受信イベント通知を送信しないことを決定する、
ことにより前記受信イベント通知内の前記イベント伝搬値を変更するよう構成される、請求項６に記載のデータ記憶システム。
【請求項８】
前記ローカルイベント伝搬マネジャの各々は、前記ローカルイベント伝搬マネジャが割り当てられているリソースを別のリソースに接続する前記複数の相互接続の各々の属性である相互接続送信値を維持するよう構成され、
受信イベント通知が受信されたリソースにリンク付けする相互接続の属性である相互接続送信値は、前記イベント伝搬値が増大及び／又は減少される量を決定する、
請求項７に記載のデータ記憶システム。
【請求項９】
前記ローカルイベント伝搬マネジャが割り当てられているリソースを別のリソースにリンク付けする前記複数の相互接続の各々の属性である前記相互接続送信値の維持は、イベント通知が前記別のリソースに割り当てられているイベント伝搬マネジャから受信されると、
前記受信イベント通知を受信するのに応答して、前記ローカルイベント伝搬マネジャが割り当てられるリソースに関連付けられたイベントハンドラのうちの任意のイベントハンドラの実行をトリガすることを決定する場合、前記別のリソースにリンク付けする相互接続の属性である前記相互接続送信値を増大し、及び／又は、
前記受信イベント通知を受信するのに応答して、前記ローカルイベント伝搬マネジャが割り当てられるリソースに関連付けられたイベントハンドラのうちの任意のイベントハンドラの実行をトリガしないことを決定する場合、前記別のリソースにリンク付けする相互接続の属性である前記相互接続送信値を減少する、
ことを有する、請求項８に記載のデータ記憶システム。
【請求項１０】
前記イベント通知の生成は、前記イベント通知が応答して生成される前記処理イベントに依存して、イベント種類の所定のセットから前記イベント通知にイベント種類を割り当てることを有し、
前記ローカルイベント伝搬マネジャの各々は、前記ローカルイベント伝搬マネジャが割り当てられているリソースを別のリソースにリンク付けする前記複数の相互接続の各々について、イベント種類の前記所定のセットからのイベント種類毎に１つの相互接続送信値を維持するよう構成される、
請求項９に記載のデータ記憶システム。
【請求項１１】
前記イベント伝搬メカニズムは処理マネジャであり、前記処理マネジャは、
記録された候補伝搬リンクを識別するよう構成される候補伝搬リンク識別モジュールであって、前記候補伝搬リンクは前記複数のリソースのうち第２のリソースから第１のリソースまでであり、前記第２のリソースに関連付けられるイベントハンドラ及び１又は複数のトリガ条件と関連付けられる、候補伝搬リンク識別モジュールと、
前記複数のリソースのうちの１つのリソースにおける処理イベントに応答して、前記候補伝搬リンク識別モジュールを参照して、前記処理イベントが発生したリソースが前記第１のリソースである記録された候補伝搬リンクを識別し、前記識別した記録された候補伝搬リンクの各々について、前記１又は複数のトリガ条件が満たされるか否かを決定し、前記１又は複数のトリガ条件が満たされると決定された場合、前記候補伝搬リンクの前記第２のリソースにおいて、前記候補伝搬リンク内の前記第２のリソースに関連付けられたイベントハンドラの実行をトリガするよう構成されるイベントハンドラトリガモジュールと、
を有する、請求項１に記載のデータ記憶システム。
【請求項１２】
前記処理イベントは、前記複数のイベントハンドラのうち前記リソースに関連付けられたイベントハンドラの実行である、請求項１１に記載のデータ記憶システム。
【請求項１３】
個々の関連するリソースにおける、前記複数のイベントハンドラのうちの１つのイベントハンドラの実行のために、伝搬パスとして、
前記実行されたイベントハンドラ及び前記個々の関連するリソースと、
前記個々の関連するリソースにおいて前記実行されたイベントハンドラの実行に応答して、前記イベントハンドラトリガモジュールによりトリガされた任意のイベントハンドラと、
前記トリガされたイベントハンドラの各々の実行に応答して、前記イベントハンドラトリガモジュールによりトリガされた任意のイベントハンドラと、
前記トリガされたイベントハンドラの各々について、それぞれ前記トリガされたイベントハンドラが実行されたリソースと、
を識別するレコードを維持するよう構成される伝搬パス記録モジュール、
を更に有する請求項１０に記載のデータ記憶システム。
【請求項１４】
適応再配置モジュールであって、前記適応再配置モジュールは、前記複数のリソースのうちの特定のリソースを、前記複数のデータ記憶サーバのうちの第１のデータ記憶サーバから前記複数のデータ記憶サーバのうちの第２の記憶サーバに再配置するよう構成され、前記適応再配置モジュールは、前記特定のリソースを有する伝搬パス内に共同で記録されるリソースを格納する前記複数のデータ記憶サーバのうちの前記１又は複数のデータ記憶サーバの各々の同一性に基づき、前記第２のデータ記憶サーバの同一性を決定するよう構成される適応再配置モジュール、
を更に有する請求項１３に記載のデータ記憶システム。
【請求項１５】
データグラフを符号化するデータを格納するよう構成されるデータ記憶システムにおいて実行される方法であって、前記データグラフは複数のリソース及び複数の相互接続を有し、前記複数の相互接続の各々は、有向性であり、前記複数のリソースのうちの２つのリソースをリンク付けし、前記リンク付けされたリソース間の関係を表し、前記データ記憶システムは、それぞれ前記データグラフの一部を符号化するデータを格納するよう構成される複数のデータ記憶サーバを有し、
前記方法は、
複数のイベントハンドラを格納するステップであって、各イベントハンドラは、前記複数のリソースのうちの１又は複数のリソースに関連付けられて格納され、前記個々の関連付けられたリソースにおいて実行可能である、ステップと、
個々の関連付けられたリソースにおける前記複数のイベントハンドラのうちの１又は複数のイベントハンドラの実行をトリガすることにより、前記複数のリソースのうちの１つのリソースにおける処理イベントに応答するステップと、
を有する方法。
【請求項１６】
１又は複数のコンピュータプログラムであって、ネットワークを介して互いに通信するよう構成される複数のデータ記憶サーバにより実行されると、前記複数のデータ記憶サーバを、データグラフを符号化するデータを格納するよう構成されるデータ記憶システムとして機能させ、前記データグラフは、複数のリソース及び複数の相互接続を有し、前記複数の相互接続の各々は、前記複数のリソースのうちの２つのリソースを接続し、前記リンク付けされたリソース間の関係を表し、
前記データ記憶システムは、
前記データグラフを符号化する前記データを格納するよう構成されるデータ記憶装置と、
複数のイベントハンドラであって、各イベントハンドラは、前記複数のリソースのうちの１又は複数のリソースに関連付けられ、前記個々の関連付けられたリソースの各々において実行可能である、イベントハンドラと、
個々の関連付けられたリソースにおいて前記複数のイベントハンドラのうちの１又は複数のイベントハンドラの実行をトリガすることにより、前記複数のリソースのうちの１つのリソースにおける処理イベントに応答するよう構成されるイベント伝搬メカニズムと、
を有する、コンピュータプログラム。
【請求項１７】
コンピュータプログラムであって、コンピューティング装置により実行されると、前記コンピューティング装置に、データグラフを符号化するデータを格納するよう構成されるデータ記憶システムにおいて実行される処理を実行させ、前記データグラフは複数のリソース及び複数の相互接続を有し、前記複数の相互接続の各々は、有向性であり、前記複数のリソースのうちの２つのリソースをリンク付けし、前記リンク付けされたリソース間の関係を表し、前記データ記憶システムは、それぞれ前記データグラフの一部を符号化するデータを格納するよう構成される複数のデータ記憶サーバを有し、
前記処理は、
複数のイベントハンドラを格納するステップであって、各イベントハンドラは、前記複数のリソースのうちの１又は複数のリソースに関連付けられて格納され、前記個々の関連付けられたリソース又はその各々において実行可能である、ステップと、
個々の関連付けられたリソースにおいて前記複数のイベントハンドラのうちの１又は複数のイベントハンドラの実行をトリガすることにより、前記複数のリソースのうちの１つのリソースにおける処理イベントに応答するステップと、
を有する、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ記憶の分野に係り、特に、グラフデータベース内のデータ修正のような処理イベントに応答するメカニズムに関連する。
【背景技術】
【０００２】
関係型データベースは、データを行と列で格納する。行及び列は、データを格納する前に定める必要のあるテーブルを構成する。テーブルの定義及びこれらのテーブルに含まれるデータ間の関係は、スキーマと称される。関係型データベースは、固定スキーマを用いる。グラフデータベースは、データをノード及びアークの形式で格納することにより、関係型データベースの重要な拡張を表す。ここで、ノードはエンティティ又はインスタンスを表し、アークは任意の２個のノード間の特定種類の関係を表す。無向グラフでは、ノードＡからノードＢへのアークは、ノードＢからノードＡへのアークと同じであると考えられる。有向グラフでは、２つの方向は別のアークとして扱われる。
【０００３】
グラフデータベースは、概して２つの主な種類に分類できる広範な種類の異なるアプリケーションで用いられる。第１の種類は、知的意思決定支援及び自己学習のようなクラス記述子の大規模な集合体（「知識ベースアプリケーション」と称される）を有する複雑な知識ベースシステムを有する。第２の種類は、社会的データ及びビジネスインテリジェンスのようなトランザクションデータに対するグラフ検索の実行を含むアプリケーション（「トランザクションデータアプリケーション」と称される）を有する。多くのアプリケーションは、両方の種類を表し得る。しかしながら、大部分のアプリケーションは、主に知識ベース又はトランザクションデータアプリケーションのいずれかで特徴付けられ得る。グラフデータベースは、種々の分野の膨大な構造化又は非構造化データを格納できる大規模な「意味ネットワーク」を維持するために用いることができる。意味ネットワークは、知識表現の形式として用いられ、コンセプトを表すノード及びコンセプト間の意味関係を表すアークを有する有向グラフである。
【０００４】
ウェブブラウザは、処理イベントを扱うよう構成される。イベントは、目標において発火した後、文書ルートに到達するまで又はプログラマが明示的に伝搬を停止するまで、文書を通じてバブリングし、続いて、要素のネスティングにより階層構造が構築される。バブリング経路に沿って、イベントハンドラはイベントに反応できる。ウェブプログラマは、反応連鎖を調整するために、このメカニズムを広く利用する。テーブル要素では、行に結合するハンドラは局所的変化に反応し、テーブル自体のハンドラは、バブリングした行イベントを処理し、次に相応して全テーブルレベルで反応できる。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、グラフデータベースは、より広く実装され、グラフデータモデルに適用できるデータ処理手順が探求されている。データエンティティのネットワーク構造を、電子商取引アプリケーションのデータバックエンドとして考える。新しいショッピングカートの生成によりイベント、「ショッピングカート」内に「アイテム」がある、が生じるかも知れない。論理的に、アプリケーション全体に亘るデータの移動及び処理が生じ得る。例えば、関心のあるエンティティは、在庫管理、受注処理、リアルタイム分析、等を有し得る。しかしながら、この効果を支援するために、適切に構成されるデータ記憶システムが必要である。
【課題を解決するための手段】
【０００６】
開示の実施形態は、データグラフを符号化するデータを格納するよう構成されるデータ記憶システムであって、前記データグラフは複数のリソース及び複数の相互接続を有し、前記複数の相互接続の各々は、前記複数のリソースのうちの２つのリソースを接続し、前記リンク付けされたリソース間の関係を表し、前記データ記憶システムは、前記データグラフを符号化する前記データを格納するよう構成されるデータ記憶装置と、複数のイベントハンドラであって、各イベントハンドラは、前記複数のリソースのうちの１又は複数のリソースに関連付けられ、個々の関連付けられた前記リソース又はその各々において実行可能である、イベントハンドラと、個々の関連付けられたリソースにおいて前記複数のイベントハンドラのうち１又は複数のイベントハンドラの実行をトリガすることにより、前記複数のリソースのうちの１つのリソースにおける処理イベントに応答するよう構成されるイベント伝搬メカニズムと、を有するデータ記憶システムを含む。
【図面の簡単な説明】
【０００７】
本発明の好適な特徴は、単なる例として添付の図面を参照して以下に説明される。
【図１】処理イベントが本発明を具現化するデータ記憶システム内のデータグラフに及ぼす効果を示す。
【図２】本発明の一実施形態におけるシステムアーキテクチャを示す。
【図３】本発明を具現化する、図２のシステムアーキテクチャの代替を示す。
【発明を実施するための形態】
【０００８】
＜概要＞
本発明の実施形態は、データグラフを符号化するデータを格納するよう構成され得るデータ記憶システムを有する。データグラフは、複数のリソースと、複数の相互接続と、を有する。複数の相互接続の各々は、複数のリソースの中の２つのリソースを接続し、リンク付けされたリソース間の関係を表す。データ記憶システムは、データグラフを符号化するデータを格納するよう構成されるデ―タ記憶装置と、それぞれ複数のリソースの中の１又は複数のリソースに関連付けられ該又は個々の関連付けられたリソースで実行可能な複数のイベントハンドラと、個々の関連するリソースで複数のイベントハンドラの中の１又は複数のイベントハンドラの実行をトリガすることにより、複数のリソースの中の１つのリソースで処理イベントに応答するよう構成されるイベント伝搬メカニズムと、を有する。
【０００９】
有利なことに、このようなデータ記憶システムは、処理イベント、例えばリソースに含まれるデータ値を変更する書き込みアクセスが、該処理イベント自体の実行に含まれるのみならず、該処理イベントに処理を実行させる。データ記憶システム内にイベントハンドラを含むこと、及びイベント伝搬メカニズムは、単一のイベントが一連の処理イベント、イベントハンドラの実行を生じるために必要な機能を提供する。イベントハンドラの実行は、イベントハンドラを実行するときに、リソースにあるグラフデータを変更しても良く、追加イベントハンドラの実行の形式で更なる処理イベントを引き起こしても良い。
【００１０】
データグラフは、格納データの明示であり、ユーザ及びイベントハンドラの両者に又はデータ記憶システム内部の他の処理に格納データを表現する手段である。データグラフは、トリプル、例えばＲＤＦトリプルとして符号化され、離粗＾巣は主語として命名されるトリプルにより定められても良い。代替又は追加で、データはキー値格納で格納され、トリプルはリソースを定める追加データ（例えば、メタデータ）が格納される記憶場所をインデックス付けするキーとして機能しても良い。
【００１１】
トリプルは、グラフデータを複数の主語−述語−目的語の表現として特徴付けることにより、グラフデータのエンコードを提供する。この文脈では、主語及び述語は、グラフデータのグラフノード／リソースであり、頂点、リソース、インスタンス又はコンセプトのようなエンティティであり、述語は、主語と目的語の間の関係の表現である。述語は、目的語への特定の種類のリンクを提供することにより、主語に関する何かを断言する。例えば、主語は、（例えば、ＵＲＩを介して）ウェブリソースを示しても良く、述語はリソースの個々の特性、特徴又は状況を示し、目的語は、該特性、特徴又は状況のインスタンスを示す。言い換えると、トリプルステートメントの集合は、元来、方向性グラフデータを表す。ＲＤＦ標準は、このようなトリプルの形式化された構造を提供する。
【００１２】
本願明細書では、機能がリソース又はグラフデータの特定の他の要素で行われると記載される場合、該機能は実際には該グラフ要素を符号化するデータを含むデータに対して実行されていると想定する。例えば、イベントハンドラがリソースにおいて実行可能である又は実行されたと定められる場合、該イベントハンドラは、実行され、該リソースを符号化するデータに対する読み出し及び／又は書き込み動作を含む処理又は命令セットである。リソースは、ノードとして表されても良い。
【００１３】
用語リソースは、本願明細書を通じて用語頂点により置き換えられても良く、グラフ内のノード、つまりエッジ若しくは相互接続により他のグラフ要素に接続されるグラフ要素として考えられる。
【００１４】
相互接続は、リソース間のラベル付けされた関係である。相互接続は、有向性であっても良い。第１のリソースから第２のリソースへの相互接続は、第１及び第２のリソース間の論理的接続を表し又は定め、該相互接続に割り当てられるラベルは、該論理的関係の形式を定める。例えば、第１のリソースは主語リソースと考えられても良く、第２のリソースは目的語リソースと考えられても良い。相互接続のラベルは主語リソースの特性を識別し、目的語リソースの値は、主語リソースの属性となり得る該特性の範囲又は値を定める。代替で、相互接続は、エッジと表されても良い。述語は、相互接続に割り当てられるラベルを定めるために用いられ得る用語である。
【００１５】
データ記憶装置は、１又は複数のデータ記憶サーバにより具現化されても良い。冗長の要求により及び／又はデータグラフのサイズにより必要とされるように、データグラフを符号化するデータは、１より多いデータサーバに渡り分散されても良い。各データ記憶サーバは、自身に格納されたデータに対する範囲クエリを実行するよう構成される管理モジュールを有しても良い。したがって、異なる記憶サーバに格納されたデータは、同時にアクセス可能である。さらに、各データ記憶サーバは、共同でイベントハンドラを実行するよう構成されるプロセッサ及びメモリを有しても良い。１より多いデータ記憶サーバを有する実施形態では、１より多いデータ記憶サーバは、データグラフ全体へのアクセス可能性を提供する共有管理機能を実現するために協働するよう構成されても良い。各データ記憶サーバは、格納すべきデータグラフの領域を割り当てられても良い。代替で、データ記憶サーバへのデータの割り当ては、符号化グラフデータの順序に従って実行されても良い。
【００１６】
イベントハンドラは、プロセッサにより実行されると、処理を実行させる処理又は命令セットであっても良い。実行中のイベントハンドラは、イベントハンドラが実行されるリソースを符号化するデータに対して行われている読み出し又は書き込みアクセスを有しても良い。処理は、格納データの変更、及び／又は実行を生じる処理イベントの特性を含み得る要因に基づくデータを変更するか否かの検討を有しても良い。イベントハンドラは、データグラフ内のリソースとして格納され又はそれにより表されても良い。
【００１７】
イベントハンドラとリソースとの間の関連付けは、登録、又はイベントハンドラとリソースとの間の特定の他の明示的リンクの形式であっても良い。例えば、イベントハンドラは、イベントハンドラが登録されたリソースのリストと一緒に各条されても良く、イベントハンドラは、イベントハンドラが登録される該リソースにおいて実行するよう構成される。イベントハンドラが登録されるリソースの範囲は、例えば、イベントハンドラ及びリソースが登録されるデータ記憶サーバにより決定されても良い。一実装では、イベントハンドラは、イベントハンドラがデータ記憶サーバの観点で同一場所に配置されるリソースにのみ登録されても良い。イベントハンドラは、特性の種類の処理イベントに応答して実行するよう構成されても良い。例えば、データハンドラは、処理イベント種類の所定のセットの各々について、データ記憶サーバ毎に提供されても良い。
【００１８】
イベント伝搬メカニズムは、個々の関連付けられたリソースにおける１又は複数のイベントハンドラの実行をトリガすることにより、処理イベントに応答するよう構成される。さらに、イベント伝搬メカニズムは、他のリソースにおけるイベントハンドラの更なる実行をトリガすることにより、リソースにおけるイベントハンドラの実行に応答するよう構成されても良い。このように、単一の処理イベントは、伝搬し、該単一の処理イベントにより変更されるリソース以外のリソースにおいて効果（イベントハンドラの実行）を生じることができる。
【００１９】
処理イベントは、新しいリソースの生成及び／又は格納データ内の既存のオブジェクト／範囲／値の変更を含むデータ変更イベントであっても良い。処理イベントは、複数のイベントハンドラのうちの１つの実行、及び／又はデータグラフの外部のエンティティによる特定のリソースに対する読み出し／書き込み要求に関連する処理を有しても良い。処理イベントは、例えば、分析アプリケーションによりリソースに対して行われているアクセスを有しても良い。処理イベントは、リソース（又はリソースを符号化するデータの少なくとも一部）を読み出す試みであっても良い。例えば、リソースの遅延更新を実行するための処理において、つまり必要なときにのみリソースを更新／リフレッシュする。
【００２０】
初期処理イベントに応答したリソースにおけるイベントハンドラのトリガは、パス（初期処理イベントにより開始されたイベント通知を受信したリソース間の一連の相互接続、又は初期処理イベントの結果としてイベントハンドラがトリガされたリソース間の一連の相互接続）により表すことができる。特定の初期処理イベントに応答したイベントハンドラのトリガは、停止されても良い。つまり、データ記憶システムは、イベントを伝搬する更なるリソースが存在しないとき、又は伝搬処理自体により若しくは代替でシステムレベルイベントにより停止が明示的に呼び出されるとき、特定の初期処理イベントに応答する将来のイベントハンドラのトリガを除外しても良い。
【００２１】
例えば、リソースにおける処理イベントは、複数のイベントハンドラの中でも、リソースに関連付けられたイベントハンドラによる、リソースを符号化するデータの変更であっても良い。
【００２２】
例えば、イベント伝搬メカニズムは、個々の関連付けられたリソースにおいて複数のイベントハンドラの中の更なるイベントハンドラの実行をトリガすることにより、個々の関連付けられたリソースにおいて複数のイベントハンドラの中の１つのイベントハンドラの実行に応答するよう構成される。
【００２３】
有利なことに、外部書き込みアクセスのような初期処理イベントに応答して実行されても良い、イベントハンドラにより実行されるデータ変更に応答することにより、イベントに対する応答は、データグラフ内の経路に沿って伝搬する。経路は、リソース間の相互接続により、及び／又はリソース間の関係（interest）の登録により、定められても良い。例えば、処理イベントが第１のリソースにおいて生じ、第２のリソースが第１のリソース内の登録された関係である場合（登録された関係は、イベント伝搬メカニズムに格納されても良く、ユーザ若しくはデータベース管理者により入力されても良い）、イベント伝搬メカニズムは、第２のリソースにおけるイベントハンドラの実行をトリガし、又は第２のリソースにおいてイベントハンドラを実行するか否かを決定する処理を少なくとも実行するよう構成されても良い。
【００２４】
処理イベントは、多数の形式のうちの１つを取っても良く、イベント伝搬メカニズムの応答は、該イベント伝搬メカニズムが応答している処理イベントの形式にある程度依存しても良い。処理イベントは、イベント伝搬メカニズムにより、所定の複数のカテゴリ又は種類のうちの１つとして分類されても良い。所定の複数のカテゴリは、特定の実装シナリオに依存して選択されても良い。特に、リソースにおける処理イベントは、リソースからの指示の結果として、複数のリソースの部分を形成する新しいリソースの生成であっても良い。例えば、別のリソースからの指示の結果としての新しいリソースの生成は、新しいリソースと共に別のリソースをインスタンス化することを有しても良い。このような例では、供給される指示は、新しいリソースの構造及び／又はその属性である特性についてのテンプレートである。別のリソースからの指示の結果としての新しいリソースの生成の更なる例として、別のリソースによる新しいリソースの生成は、別のリソースによる生成エンティティに供給されるパラメータに基づいても良い。言い換えると、別のリソース及び新しいリソースは、祖先／子孫関係を有する。祖先及びその子孫は、（「自然エンティティ」内で複製されるような）同じ種類を有しても良く、又はそれらは異なるが「含有」エンティティ（つまり、病院内の患者、レシピ内の材料、掲示板内の郵便配達員、等）であっても良い。
【００２５】
新しいリソースの生成は、多くの実装では、データグラフ内のどこかで論理的影響を有する種類の処理イベントである。したがって、イベント及びその影響をグラフ全体に広めるメカニズムを提供することは有利である。
【００２６】
特定のリソースにおける処理イベントに応答してイベントハンドラが実行されるリソースは、特定のリソースに論理的にリンク付けされても良い。したがって、イベントハンドラがイベント伝搬メカニズムによりトリガされるリソース又はリソースの各々は、複数の相互接続の中の１又は複数の相互接続により処理イベントが引き起こされたリソースに接続される。
【００２７】
また、１又は複数のリソースにおけるこれらのイベントハンドラの実行は、１又は複数のリソースへの相互接続により接続されるリソースにおけるイベントハンドラの実行をトリガしても良い。
【００２８】
イベントハンドラのリソースとの関連付けは、イベントハンドラをリソースにおいてトリガするか否かを決定するために、イベント伝搬メカニズムにより適用可能な１又は複数の条件と関連付けられて格納されても良い。例えば、関連付けられた条件は、イベントハンドラが応答して実行される処理イベントの種類である。代替又は追加で、イベントハンドラのカテゴリが存在しても良く、関連付けられた条件は、問題のイベントハンドラが応答して実行される実行中のイベントハンドラの種類であっても良い。
【００２９】
リソースにおける処理イベントに対する応答は、複数のイベントハンドラのうちのどれが該リソースに接続されたリソースに関連付けられているかを識別すること、及び各々の識別したイベントハンドラについて、該リソースにリンク付けされたリソース又はリソースの各々においてイベントハンドラをトリガするか否かを決定すること、を有しても良い。
【００３０】
イベント伝搬メカニズムは、別のリソースにおける処理イベントに応答して、あるリソースにおいてイベントハンドラをトリガするよう構成されても良い。例えば、あるリソースは、イベント伝搬メカニズムにより記録された、登録された関係又は別のリソース内での関連を有しても良い。この登録された関係又は関連は、該あるリソースにおいてイベントハンドラのトリガを生じる。
【００３１】
代替又は追加で、イベント伝搬メカニズムは、（複数のリソースの中の）特定のリソースにおける処理イベントに応答して、（複数のイベントハンドラの中の）該特定のリソースに関連付けられたイベントハンドラの実行をトリガするよう構成されても良い。このイベントハンドラの実行は、他のリソースにおける更なるイベントハンドラの実行をトリガしても良い。
【００３２】
イベント伝搬メカニズムは、データベース管理レベル、例えば処理イベントを監視し、及びデータグラフ全体について、処理イベントに応答してどのリソースにおいてどのイベントハンドラをトリガすべきかを決定できる処理マネジャで実行される集中型機能であっても良い。代替で、処理マネジャはデータ記憶サーバ毎に設けられても良い。これは、処理マネジャが設けられるデータ記憶サーバに格納されたリソースについてのみであるが、処理イベントに応答してどのリソースにおいてどのイベントハンドラをトリガすべきかを決定できる。更なる代替として以下に定めるように、イベント伝搬メカニズムは、リソース毎に設けられる機能により実現されても良い。例えば、イベント伝搬メカニズムは、複数のリソースの各々に割り当てられるローカルイベント伝搬マネジャであっても良い。各ローカルイベント伝搬マネジャは、第１の近隣ローカルイベント伝搬マネジャからイベント通知を受信し、受信イベント通知に応答して、ローカルイベント伝搬マネジャが割り当てられるリソースに関連付けられるイベントハンドラのうちの任意のイベントハンドラの実行をトリガするか否か、受信イベント通知を第１の近隣ローカルイベント伝搬マネジャ以外の任意の残りの近隣ローカルイベント伝搬マネジャに送信するか否か、を決定するよう構成される。近隣ローカルイベント伝搬マネジャは、複数のローカルイベント伝搬マネジャの中で、複数の相互接続の中のある相互接続を介してローカルイベント伝搬マネジャが割り当てられているリソースにリンク付けされたリソースに割り当てられたローカルイベント伝搬マネジャである。
【００３３】
上述の例では、ローカルイベント伝搬マネジャは、複数のリソースの各々について設けられる。例えば、各ローカルイベント伝搬マネジャは、別個に設定可能である。このように、近隣リソースにおける特定の処理イベントに応答してリソースにおいてイベントハンドラを実行するか否かを決定する条件は、リソースの特定の構造及び使用特性の観点から生成され得る。リソースに割り当てられているローカルイベント伝搬マネジャは、格納された条件及び命令、又はリソースに適用可能な他の属性の形式を取っても良い。決定又は他の機能を実行するために、格納された命令はプロセッサで実行されても良い。
【００３４】
ローカルイベント伝搬マネジャは、どのリソースがイベントハンドラ実行の主体となるべきかについての予め構成されたマッピングを持つ必要を有しないで、処理イベントに対する応答として確立されるべき１又は複数の伝搬パス（つまり、相互接続により接続されたリソースにおける一連のイベントハンドラの実行）のためのメカニズムを提供する。ローカルイベント伝搬マネジャは、１又は複数の伝搬パスがオンザフライで確立され得るメカニズムを提供する。
【００３５】
有利なことに、このような伝搬メカニズムは、イベントハンドラの監視されないイベント連鎖及び連鎖反応を可能にする。さらに、局所化された伝搬イベント管理は、各グラフ頂点について提供されるので、中央イベント管理を除去することにより分散処理を向上する。イベント伝搬に関連する意志決定は個々のリソース及び個々の相互接続レベルでオンザフライで実行されるので、所定のアプリケーションロジックの必要は除去される。したがって、データベースのシステムとの相互運用性が向上する。さらに、初期モデル化及び実装モデルの硬直性に関連するオーバヘッドは低減される。
【００３６】
ローカルイベント伝搬マネジャアプローチは、高い柔軟性を必要とする実装において、及び完全な初期モデル化が不可能な場合に、特に有利である。周期的な改造は、局所的な最適を回避するために必要かもしれない。改造は、例えば、イベントが伝搬し得る複数の候補が存在するとき、特定の無作為を導入するためにこれらの候補を再順序付けすることを有しても良い。したがって、イベント伝搬は、異なる時間において異なる経路に対して実行され得る。ローカルイベント伝搬マネジャアプローチの代表的な利点は、リソースに基づくモデル化及びプログラミングに適応するフレームワークを提供することである。
【００３７】
上述のように、特定のリソースに割り当てられたローカルイベント伝搬マネジャの役割は、（処理イベント、又は近隣リソースにおけるイベントハンドラの実行に応答して）特定のリソースにおいてイベントハンドラを実行するか否かを決定するだけではなく、伝搬が他の近隣リソースまで継続すべきか否かを決定することも含む。イベント通知は、ローカルイベント伝搬マネジャが、処理イベント及び／又はイベントハンドラの実行が生じたことを互いに通知するメカニズムである。イベント通知は、ローカルイベント伝搬マネジャにイベント通知に対してどのように応答するかを決定させる詳細事項を有しても良い。例えば、イベント通知は、イベント通知が応答して生成された処理イベントの種類／カテゴリに従って分類されても良い。更なる詳細事項は、イベントが応答して生成された処理イベントの場所を有しても良い。
【００３８】
イベント通知の最初の生成は、ローカルイベント伝搬マネジャにより実行されても良い。例えば、複数のローカルイベント伝搬マネジャの中の１つのローカルイベント伝搬マネジャは、該ローカルイベント伝搬マネジャが割り当てられているリソース又は個々の近隣ローカルイベント伝搬マネジャのうちの１つが割り当てられているリソースにおける処理イベントに応答して、イベント通知を生成するよう構成される。
【００３９】
イベント通知の生成及びその後の近隣ローカルイベント伝搬マネジャへの受信及び送信は、初期処理イベントの１又は複数の伝搬パスを定める。イベント通知は、ローカルイベント伝搬マネジャにおいて受信される度に、何回も複製され、近隣ローカルイベント伝搬マネジャへ送信されても良い。このように、伝搬パスは、１より多くの経路に分割され得る。
【００４０】
データ記憶システムは、伝搬パスの長さを制御するよう構成されても良い。例えば、イベント通知はカウントで開始し、各ローカルイベント伝搬マネジャは、イベント通知を近隣ローカルイベント伝搬マネジャへ送信する前に該カウントを１だけ減ずることにより、受信イベント通知を変更するよう構成されても良い。このように、イベントが伝搬できる相互接続の最大数は、イベント通知の開始において確立される。
【００４１】
伝搬パスの長さを制御する代替のメカニズムとして、イベント通知の生成は、イベント伝搬値をイベント通知の属性とすることを有しても良く、複数のローカルイベント伝搬マネジャの各々は、以下により受信イベント通知内のイベント伝搬値を変更するよう構成される。
・受信イベント通知の受信に応答して、ローカルイベント伝搬マネジャが割り当てられているリソースに関連するイベントハンドラのうちの任意のイベントハンドラの実行をトリガすることが決定された場合、イベント伝搬値を増大する。
・及び／又は、受信イベント通知の受信に応答して、ローカルイベント伝搬マネジャが割り当てられているリソースに関連するイベントハンドラのうちの任意のイベントハンドラの実行をトリガしないことが決定された場合、イベント伝搬値を減少する。
・及び／又は、イベント伝搬値の変更の後に、イベント伝搬値が所定の閾値より小さくなった場合、受信イベント通知を近隣ローカルイベント伝搬マネジャのうちのいずれにも送信しないことを決定する。
【００４２】
有利なことに、イベント通知の属性である初期値が増大又は減少される上述の手順は、イベントがリソースと関係なくなるとき、（イベント通知を介して）イベントの伝搬を停止するメカニズムを提供する。有効なことに、イベント通知がリソースにおいて受信され、受信リソースにおいてイベントハンドラをトリガしない度に、更なるリソースへ（つまり、更なるリソースのイベント伝搬マネジャへ）転送されるイベント通知の能力は、低減される。イベント通知がイベントハンドラをトリガしないパスに沿って存在するリソースが多すぎると、特定の伝搬パスに終わりをもたらす。他方で、受信されイベントハンドラのトリガに成功するイベント通知は、イベントハンドラが相互接続の観点で伝搬できる可能な距離を増大し得る。
【００４３】
イベント伝搬値は、処理イベントのカテゴリ／種類、及び処理イベントが生じるリソースの特性を含む要因により決定されても良い。
【００４４】
リソースにおけるイベント伝搬値に適用される増大／減少の量は、データグラフ内の全てのリソースに渡って一定である増分増大又は減少であっても良い。抱いたｉｇで、特定のリソースはそれらの重要性及びイベント伝搬値に与える可能性のある影響の観点から重み付けされても良い。例えば、ローカルイベント伝搬マネジャの各々は、ローカルイベント伝搬マネジャが割り当てられているリソースを別のリソースにリンク付けする複数の相互接続の各々の属性である相互接続送信値を維持するよう構成され、受信イベント通知が受信されたリソースにリンク付けする相互接続の属性である相互接続送信値は、イベント伝搬値が増大及び／又は減少される量を決定する。
【００４５】
例えば、階層型データグラフでは、リソースが属する階層レベルは、相互接続送信値を決定する際の要因であっても良い。リソースが階層構造の上位にあるほど、相互接続送信値は高くなっても良い。特定のリソースに接続する相互接続の属性である相互接続送信値は、等しくても良く、或いは代替で、最初は等しく設定されるが、次に使用に依存して異なるように変更されても良い。
【００４６】
そうご送信値は、構造要因により（つまり、リソース及びそれらの相互接続により）決定されても良く、又は問題となっているリソースにおけるイベントハンドラの使用履歴により決定されても良い。代替で、構造要因及び使用履歴は、両方とも、特定の相互接続の相互接続送信値を決定する際に控除されても良い。
【００４７】
使用履歴が要因としてどのように考慮され得るかの特定の例として、ローカルイベント伝搬マネジャが割り当てられているリソースを別のリソースにリンク付けする複数の相互接続の各々の属性である相互接続送信値を維持することは、イベント通知が該別のリソースに割り当てられているイベント伝搬マネジャから受信されると、以下のことを有しても良い。
・受信イベント通知の受信に応答して、ローカルイベント伝搬マネジャが割り当てられているリソースに関連するイベントハンドラのうちの任意のイベントハンドラの実行をトリガしないことが決定された場合、別のリソースにリンク付けする相互接続の属性である相互接続送信値を増大する。
・及び／又は、受信イベント通知の受信に応答して、ローカルイベント伝搬マネジャが割り当てられているリソースに関連するイベントハンドラのうちの任意のイベントハンドラの実行をトリガしないことが決定された場合、別のリソースにリンク付けする相互接続の属性である相互接続送信値を減少する。
【００４８】
代替で、使用履歴に応答して相互接続送信値を変更することにより、受信リソースにおいてイベントハンドラの実行をトリガしないでイベント通知が送信される相互接続は、将来に、イベント通知が通過することを一層困難にする。相互接続送信値の増大は、トリガされていないイベントハンドラにより引き起こされるイベント伝搬値の減少が、イベント伝搬値を閾より下に減少させる可能性が高いこと、したがって、イベント通知の伝搬を停止することを意味する。
【００４９】
実装に依存して、イベント通知及びそれらの伝搬はイベント種類に固有の処理であっても良い。したがって、新しいリソース生成イベントがイベントハンドラの実行をトリガする可能性が非常に高いリソースは、既存リソースのオブジェクト変更イベントがイベントハンドラの実行をトリガする可能性が非常に低いリソースであもある。処理イベントカテゴリ／種類に渡るこのような相違を処理するために、イベント通知の生成、イベント通知が応答して生成される処理イベントに依存して、イベント種類の所定のセットからイベント通知にイベント種類を割り当てることを有しても良く、各ローカルイベント伝搬マネジャは、ローカルイベント伝搬マネジャが割り当てられているリソースを別のリソースにリンク付けする複数の相互接続の各々について、イベント種類の所定のセットからのイベント種類毎に１つの相互接続送信値を維持するよう構成される。
【００５０】
ローカルイベント伝搬マネジャへの代替のアプローチは、中央ブローカ又は処理マネジャを設けることである。中央ブローカ又は処理マネジャ自体は、処理イベントに応答してどのイベントハンドラをどのリソースにおいてトリガするかを決定し、及び相応して実行をトリガするよう構成される。例えば、イベント伝搬メカニズムは処理マネジャであり、処理マネジャは、記録された候補伝搬リンクを識別するよう構成される候補伝搬リンク識別モジュールであって、候補伝搬リンクは複数のリソースの中で第２のリソースから第１のリソースまでであり、第２のリソースに関連付けられるイベントハンドラ及び１又は複数のトリガ条件と関連付けられ、候補伝搬リンク識別モジュールと、複数のリソースの中の１つのリソースにおける処理イベントに応答して、候補伝搬リンク識別モジュールを参照して、処理イベントが発生したリソースが第１のリソースである記録された候補伝搬リンクを識別し、各識別された記録された候補伝搬リンクについて、１又は複数のトリガ条件が満たされるか否かを決定し、１又は複数のトリガ条件が満たされると決定された場合、候補伝搬リンクの第２のリソースにおいて、候補伝搬リンク内の第２のリソースに関連付けられたイベントハンドラの実行をトリガするよう構成されるイベントハンドラトリガモジュールと、を有する。
【００５１】
候補伝搬リンクは、任意の形式で格納されても良い。例えば、各リソースについて、処理マネジャは、問題のリソースにおける処理イベントに応答して、イベントハンドラがトリガされ得るリソースのレジスタを格納しても良い。レジスタは、特定のイベントハンドラに関連する条件を有しても良い（例えば、特定の種類／カテゴリの処理イベントに限定されても良い）。候補伝搬リンクは、処理マネジャにある記憶モジュールに格納されても良く、又はグラフデータの注釈として記録されても良い。
【００５２】
例えば、処理イベントは、新しいリソースの生成、又は特定の既存リソース又は既存リソースの一部を定める値の変更であっても良い。処理イベントは、外部書き込みアクセスの結果であっても良く、及び／又は複数のイベントハンドラのうち、リソースに関連付けられたイベントハンドラの実行であっても良い。
【００５３】
代替又は追加で、処理イベントは、複数のイベントハンドラのうち、リソースに関連付けられたイベントハンドラの実行により引き起こされ又はその結果であっても良い。処理イベントは、リソースに対する読み出しアクセス、又はリソースに対する試行読み出しアクセスであっても良い。
【００５４】
処理マネジャは、伝搬パスに基づく機能を実施し、特定の処理イベントが後に続いても良い。この目的のために、処理マネジャは、マッピング又は初期処理イベントから生じるイベントハンドラの実行のパスを記録する機能を実装する。例えば、データ記憶システムは、個々の関連するリソースにおける、複数のイベントハンドラのうちの１つのイベントハンドラの実行のために、伝搬パスとして、実行されたイベントハンドラ及び個々の関連するリソース、個々の関連するリソースにおいて実行されたイベントハンドラの実行に応答してイベントハンドラトリガモジュールによりトリガされた任意のイベントハンドラ、トリガされたイベントハンドラの各々の実行に応答してイベントハンドラトリガモジュールによりトリガされた任意のイベントハンドラ、トリガされたイベントハンドラの各々について、トリガされたイベントハンドラが実行されたリソース、のうちの１又は複数を識別するレコードを維持するよう構成される伝搬パス記録モジュールを更に有しても良い。
【００５５】
任意で、データ記憶システムは、適応再配置モジュールを更に有しても良い。適応再配置モジュールは、複数のリソースのうちの特定のリソースを、複数のデータ記憶サーバのうちの第１のデータ記憶サーバから複数のデータ記憶サーバのうちの第２の記憶サーバに再配置するよう構成される。適応再配置モジュールは、特定のリソースを有する伝搬パス内に共同で記録されるリソースを格納する複数のデータ記憶サーバのうちの１又は複数のデータ記憶サーバの各々の同一性に基づき、第２のデータ記憶サーバの同一性を決定するよう構成される。
【００５６】
有利なことに、１より多いデータ記憶サーバで応答される特定の処理イベントに関連付けられる性能オーバヘッドは、同じ初期処理イベントの結果としてイベントハンドラが実行するリソースをグループ化する傾向があることにより、軽減され得る。
【００５７】
更なる代替として、適応再配置モジュールは、ローカルイベント伝搬マネジャを含むデータ記憶システムの部分として設けられても良い。適応再配置モジュールは、複数の相互接続のうち、所定の閾より低い相互接続送信値が属性である１つの相互接続により接続されるリソース対を識別し、対が同じデータ記憶サーバに同一場所に配置されるように、リソース対のうちの１つのリソースを再配置するよう構成される。
【００５８】
別の態様の実施形態によると、データグラフを符号化するデータを格納するよう構成されるデータ記憶システムにおいて実行される方法であって、データグラフは複数のリソース及び複数の相互接続を有し、複数の相互接続の各々は、有向性であり、複数のリソースのうちの２つのリソースをリンク付けし、リンク付けされたリソース間の関係を表し、データ記憶システムは、それぞれデータグラフの一部を符号化するデータを格納するよう構成される複数のデータ記憶サーバを有し、当該方法は、複数のイベントハンドラを格納するステップであって、各イベントハンドラは、複数のリソースのうちの１又は複数のリソースに関連付けられて格納され、個々の関連付けられたリソース又はその各々において実行可能である、ステップと、個々の関連付けられたリソースにおける複数のイベントハンドラのうちの１又は複数のイベントハンドラの実行をトリガすることにより、複数のリソースのうちの１つのリソースにおける処理イベントに応答するステップと、を有する方法が提供される。
【００５９】
別の態様の実施形態によると、データグラフを符号化するデータを格納するよう構成されるデータ記憶システムであって、データグラフは複数のリソース及び複数の相互接続を有し、複数の相互接続の各々は、複数のリソースのうちの２つのリソースを接続し、リンク付けされたリソース間の関係を表し、データ記憶システムは、データグラフを符号化するデータを格納するよう構成されるデータ記憶装置と、複数のイベントハンドラであって、各イベントハンドラは、複数のリソースのうちの１又は複数のリソースに関連付けられ、個々の関連付けられた前記リソース又はその各々において実行可能である、イベントハンドラと、複数のリソースのうちの１つに関連付けられた１又は複数のイベントハンドラの実行をトリガすることにより、複数のリソースのうちの１つのリソースにおける処理イベントに応答するよう構成されるイベント伝搬メカニズムと、を有するデータ記憶システムが提供される。
【００６０】
さらに、本発明の実施形態は、コンピューティング装置の分散型ネットワークにより実行されると、コンピューティング装置の分散型ネットワークに、本発明を具現化するシステムとして機能させる、コンピュータプログラムスーツを有しても良い。
【００６１】
本発明の実施形態では、イベントは、多くの異なる伝搬パスを辿ることができ、各々のイベントは異なるアプリケーション要件を提供するよう構成される。
【００６２】
イベント伝搬は、異なるアプリケーションの必要に適合するために、決定論的及び非決定論的の両方の方法で行われ得る。例えば、非決定論的アプローチは、より良好なグラフベースアルゴリズム、例えば最短経路アルゴリズム及びページランクをサポートし、一方で、決定論的アプローチは、安全を重要視すべきアプリケーション、例えば金融向けのような、より厳格なプロセス制御を提供する。
【００６３】
本発明の実施形態は、大容量グラフデータ及びイベントを処理する分散型データ処理をサポートする。
【００６４】
＜詳細な説明＞
図１は、データのグラフレベル表現で、処理イベントが本発明を具現化するデータ記憶システムに格納されるデータグラフに及ぼす効果を示す。リソース１０１内の☆は、処理イベントの発生を表す。この例では、処理イベントは、破線により示されるリソース１０１にある新しいリンクの表明（アサーション）である。例えば、リソース１０１はリソースのクラスであり、クラス１０１の新しいインスタンス１０３がデータグラフ内で生成されても良い。処理イベントの他の例は、リソース１０１におけるイベントハンドラの実行、及びリソース１０１を符号化するデータの変更を含む。幾つかの実施形態では、処理イベントのために他のリソースにおけるイベントハンドラの実行をトリガするために、特定のデータ変更が行われる必要があっても良い。このような実施形態では、処理イベントは、データ変更イベントであると考えられ得る。
【００６５】
イベント伝搬メカニズムは、リソース１０２及びリソース１０４においてイベントハンドラの実行をトリガすることにより、リソース１０１における処理イベントに応答する。イベントハンドラは、実行されると、処理イベントが実行をトリガした結果として、自身が実行されているリソースを変更するか否か及びどのように変更するかを決定し、及び場合によっては決定された変更を指示又は実行するよう構成される処理、命令セット、及び／又は実行可能コードであっても良い。例えば、リソース１０２がリソース１０１のクラス内のリソースのインスタンス数に基づく特性を有する場合、値は、リソース１０３の追加に応答して変更される必要があっても良い。リソース１０２におけるイベントハンドラの実行は、数が変更される必要があるかを決定し、該変更を実行する。
【００６６】
イベントハンドラは、処理イベントの特定のカテゴリ、例えば新しいリンク生成イベントに応答して、実行されるよう構成されても良い。カテゴリの数、及び処理イベントが分類される方法は、実装に依存する。カテゴリ固有イベントハンドラは、処理イベントの１又は複数の指定されたカテゴリに応答して実行されるのみである。代替又は追加で、イベントハンドラは、処理イベントに応答して実行可能であっても良く、イベントハンドラが応答して実行される処理イベントのカテゴリ又は種類に基づいてどの命令／コード／プロセスを実行すべきかを決定するよう構成されても良い。単一のイベントハンドラは、１より多いリソースで実行可能であっても良い。例えば、各データ記憶サーバは、１つのイベントハンドラのみ、又は処理イベント毎に１つのイベントハンドラを格納しても良く、イベントハンドラは同じデータ記憶サーバに格納されるリソースのうちのいずれでも実行可能である。
【００６７】
イベント伝搬メカニズムは、複数のイベント伝搬マネジャであっても良い。各ローカルイベント伝搬マネジャはリソースに割り当てられる。つまり、ローカルイベント伝搬メカニズムは、１つのリソース毎に１つのローカルイベント伝搬マネジャにあるリソースの各々に専用のローカルイベント伝搬マネジャである。
【００６８】
ローカルイベント伝搬マネジャは、処理イベントに応答して、イベントハンドラが割り当てられているリソースにおいて、いつイベントハンドラを実行すべきか、場合によってはどのイベントハンドラを実行すべきか、を決定するよう構成される。さらに、ローカルイベント伝搬マネジャは、近隣のローカルイベント伝搬マネジャに処理イベントをいつ通知するかを決定するよう構成される。
【００６９】
図１の例では、処理イベントはリソース１０１で生じる。リソース１０１に割り当てられたローカルイベント伝搬マネジャは、イベント通知を生成することにより及び／又はリソース１０１においてイベントハンドラの実行をトリガすることにより、処理イベントに応答するよう構成される。さらに、ローカルイベント伝搬マネジャは、生成したイベント通知を、近隣リソース１０２及び１０３に転送するよう構成されても良い。
【００７０】
リソース１０３では応答がない。いかなるイベントハンドラもリソース１０３に関連付けられなくても良く、又は代替で、リソース１０３に関連付けられたローカルイベント伝搬マネジャはイベント通知を受信し、リソース１０３と１又は複数のイベントハンドラとの間の関連付けに適用される条件が満たされないと決定し、したがっていかなる実行もトリガされない。さらに、リソース１０１以外にイベント通知が受信される近隣リソースが存在しないので、リソース１０３に割り当てられるローカルイベントマネジャは、イベント通知のいかなる送信も必要ない／可能ではないと決定する。留意すべきことに、本願明細書を通じて、リソース及びリソースに割り当てられるローカルイベント伝搬マネジャの点で、近隣についての記載は、データのグラフ表現における相互接続により記述される。したがって、相互接続により接続される任意のリソース対は、それらの個々に割り当てられるローカルイベント伝搬マネジャのため近隣である。
【００７１】
リソース１０２に割り当てられるローカルイベント伝搬マネジャは、処理イベントが発生したリソース１０１に割り当てられるローカルイベント伝搬マネジャからイベント通知を受信し、及びリソース１０２におけるイベントハンドラの実行をトリガするか否かを決定するよう構成される。このような決定は、イベント通知の内容に依存しても良い。例えば、イベント通知は、処理イベントの種類／カテゴリ、及び／又は処理イベントが発生したリソースの識別情報又は場所を指定しても良い。例えば、ローカルイベント伝搬マネジャは、どの条件が満たされるかに依存してどのイベントハンドラを実行すべきか又は実行するか否かを決定するために、受信イベント通知の内容に適用可能な条件を格納しても良い。図１の例では、リソース１０２を囲む矢印により示されるように、リソース１０２においてイベントハンドラの実行をトリガすることにより、受信イベント通知に応答することが、リソース１０２に割り当てられたローカルイベント伝搬マネジャにより決定される。
【００７２】
リソース１０２に割り当てられるローカルイベント伝搬マネジャは、受信イベント通知を、イベント通知が受信されたローカルイベント伝搬マネジャ以外の近隣ローカルイベント伝搬マネジャへ送信するか否かを決定するよう構成される。このような決定は、イベント通知の内容に依存しても良い。例えば、イベント通知は、処理イベントの種類／カテゴリ、及び／又は処理イベントが発生したリソースの識別情報又は場所を指定しても良い。例えば、ローカルイベント伝搬マネジャは、どの条件が満たされるかに依存してイベント通知を送信するか否かを決定するために、受信イベント通知の内容に適用可能な条件を格納しても良い。さらに、リソース１０２におけるイベントハンドラの実行は、送信の前にイベント通知に対して行われる変更を生じる。代替又は追加で、リソース１０２におけるイベントハンドラの実行は、リソース１０２に割り当てられるローカルイベント伝搬マネジャにより又は近隣ローカルイベント伝搬マネジャにより生成される新しいイベント通知を生じても良い。図１の例では、リソース１０４及びリソース１０５に割り当てられるローカルイベント伝搬マネジャへイベント通知を送信することが、リソース１０２に割り当てられるローカルイベント伝搬マネジャにより決定される。
【００７３】
リソース１０５に割り当てられるローカルイベント伝搬マネジャは、受信イベント通知に応答してイベントハンドラを実行しない。リソース１０４に割り当てられるローカルイベント伝搬マネジャは、受信イベント通知に応答してイベントハンドラを実行し、リソース１０６に割り当てられるローカルイベント伝搬マネジャへイベント通知を送信する。リソース１０５に割り当てられるローカルイベント伝搬マネジャ及びリソース１０６に割り当てられるローカルイベント伝搬マネジャは、両者とも、イベントハンドラを実行しないこと、近隣ローカルイベント伝搬マネジャへイベント通知を送信しないことを決定する。
【００７４】
代替で、初期生成は、リソース１０１に割り当てられるローカルイベント伝搬マネジャにより実行されず、実際にはリソース１０２に割り当てられるローカルイベント伝搬マネジャが近隣リソースを観察し、イベント通知を生成し及び／又はリソース１０２においてイベントハンドラの実行をトリガすることにより近隣リソース（又は特定の近隣リソース）における処理イベントに応答するよう構成されても良い。
【００７５】
ローカルイベント伝搬マネジャの代替として、イベント伝搬メカニズムは、リソース間の有向リンクを格納する中央処理マネジャであっても良い。有向リンクは、リンク付けされたリソースの他方における処理イベントに応答して、イベントハンドラがリンク付けされたリソースのうちの一方において実行されることを示す。中央処理マネジャは、データグラフ全体に対して提供される単一の処理マネジャであっても良く、又は特定のデータ記憶サーバに格納されたデータグラフの領域／部分に割り当てられても良い。データ記憶サーバ毎に１つの処理マネジャが存在しても良い。図１の例では、リソース１０２及びリソース１０４の両者は、処理マネジャにおいてリソース１０１にリンク付けされても良い。例えば、処理マネジャは、特定のリソースについて、特定のリソースにおける処理イベントに応答してイベントハンドラがトリガされる他のリソースのレジスタを格納するよう構成されても良い。さらに、登録は、イベントハンドラが実行されるべきか否かを決定する１又は複数の条件を指定しても良く、特定のイベントハンドラ若しくはイベントハンドラのカテゴリを指定しても良い。
【００７６】
図１の例では、リソース１０２とリソース１０１との間のリンクと共に格納される任意の条件が満たされ、したがってイベントハンドラがリソース１０２において実行される。リソース１０４は、リソース１０１の処理マネジャにあるレジスタに含まれても良い。したがって、リソース１０４においてイベントハンドラの実行を生じるのは、リソース１０１における処理イベントであっても良い。代替で、リソース１０４は、リソース１０２のレジスタに含まれても良く、リソース１０２におけるイベントハンドラの実行は登録の条件を満たし、したがってリソース１０４におけるイベントハンドラが実行される。
【００７７】
図２は、本発明の一実施形態を示し、１つのローカルイベント伝搬マネジャ２００を詳細に示す。格納データ１００は、グラフ表現で示される。破線は、異なるデータ記憶サーバに格納される領域間の境界を示す。サーバ通信モジュール３００は、ローカルイベント伝搬マネジャのような、同じデータ記憶サーバに格納される他のエンティティと通信するメカニズムを提供する。通信ネットワーク４００は、ローカルイベント伝搬マネジャのような、他のサーバに格納されるエンティティと通信するメカニズムを提供する。
【００７８】
図示のローカルイベント伝搬マネジャ２００は、ローカルイベント伝搬マネジャ２００とグラフリソースとの間の矢印により示されるように、特定のリソースに割り当てられる。ローカルイベント伝搬マネジャは、残りのグラフリソースの各々にも設けられるが、これらは図２に図示されない。
【００７９】
ローカルイベント伝搬マネジャ２００は、伝搬マネジャモジュール２１０、イベントマネジャモジュール２２０、イベントハンドラ２３０、及び頂点通信モジュール２４０を有する。これらの機能ユニットは、ローカルイベント伝搬マネジャ２００の動作を実行するよう構成される機能モジュールの単なる例示的な選択である。ローカルイベント伝搬マネジャ２００内の他のタスクの分配が可能であり、又は機能はモジュールに細分化することなく単にローカルイベント伝搬マネジャ２００により実行されても良い。図２において、イベントハンドラ２３０は、ローカルイベント伝搬マネジャ２００の機能コンポーネントとして図示される。これは任意的配置であり、イベントハンドラは、データ記憶サーバレベルで設けられても良く、又は１より多いローカルイベント伝搬マネジャによりアクセス可能なエンティティとして設けられても良い。図２の例では、イベントハンドラ２３０は、特定のリソースに割り当てられる。更なる選択として、１より多いイベントハンドラがリソース毎に設けられても良い。例えば、イベントの種類／カテゴリ毎に１つのイベントハンドラが設けられても良い。
【００８０】
頂点通信モジュール２４０は、近隣ローカルイベント伝搬マネジャからイベント通知を受信し、イベント通知を近隣ローカルイベント伝搬マネジャへ送信するよう構成される。伝搬マネジャモジュール２１０は、ローカルイベント伝搬マネジャが割り当てられるリソースに関連付けられたイベントハンドラのうちの任意のものの実行をトリガするか否かを決定し、任意の近隣ローカルイベント伝搬マネジャに受信イベント通知を送信するか否かを決定するよう構成される。伝搬マネジャモジュール２１０は、イベント伝搬値の属性及び変更を含むイベント通知の生成を担う。伝搬マネジャモジュール２１０は、ローカルイベント伝搬マネジャ２００が割り当てられるリソースを他のリソースに接続する複数の相互接続のうちの各々の属性である相互接続送信値を維持するよう構成される。
【００８１】
イベントマネジャモジュール２２０は、イベントハンドラ２３０に代わってイベントキュー及びイベント優先度を管理するよう構成される任意モジュールである。イベントハンドラは、イベントに応答して実行可能であり、イベントハンドラが実行されているリソースを変更するか否か、該リソースをどのように変更するかを決定し、及び決定した変更を実行する処理を有しても良い。
【００８２】
ローカルイベント伝搬マネジャは、ローカルイベント伝搬マネジャが割り当てられるリソースをホスティングするデータ記憶サーバで実行する異なる処理スレッドとして実現されても良い。
【００８３】
本発明を具現化するデータ記憶システム内の例示的なローカルイベント伝搬マネジャ２００により実行される例示的な処理を以下に説明する。この特定の例では、グラフリソースは頂点として表される。
【００８４】
グラフ頂点ｖ０について、そのグラフの各近隣（ｖ１，．．．，ｖｎ）は、ｖ０において生じるイベントに対する自身の関係を登録する。この関係の登録は、明示的であり、ｖ０の各近隣におけるｖ０へのポインタとして格納されても良い。代替で、関係の登録は、黙示的であり、ｖ０の近隣からｖ０への相互接続が単に存在することにより、ｖ０の近隣がｖ０内に関係の登録を有すると考えられても良い。
【００８５】
処理イベントは、イベントが伝搬を停止すべきとき（例えば、運動量が０又はそれより低く降下するとき）を決定する初期運動量（momentum）（本願明細書のどこかで言及されるイベント伝搬値の例）を有する。初期イベント運動量は、処理イベントが発生したリソースのローカルイベント伝搬マネジャ２００又はその近隣のうちの１つにより、処理イベントに割り当てられる。初期イベント運動量は、ローカルイベント伝搬マネジャ間で転送されるイベント通知の内容の部分を形成し、その初期値は以下を含む要因に基づき割り当てられ得る。
・データグラフ特徴。例えば、高次頂点において生じるイベントは、高い運動量を有するべきである。
・データ特徴。例えば、（例えば、ユーザ若しくはデータベース管理者により）重要として割り当てられるドメインデータに割り当てられるイベントは、より高い運動量を有するべきである。または、
・イベント種類。例えば、システムイベントは、データイベントより高い運動量を有するべきである。
【００８６】
このような運動量値の評価は、実施形態の実施シナリオに依存して構成可能であっても良い。
【００８７】
任意のエッジ＜ｖ０，ｖｉ＞について（エッジは２つのリソース間の相互接続である）、１≦ｉ≦ｎとして、例えばエッジに沿ってイベント通知を受信するリソースのローカルイベント伝搬マネジャにより、値は計算されエッジに割り当てられる。値は、どのようにイベント運動量が変更されるかを決定し、続いて、ｖ０からｖｉへのエッジ方向に沿った２つの頂点間でイベント通知を転送する。値は、本願明細書のどこかで言及される相互接続送信値の例である。
【００８８】
相互接続送信値は、以下を含んでも良い１又は複数の要因に基づき計算され及び／又は調整されても良い。
・特定のイベントカテゴリ分けにおけるｖｉの関係。
・２つの頂点間の相互接続の特性。
・ｖｉにおけるｖ０の信頼。
・エッジの中間のようなグラフ特性。高い中間エッジは低い相互接続送信値を与えられ、より速い及び／又はより多数の（他の頂点により迅速に到達し／受信頂点において停止される可能性が低い）イベント伝搬を可能にしても良い。
・階層的エッジは、他のエッジより高い相互接続送信値を与えられても良い。
【００８９】
イベントがｖｉに到達するのに成功した場合、ｖｉがイベント通知を受信し、イベントハンドラがトリガされると、
・ｖ０とｖｉとの間のエッジの属性である相互接続送信値は、調整され、例えば減少されても良い。
・イベント通知をらその近隣へ送信するとき、イベント通知に含まれるイベント運動量は、増大されても良い。
【００９０】
ｖｉが受信イベント通知を拒否する場合、つまり、受信イベント通知がｖｉにおいてイベントハンドラをトリガしない場合、
・ｖ０とｖｉとの間のエッジの属性である相互接続送信値は、調整され、例えば増大されても良い。
・イベント運動量は、ｖｉからその近隣へ送信されるとき、イベント通知内で減少される。
【００９１】
相互接続送信値は、特定にイベント種類／カテゴリ（例えば、IncomingLinkAddedEvent、IncomingLinkDeletedEvent、等）に固有であっても良い。したがって、１つの相互接続送信値は、相互接続毎のイベント種類／カテゴリ毎に維持される。
【００９２】
図３は、図２の実施形態の代替を示す。図３は、本発明の一実施形態を示し、１つのイベントブローカ５００（イベントブローカは、本願明細書のどこかで言及される処理マネジャの例である）を詳細に示す。格納データ１００は、グラフ表現で示される。破線は、異なるデータ記憶サーバに格納される領域間の境界を示す。
【００９３】
イベントブローカ５００は、特定のデータ記憶サーバに格納されるデータグラフ１００の領域に割り当てられる。イベントブローカは、ブローカ間通信モジュール５１０を有する。ブローカ間通信モジュール５１０は、通信ネットワーク４００と協働して、他のサーバに割り当てられるイベントブローカのようなエンティティと通信するメカニズムを提供する。イベントブローカ５００は、単一の処理スレッドとして実行する。ブローカイベントマネジャ５２０は、イベントキュー及び優先順位を管理し、イベントハンドラの実行を指示し／呼び出し／トリガする。ブローカイベントマネジャ５２０は、本願明細書のどこかで言及される候補伝搬リンク識別モジュール及びイベントハンドラトリガモジュールの機能を提供する。ブローカイベントハンドラ５３０は、記憶サーバ毎に設けられるように図示されるが、異なるイベント種類／カテゴリについて異なるブローカイベントハンドラが存在しても良い。
【００９４】
本発明を具現化するデータ記憶システム内の例示的なイベントハンドラ５００により実行される例示的な処理を以下に説明する。この特定の例では、グラフリソースは頂点として表される。
【００９５】
任意の頂点ｖｉは、頂点ｖ０におけるイベント種類ｅｊ内の頂点ｖｉの関係を明示的に保管する。この関係は、本実施形態では、候補伝搬リンクとして明らかであり、ｖｉを格納するデータ記憶サーバに割り当てられるイベントブローカ５００において明示的に記録されても良く、又はグラフを符号化するデータのデータ注釈としてキャプチャされても良い。記録された候補伝搬リンクは、例えば指定された種類のリンクをフィルタリングすると共にLinkedAssertedEventに対する関係を登録する特定の条件／フィルタリングロジックを含み又はそれに関連付けられて格納されても良い。さらに、記録された候補伝搬リンクは、関連付けられた条件を満たす処理イベントが頂点ｖ０において生じると実行されるべき特定のセクションのイベントハンドラコード、又は特定のイベントハンドラ若しくはイベントハンドラコードのセクションの指示を含み又はそれに関連付けられて格納されても良い。
【００９６】
イベントブローカ５００は、自身の管理する頂点（自身の管理する頂点は同じデータ記憶サーバに格納される頂点である）のイベント関係の完全なマッピングを維持し又は（データグラフの注釈を分析することにより）構築しても良い。
【００９７】
ｖ０はイベントブローカ５００が割り当てられるグラフデータを格納するデータ記憶サーバに格納されるので、又はイベントブローカ５００は別のイベントブローカによりｖ０における処理イベントを通知されるので、ｖ０において生じる処理イベントは、イベントブローカ５００によりキャプチャされる。イベントブローカ５００は、ブローカイベントマネジャ５２０を介して、頂点のうちのどれが候補伝搬リンクを介してｖ０にリンク付けされるか、及びこれらのリンクに関連付けられた条件が満たされるか否かを決定することにより、イベントキューをコンパイルするよう構成される。それにより、ブローカイベントマネジャ５２０は、グラフ頂点におけるイベントハンドラ実行のキューをコンパイルできる。
【００９８】
ブローカを通じて通信するとき、１つのデータ記憶サーバにある頂点は、最終的に別のデータ記憶サーバと直接に（ブローカを通じて）通信しても良い。例えば、イベントハンドラは、第１のデータ記憶サーバに格納される第１の頂点において実行される。第２のデータ記憶サーバに割り当てられるイベントブローカは、この実行を通知され、第１の頂点への候補伝搬リンクを有する第２のデータ記憶サーバに格納される頂点を識別する。第１及び第２の頂点は、データ記憶サーバの境界に跨って通信する。サーバｓｊにある頂点ｖｊがサーバｓｉにある頂点ｖｉからイベントを普通に（つまり、閾頻度より多く）受信するとき、伝搬パスは記録され、したがって、適応再配置モジュールは、ｖｊ及びｖｉを一緒に同じサーバへ移動することを決定する基準を有する。この場合、直接通信（又はエッジ＜ｖｉ，ｖｊ＞）は必須ではないが、伝搬パス上の２つの頂点の頻繁な共生は再配置のために十分な基準である。
【００９９】
あるデータ記憶サーバから別のデータ記憶サーバへ頂点を再配置するよう構成される適応再配置モジュールの機能の一例として、以下の例を検討する。仲介されたイベント伝搬がパスｖｓ，ｖ０，．．．，ｖｍ，ｖｔに沿ってｖｓとｖｔの間で頻繁に行われる場合、関与する全ての頂点の場所は以下のように調整される。ｓｉｄ（ｖｘ）は頂点ｖｘを含むサーバＩＤを返し、ｃｏｓｔ（ｖｘ，ｉｄｓ）は頂点ｖｘを任意の機械ｓｉｄｙへ移動するコスト関数であるとする。適応再配置モジュールは、頂点のサーバへの最適割り当てを考案することにより、総コスト関数を最小化するよう構成される。サーバは、パス上の頂点を既に含んでいても含んでいなくても良い。
【数１】
2015156202.tif 000003
【０１００】
サーバがパス頂点を含まないことが、最小の総コストを達成するために選択される場合があり得る。コスト関数は、実装固有であり、例えば、伝搬パスにより横切られるデータ記憶サーバ境界の数に比例して増大する関数であっても良い。勿論、このような関数は、将来の境界交差伝搬パスを最小化しようとするが、関数は過去の伝搬パスデータに基づく。このような伝搬パスデータは、イベントブローカ５００により記録されても良く、異なるデータ記憶サーバに割り当てられるイベントブローカ同士の特定の協働を含んでも良い。
【０１０１】
態様（ソフトウェア／方法／装置）が別個に議論されたが、１つの態様に関連して議論されたその特徴及び影響は、他の態様にも等しく適用できる。したがって、方法の特徴が議論される場合、装置の実施形態はその特徴を実行する又は適切な機能を提供するよう構成されるユニット又は装置を有すること、及びプログラムは該プログラムが実行されるコンピューティング装置に前記方法の特徴を実行させるものと解釈される。
【０１０２】
上述の態様のいずれにおいても、種々の特徴は、ハードウェアで、又は１又は複数のプロセッサで動作するソフトウェアモジュールとして実装されても良い。一態様の特徴は、他の態様のいずれにも適用できる。
【０１０３】
本発明は、上述の任意の方法を実行するコンピュータプログラム又はコンピュータプログラムプロダクト、及び上述の任意の方法を実行するプログラムを格納しているコンピュータ可読媒体も提供する。本発明を実施するコンピュータプログラムは、コンピュータ可読媒体に格納されてもよい。或いは、例えば、インターネットウェブサイトから提供されるダウンロード可能なデータ信号のような信号形式又は任意の他の形式であってもよい。
【符号の説明】
【０１０４】
１０１〜１０６  リソース
１００  格納データ
２００  ローカルイベント伝搬マネジャ
２１０  伝搬マネジャ
２２０  イベントマネジャ
２３０  イベントハンドラ
２４０  頂点通信
３００  サーバ通信
４００  通信ネットワーク
５００  イベントブローカ
５１０  ブローカ間通信
５２０  ブローカイベントマネジャ
５３０  ブローカイベントハンドラ
【図１】
2015156202.tif 000004
【図２】
2015156202.tif 000005
【図３】
2015156202.tif 000006