(57)【要約】【課題】コンテキストの計算を複数のノードで分散処理する場合に、状態を共有する必要があるイベントの処理を同じノードに集中させながら、共有する必要のないイベントの処理を分散させる。【解決手段】コンテキスト算出ルールを解析することにより、イベントの分配先となるコンテキスト算出ノード２を決定するためのハッシュ算出キーと、イベントに適用するコンテキスト算出ルールを決定するためのマッチルールとを抽出するルール解釈部５と、ハッシュ算出キーに基づいて分配先のコンテキスト算出ノード２を決定し、そのコンテキスト算出ノード２に、イベントとマッチルールに適合する算出ルールのＩＤを送信するイベント分配部９を備え、ハッシュ算出キーは、コンテキスト算出ルールが計算の単位としているイベント中の要素であり、マッチルールは、算出ルール中で参照されているイベントの属性である。【選択図】図１
2012048294.tif 000002
【特許請求の範囲】
【請求項１】
イベント分配ノードと、
複数のコンテキスト算出ノードと、を備え、
前記イベント分配ノードは、
少なくとも１つのコンテキストの要素およびその値を含むイベントを入力するためのイベント入力部と、
前記イベントに基づいて新たなコンテキストを算出するコンテキスト算出ルールを入力するためのルール入力部と、
前記コンテキスト算出ルールが計算の単位としている前記イベント中の要素に基づいて、前記イベントの分配先となる前記コンテキスト算出ノードを決定するためのキー情報を抽出するルール解釈部と、
前記コンテキスト算出ルールを全てのコンテキスト算出ノードに送信すると共に、前記キー情報に基づいて分配先のコンテキスト算出ノードを決定し、そのコンテキスト算出ノードに前記イベントを送信するイベント分配部と、を備え、
前記コンテキスト算出ノードは、
前記イベント分配ノードから受信した前記イベントに、前記コンテキスト算出ルールを適用して新たなコンテキストを算出するコンテキスト算出部、を備えたコンテキスト算出システム。
【請求項２】
前記ルール解釈部は、
前記コンテキスト算出ルール中で参照されている前記イベントの属性に基づいて、前記イベントに適用するコンテキスト算出ルールを決定するためのマッチルールを決定し、
前記イベントの分配先となる前記コンテキスト算出ノードに、そのマッチルールに適合するコンテキスト算出ルールのルールＩＤを送信し、
前記コンテキスト算出部は、前記ルールＩＤに基づいて前記イベントに適用するコンテキスト算出ルールを取得する、請求項１に記載のコンテキスト算出システム。
【請求項３】
前記イベントの分配先となる前記コンテキスト算出ノードを決定するためのキー情報は、ハッシュ値を算出するためのキーであり、
前記イベント分配部は、
前記キー情報を用いてハッシュ値を計算し、計算したハッシュ値を用いて分配先のコンテキスト算出ノードを決定する、請求項１または２に記載のコンテキスト算出システム。
【請求項４】
前記イベント分配ノードは、
分配先として決定されたコンテキスト算出ノードの負荷が高くなった際、前記キー情報を用いて他のコンテキスト算出ノードを選定する再分配部を備え、
前記イベント分配部は、
前記他のコンテキスト算出ノードに前記イベントを送信する、請求項１から３のいずれかに記載のコンテキスト算出システム。
【請求項５】
イベント分配ノードが、コンテキスト算出ルールが計算の単位としているイベント中の要素に基づいて、前記イベントの分配先となるコンテキスト算出ノードを決定するためのキー情報を抽出する工程と、
前記コンテキスト算出ルールを全てのコンテキスト算出ノードに送信する工程と、
前記キー情報に基づいて分配先のコンテキスト算出ノードを選択し、そのコンテキスト算出ノードに、前記イベントを送信する工程と、
前記選択されたコンテキスト算出ノードが、前記イベント分配ノードから受信した前記イベントに、前記コンテキスト算出ルールを適用して新たなコンテキストを算出する工程と、を備えたコンテキスト算出方法。
【請求項６】
コンピュータを、
少なくとも１つのコンテキストの要素およびその値を含むイベントを入力するためのイベント入力部と、
前記イベントに基づいて新たなコンテキストを算出するコンテキスト算出ルールを入力するためのルール入力部と、
前記コンテキスト算出ルールが計算の単位としている前記イベント中の要素に基づいて、前記イベントの分配先となる前記コンテキスト算出ノードを決定するためのキー情報を抽出するルール解釈部と、
前記コンテキスト算出ルールを全てのコンテキスト算出ノードに送信すると共に、前記キー情報に基づいて分配先のコンテキスト算出ノードを決定し、そのコンテキスト算出ノードに前記イベントを送信するイベント分配部と、して機能させるプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンテキスト算出システム、コンテキスト算出方法、および記録媒体に関する。
【背景技術】
【０００２】
コンテキストとは、例えば、人や商品など、特定の主体に関する状況情報のことである。状況情報とは、例えば人の位置、商品の周辺温度などの情報であり、センサから取得することができる。
【０００３】
イベントとは、コンテキストの状態および状態の変化を表すデータ構造であり、コンテキストの主体を表すＩＤと、イベントの発生した時刻、場所および事由などの属性が含まれる。
【０００４】
コンテキストは単体で利用するだけでなく、複数のコンテキストを組み合わせて新たなコンテキストを生成することもある。これをコンテキスト合成と呼ぶ。例えば、平均温度の情報を含むコンテキストを生成するためには、過去の温度情報を含むコンテキストに含まれる温度情報を加算し、コンテキストの総数で割る。
【０００５】
どのようなコンテキスト合成が必要であるかはアプリケーションによって異なるため、合成方法はスクリプト言語によるプログラムやルールなどによって記述される。ルール中では、必要に応じて過去の情報を蓄積し、コンテキストの属性を参照して計算を行う。
【０００６】
なお、コンテキストの計算を複数のノードで分散処理するシステムは、例えば特許文献１〜３に記載されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００４−３４１６７０号公報
【特許文献２】特開２００９−２３０２７６号公報
【特許文献３】特開２００７−１１２６１８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
コンテキストの数が非常に多くなった場合、１台のコンピュータノードだけで全てのコンテキスト算出を行うことが難しくなる。スケーラビリティを得るためには、複数のノードで分散処理することにより１台あたりの負荷を下げる必要がある。
【０００９】
しかし、特許文献１〜３には、コンテキストの計算を複数のノードで分散処理する場合に、状態情報を共有する必要があるイベントの処理を同じノードに集中させながら、共有する必要のないイベントの処理を分散させる方法については開示されていない。
【００１０】
そこで、本発明の目的は、コンテキストの計算を複数のノードで分散処理する場合に、状態を共有する必要があるイベントの処理を同じノードに集中させながら、共有する必要のないイベントの処理を分散させることである。
【課題を解決するための手段】
【００１１】
本発明に係るコンテキスト算出システムは、イベント分配ノードと、複数のコンテキスト算出ノードと、を備え、前記イベント分配ノードは、少なくとも１つのコンテキストの要素およびその値を含むイベントを入力するためのイベント入力部と、前記イベントに基づいて新たなコンテキストを算出するコンテキスト算出ルールを入力するためのルール入力部と、前記コンテキスト算出ルールが計算の単位としている前記イベント中の要素に基づいて、前記イベントの分配先となる前記コンテキスト算出ノードを決定するためのキー情報を抽出するルール解釈部と、前記コンテキスト算出ルールを全てのコンテキスト算出ノードに送信すると共に、前記キー情報に基づいて分配先のコンテキスト算出ノードを決定し、そのコンテキスト算出ノードに前記イベントを送信するイベント分配部と、を備え、前記コンテキスト算出ノードは、前記イベント分配ノードから受信した前記イベントに、前記コンテキスト算出ルールを適用して新たなコンテキストを算出するコンテキスト算出部、を備えたものである。
【発明の効果】
【００１２】
本発明によれば、コンテキストの計算を複数のノードで分散処理する場合に、状態を共有する必要があるイベントの処理を同じノードに集中させながら、共有する必要のないイベントの処理を分散させることができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施の形態１による、コンテキスト算出システムの構成を示すブロック図。
【図２】本発明の実施の形態１による、コンテキスト算出ルールを入力する手順のフローチャート。
【図３】本発明の実施の形態１による、算出ルールに従ってイベントを処理する手順のフローチャート。
【図４】コンテキスト算出ルールの例を示す図。
【図５】分配ルール記憶部に記憶される分配ルールの例を示す図。
【図６】入力されるイベントの例を示す図。
【図７】本発明の実施の形態２による、コンテキスト算出システムの構成を示すブロック図。
【図８】本発明の実施の形態２による、分配先記憶部に記憶される情報の例を示す図。
【図９】本発明の実施の形態２による、イベントの再分配の手順のフローチャート。
【発明を実施するための形態】
【００１４】
次に、本発明を実施するための形態について、図面を参照して詳細に説明する。
実施の形態１．
図１は、本発明の実施の形態１によるコンテキスト算出システムの構成を示すブロック図である。図１に示すように、コンテキスト算出システムは、イベント分配ノード１と複数のコンテキスト算出ノード２を備えている。イベント分配ノード１は、イベントをルールに従って分配するコンピュータノードである。コンテキスト算出ノード２には、それぞれ一意のノード番号が割り当てられている。
【００１５】
イベント分配ノード１は、コンテキスト算出ルールを入力するためのルール入力部４と、入力されたルールを解釈するルール解釈部５と、解釈されたルールをコンテキスト算出ノード２に分配するルール分配部６と、解釈されたルールを記憶する分配ルール記憶部７と、イベントを入力するためのイベント入力部８と、入力されたイベントを分配ルールに従ってコンテキスト算出ノード２に分配するイベント分配部９を備えている。
【００１６】
ルール入力部４、ルール解釈部５、ルール分配部６、イベント入力部８、およびイベント分配部９は、プログラムに従ってコンピュータのプロセッサが行う動作のモジュールを表している。
【００１７】
分配ルール記憶部７に記憶された分配ルールは、ルールを識別するためのルールＩＤと、イベント入力部８を介して入力されたイベントにどのルールを適用するか判断するためのマッチルールと、イベントの分配先となるコンテキスト算出ノード２を決定するためのハッシュ値を算出するキー（ハッシュ算出キー）を含む。
【００１８】
イベント入力部８を介して入力されるイベントは、イベントを一意に識別する主体識別子と、主体識別子に付随する属性のリストを有する。属性は、属性を一意に識別するキーと、属性値を有する。
【００１９】
コンテキスト算出ノード２は、イベント分配ノード１から分配されたルールを受信する算出ルール受信部１０と、受信したルールを記憶する算出ルール記憶部１１と、算出中のコンテキスト状態を記憶する状態記憶部１２と、イベント分配ノード１からイベントを受信し、分配されたルールに従ってコンテキスト算出を行うコンテキスト算出部１３と、算出されたコンテキストを外部ネットワークに送信するコンテキスト送信部１４を備えている。
【００２０】
算出ルール受信部１０、コンテキスト算出部１３、およびコンテキスト送信部１４は、プログラムに従ってコンピュータのプロセッサが行う動作のモジュールを表している。
【００２１】
算出ルール記憶部１１は、受信したイベントを処理してコンテキストを算出するためのルールをスクリプトなどの形式で保持する。スクリプトとしては、例えばECMAScriptを用いることができる。
【００２２】
状態記憶部１２は、コンテキスト算出部１３が一時的にコンテキストの状態を保持するために使用する。コンテキスト算出部１３は、１つの参照キーを用いて状態記憶部１２を検索すると、状態記憶部１２からそのキーに対応する１つの値を取得することができる。
【００２３】
次に、図２を用いてコンテキスト算出ルールを入力する手順を説明する。
まず、外部ネットワークからルール入力部４を介して、コンテキスト算出ルールがルールＩＤとともに入力される（ステップ２０１）。入力される算出ルールは、スクリプトなどの形式で記述されている。
【００２４】
次に、ルール解釈部５は、入力された算出ルールを解釈する（ステップ２０２）。ルール解釈部５は、算出ルール中に状態記憶部１２の状態を参照する箇所があるか否かを探し、もしあればその状態参照のキーをハッシュ算出キーとして抽出する。また、入力イベントを参照している箇所を探し、もしあればその属性キーをマッチルールとして抽出する。
【００２５】
ルール解釈部５は、ステップＳ２０２で抽出されたハッシュ算出キーとマッチルールを、ルールＩＤとともに分配ルール記憶部７に記憶する（ステップ２０３）。
【００２６】
また、ルール分配部６は、入力された算出ルールを全てのコンテキスト算出ノード２に送信する（ステップ２０４）。
【００２７】
各コンテキスト算出ノード２の算出ルール受信部１０は、イベント分配ノード１から算出ルールを受信し、算出ルール記憶部１１に記憶する（ステップ２０５）。
【００２８】
次に図３を用いて算出ルールに従ってイベントを処理する手順を説明する。
まず、外部ネットワークからイベント入力部８を介して、イベントが入力される（ステップ３０１）。
【００２９】
イベント分配部９は、分配ルール記憶部７を参照し、入力されたイベントにマッチするマッチルールを有する分配ルールを検索する（ステップ３０２）。このとき、複数の分配ルールがマッチした場合には、以降の処理をマッチした分配ルールそれぞれに対して行う（ステップ３０７）。一つもマッチしなかった場合にはここで処理を終了する（ステップ３０３）。
【００３０】
イベント分配部９は、イベントの主体識別子または属性から、ステップ３０３で取得した分配ルールのハッシュ算出キーに対応する値を取得し、その値のハッシュ値を計算する。さらに、イベント分配部９は、計算したハッシュ値の剰余によって分配先のコンテキスト算出ノード２を１つ定める。このようにして定めたコンテキスト算出ノード２のコンテキスト算出部１３に、イベントとマッチした分配ルールのルールＩＤを送信する（ステップ３０４）。
【００３１】
コンテキスト算出ノード２のコンテキスト算出部１３は、受信したルールＩＤをキーとして算出ルール記憶部１１を検索し、算出ルールを取得する。さらに、コンテキスト算出部１３は、受信したイベントに、取得した算出ルールを適用して新たなコンテキスト情報を算出する（ステップ３０５）。
【００３２】
コンテキスト送信部１４は、算出したコンテキスト情報を外部ネットワークに送信する（ステップ３０６）。
【００３３】
次に、図４〜６に示す具体例を用いて、コンテキスト算出システムの動作について説明する。
まず、コンテキスト算出ルールの入力動作について説明する。
まず、外部ネットワークからルール入力部４を介して、図４に示す、ルールＩＤ＝１のコンテキスト算出ルールが入力される（図２：ステップ２０１）。
【００３４】
ルール解釈部５は、入力された算出ルールを解析する（ステップ２０２）。ルール解釈部５は、算出ルールの構文解析を行い、マッチルールとハッシュ算出キーを抽出する。マッチルールは、算出ルール中で参照されているイベントの要素（属性）によって構成される。
【００３５】
ハッシュ算出キーは、状態.検索の引数となっているイベントの要素によって構成される。この例では、「状態.検索(イベント.主体識別子)」という検索であるため、抽出されるハッシュ算出キーは主体識別子である。ハッシュ算出キーは、算出ルールが計算の単位としているイベント中の要素に相当する。すなわち、この例では、算出ルール（ルールＩＤ＝１）は主体識別子毎の平均温度を算出しているため、ハッシュ算出キーは主体識別子となる。また、ルールＩＤ＝２の算出ルールの場合には、場所毎の入場者数を算出しているため、ハッシュ算出キーは場所となる。
【００３６】
また、ルール（ＩＤ＝１）中で参照されているイベントの要素は主体識別子と温度であるため、マッチルールは主体識別子と温度となる。このマッチルールによって、主体識別子と温度を持つイベントだけがこのルールを適用する対象となる。また、ルール（ＩＤ＝２）で参照されているイベントの要素は場所と入出場であるため、マッチルールは場所と入出場となる。
【００３７】
ルール解釈部５は、ステップＳ２０２で抽出されたハッシュ算出キーとマッチルールを、ルールＩＤとともに分配ルール記憶部７に記憶する（ステップ２０３）。図５に分配ルール記憶部７に記憶される内容を示す。
【００３８】
ルール分配部６は、入力された算出ルールを全てのコンテキスト算出ノード２に送信する（ステップ２０４）。
【００３９】
各コンテキスト算出ノード２の算出ルール受信部１０は、イベント分配ノード１から算出ルールを受信し、算出ルール記憶部１１に記憶する（ステップ２０５）。
ルールＩＤ＝２の算出ルールについても同様にステップ２０１〜２０５の処理を行う。
【００４０】
次に、イベント処理の動作について説明する。
まず、外部ネットワークからイベント入力部８を介して、図６に示す１番目のイベントが入力される。（ステップ３０１）。
【００４１】
イベント分配部９は、分配ルール記憶部７を参照し、入力されたイベントにマッチするマッチルールを有する分配ルールを検索する（ステップ３０２）。１番目のイベントは主体識別子と温度属性を有しているので、ルールＩＤ＝１の分配ルールにマッチする。なお、複数の分配ルールがマッチする場合には、以降の処理をマッチした分配ルールそれぞれに対して行う（ステップ３０７）。また、一つもマッチしなかった場合にはここで処理を終了する（ステップ３０３）。
【００４２】
イベント分配部９は、マッチした分配ルールに従ってコンテキスト算出ノード２へのイベントの分配を行う（ステップ３０４）。ここではハッシュ算出キーが主体識別子であるため、主体識別子のハッシュ値を計算し、その剰余値がノード番号と一致するコンテキスト算出ノード２を分配先として決定する。ハッシュ値の計算方法としては、主体識別子の各文字コードの合計値の剰余など任意の方法を使用することができる。
【００４３】
イベントが分配されたコンテキスト算出ノード２のコンテキスト算出部１３は、算出ルール記憶部１１に記憶された算出ルールに従ってコンテキスト算出を行う（ステップ３０５）。例えば、算出ルールがECMAScriptで記述されている場合には、ECMAScriptの文法に従ってルールを評価することによってコンテキスト算出を行う。
【００４４】
コンテキスト送信部１４は、算出したコンテキスト情報を外部ネットワークに送信する（ステップ３０６）。
【００４５】
以上のように、本実施形態によれば、ルール解釈部５が、コンテキスト算出部１３が状態記憶部を検索する際の検索キー、すなわち、算出ルールが計算の単位としているイベント中の要素をハッシュ算出キーとして抽出し、イベント分配部９は、ハッシュ算出キーに基づいて分配先のコンテキスト算出ノード２を決定し、そのコンテキスト算出ノード２に、イベントを送信するようにした。コンテキストの計算では、非同期に入力される複数のイベントや、過去の計算結果を参照する必要があるため、個々のコンテキストの計算単位に状態を持つ必要がある。すなわち、複数のノードで分散処理を行う場合、計算対象となる一連のイベントは同じ状態情報を共有する必要があるので、状態情報を共有する必要があるイベントを同じノードに集中させながら、共有する必要のないイベントを分散させることが望ましい。本実施形態によれば、状態を共有する必要があるイベントの処理を同じノードに集中させながら、共有する必要のないイベントの処理を分散させることができる。
【００４６】
また、ルール解釈部５が、算出ルール中で参照されているイベントの属性に基づいて、イベントに適用する算出ルールを決定するためのマッチルールを決定し、イベント分配部９は、イベントの分配先となるコンテキスト算出ノード２に、そのマッチルールに適合するコンテキスト算出ルールのルールＩＤを送信し、コンテキスト算出ノード２のコンテキスト算出部１３は、ルールＩＤに基づいてイベントに適用するコンテキスト算出ルールを取得するようにしたので、コンテキスト算出ノード２が、容易にイベントに適用する算出ルールを取得することができる。
【００４７】
実施の形態２．
図７は、本発明の実施の形態２によるコンテキスト算出システムの構成を示すブロック図である。
実施の形態２では、イベント分配ノード５０１が、再分配部５０３と、分配先記憶部５０４と、イベント分配部５０５を有する。また、コンテキスト算出ノード５０２が、負荷測定部５０６と、送信状態要求受信部５０７と、状態送信部５０８と、状態受信部５０９とを有する。その他の点は、実施の形態１と同様である。
【００４８】
再分配部５０３は、イベント分配時に再ハッシュに使用する除数の再計算を行い、負荷の高いコンテキスト算出ノード５０２の状態送信部５０８に負荷の低いコンテキスト算出ノード５０２への状態の送信を指示する。
【００４９】
分配先記憶部５０４は、ノード番号ごとに、分配時の再ハッシュに使用する除数を保持する。イベント分配部５０５は、分配ルール記憶部７に記憶されたハッシュ算出キーを使用してハッシュ値を計算し、その結果を分配先記憶部５０４の内容に応じて再ハッシュすることで分配先のコンテキスト算出ノード５０２を決定する。図８に分配先記憶部５０４に記憶される情報の例を示す。
【００５０】
負荷測定部５０６は、ＣＰＵ負荷等を測定することでコンテキスト算出ノード５０２の負荷を測定し、再分配部５０３に通知する。
【００５１】
送信状態要求受信部５０７は、再分配部５０３からの通知を受信する。状態送信部５０８は、特定のハッシュ値に対応する状態情報を状態記憶部１２から他のコンテキスト算出ノード５０２の状態受信部５０９に送信する。
【００５２】
状態受信部５０９は、他のコンテキスト算出ノード５０２の状態送信部５０８から状態情報を受信し、状態記憶部１２に記憶する。
【００５３】
図９を用いてイベントの再分配の手順について説明する。
負荷測定部５０６は、コンテキスト算出ノード５０２の負荷を測定する（ステップ６０１）。この負荷があらかじめシステム管理者によって設定された閾値を超えていない場合には何もせずに終了する（ステップ６０２）。
【００５４】
閾値を超えている場合には、負荷測定部５０６は再分配部５０３に通知し、再分配部５０３は分配先記憶部５０４における通知元のノード番号に対応する除数を２に変更する（ステップ６０３）。
【００５５】
ステップ６０３の変更によって除数が変化した場合には（ステップ６０４：Ｙｅｓ）、再分配部５０３は、送信状態要求受信部５０７に対して状態情報の移動を指示する（ステップ６０５）。移動先のノード番号は、再ハッシュによって決定する。再ハッシュは、通常のノード番号決定の際の除算結果の商を、さらに再ハッシュ除数で除することで得られる剰余によって得られる。例えば、ノード数が１０、ハッシュ値が１２３４、再ハッシュ除数が２の場合には、（１２３４／１０）％２＝１であり、この値に移動前のノード番号である４（＝１２３４％１０）を足したものが移動先のノード番号となる。ただし、‘／’は小数点以下切り捨ての除算を意味し、‘％’は剰余算を表している。
【００５６】
状態送信部５０８は、状態記憶部１２に保存された全ての状態情報のキーを取得し、そのキーの再ハッシュ値が１である状態情報の全てを移動先のコンテキスト算出ノード５０２の状態受信部５０９に送信し、自ノードの状態記憶部１２から削除する。状態受信部５０９は、状態記憶部１２に受信した状態情報を格納する。
【００５７】
次に、イベント処理手順について説明する。
実施の形態２では、図３に示すステップ３０４のイベント分配処理が、実施の形態１と異なるので、ステップ３０４の処理について説明する。
【００５８】
実施の形態１と同様に、まずイベント分配部５０５はマッチしたイベントの主体識別子または属性からハッシュ算出キーに対応する値を取得し、その値のハッシュ値を計算する。さらに、イベント分配部５０５はハッシュ値のノード数による剰余をキーとして分配先記憶部５０４に問い合わせを行い、再ハッシュ除数を得る。イベント分配部５０５はハッシュ値の剰余に再ハッシュ値を足すことで分配先のコンテキスト算出ノード５０２のノード番号を得る。このように求められたコンテキスト算出ノード５０２のコンテキスト算出部１３にイベントとマッチしたルールのルールＩＤを送信する。
【００５９】
なお、本実施形態では再ハッシュ関数としてハッシュ値の剰余を加算するものを用いているが、それに限定されず任意の再ハッシュ関数を使用することができる。また、再ハッシュ除数として２を用いているが、２より大きい数を用いることもできる。
【００６０】
本実施形態では、入力イベントに偏りがあり特定のコンテキスト算出ノード５０２に負荷が集中してしまった場合であっても、負荷情報をイベント分配ノード５０１にフィードバックすることで、負荷を分散し、性能を向上することができる。
【００６１】
上記の実施の形態の一部または全部は、以下の付記のようにも記載されうるが、以下には限られない。
（付記１）イベント分配ノードと、
複数のコンテキスト算出ノードと、を備え、
前記イベント分配ノードは、
少なくとも１つのコンテキストの要素およびその値を含むイベントを入力するためのイベント入力部と、
前記イベントに基づいて新たなコンテキストを算出するコンテキスト算出ルールを入力するためのルール入力部と、
前記コンテキスト算出ルールが計算の単位としている前記イベント中の要素に基づいて、前記イベントの分配先となる前記コンテキスト算出ノードを決定するためのキー情報を抽出するルール解釈部と、
前記コンテキスト算出ルールを全てのコンテキスト算出ノードに送信すると共に、前記キー情報に基づいて分配先のコンテキスト算出ノードを決定し、そのコンテキスト算出ノードに前記イベントを送信するイベント分配部と、を備え、
前記コンテキスト算出ノードは、
前記イベント分配ノードから受信した前記イベントに、前記コンテキスト算出ルールを適用して新たなコンテキストを算出するコンテキスト算出部、を備えたコンテキスト算出システム。
【００６２】
（付記２）前記ルール解釈部は、
前記コンテキスト算出ルール中で参照されている前記イベントの属性に基づいて、前記イベントに適用するコンテキスト算出ルールを決定するためのマッチルールを決定し、
前記イベントの分配先となる前記コンテキスト算出ノードに、そのマッチルールに適合するコンテキスト算出ルールのルールＩＤを送信し、
前記コンテキスト算出部は、前記ルールＩＤに基づいて前記イベントに適用するコンテキスト算出ルールを取得する、付記１に記載のコンテキスト算出システム。
【００６３】
（付記３）前記イベントの分配先となる前記コンテキスト算出ノードを決定するためのキー情報は、ハッシュ値を算出するためのキーであり、
前記イベント分配部は、
前記キー情報を用いてハッシュ値を計算し、計算したハッシュ値を用いて分配先のコンテキスト算出ノードを決定する、付記１または２に記載のコンテキスト算出システム。
【００６４】
（付記４）前記イベント分配ノードは、
分配先として決定されたコンテキスト算出ノードの負荷が高くなった際、前記キー情報を用いて他のコンテキスト算出ノードを選定する再分配部を備え、
前記イベント分配部は、
前記他のコンテキスト算出ノードに前記イベントを送信する、付記１から３のいずれかに記載のコンテキスト算出システム。
【００６５】
（付記５）イベント分配ノードが、コンテキスト算出ルールが計算の単位としているイベント中の要素に基づいて、前記イベントの分配先となるコンテキスト算出ノードを決定するためのキー情報を抽出する工程と、
前記コンテキスト算出ルールを全てのコンテキスト算出ノードに送信する工程と、
前記キー情報に基づいて分配先のコンテキスト算出ノードを選択し、そのコンテキスト算出ノードに、前記イベントを送信する工程と、
前記選択されたコンテキスト算出ノードが、前記イベント分配ノードから受信した前記イベントに、前記コンテキスト算出ルールを適用して新たなコンテキストを算出する工程と、を備えたコンテキスト算出方法。
【００６６】
（付記６）コンピュータを、
少なくとも１つのコンテキストの要素およびその値を含むイベントを入力するためのイベント入力部と、
前記イベントに基づいて新たなコンテキストを算出するコンテキスト算出ルールを入力するためのルール入力部と、
前記コンテキスト算出ルールが計算の単位としている前記イベント中の要素に基づいて、前記イベントの分配先となる前記コンテキスト算出ノードを決定するためのキー情報を抽出するルール解釈部と、
前記コンテキスト算出ルールを全てのコンテキスト算出ノードに送信すると共に、前記キー情報に基づいて分配先のコンテキスト算出ノードを決定し、そのコンテキスト算出ノードに前記イベントを送信するイベント分配部と、して機能させるプログラムを記録したコンピュータ読み取り可能な記録媒体。
【符号の説明】
【００６７】
１，５０１  イベント分配ノード、２，５０２  コンテキスト算出ノード、４  ルール入力部、５  ルール解釈部、６  ルール分配部、７  分配ルール記憶部、８  イベント入力部、９，５０５  イベント分配部、１０  算出ルール受信部、１１  算出ルール記憶部、１２  状態記憶部、１３  コンテキスト算出部、１４  コンテキスト送信部、５０３  再分配部、５０４  分配先記憶部、５０６  負荷測定部、５０７  送信状態要求受信部、５０８  状態送信部、５０９  状態受信部
【図１】
2012048294.tif 000003
【図２】
2012048294.tif 000004
【図３】
2012048294.tif 000005
【図４】
2012048294.tif 000006
【図５】
2012048294.tif 000007
【図６】
2012048294.tif 000008
【図７】
2012048294.tif 000009
【図８】
2012048294.tif 000010
【図９】
2012048294.tif 000011