(57)【要約】  各ノードにかかる負荷の調整を容易にすることができる情報処理システム、制御方法およびプログラムを提供すること。本発明にかかる情報処理システム５は、イベント情報を受信した場合に、イベント情報に含まれる属性名と属性値から、当該属性名及び属性値を大小比較可能な形式に変換した第１のキー情報を生成するキー情報生成部５１と、所定の属性名及び所定の範囲内の属性値の第２のキー情報を示す処理対象情報を予め保持する処理対象情報格納部５３と、イベント情報から生成された第１のキー情報と、処理対象情報とを比較することによって、当該イベント情報を処理対象とするか否かを判定する処理対象判定部５２と、処理対象判定部５２がイベント情報を処理対象としないと判定した場合に、当該イベント情報と、当該イベント情報から生成された第１のキー情報とを他の第１のノードに送信する情報転送部５４を有する第１のノードを複数備える。
2011070716.tif 000002
【特許請求の範囲】
【請求項１】
任意の情報を示す属性名と、当該任意の情報の値を示す属性値とを含むイベント情報を受信して、当該受信したイベント情報のうち、所定の属性名及び所定の範囲内の属性値を含んだイベント情報を処理対象とする第１のノードと、
前記第１のノードは、前記イベント情報を受信した場合に、当該イベント情報に含まれる属性名と属性値から、当該属性名及び属性値を大小比較可能な形式に変換した第１のキー情報を生成するキー情報生成手段と、
前記所定の属性名及び所定の範囲内の属性値の第２のキー情報を示す処理対象情報を予め保持する処理対象情報格納手段と、
前記イベント情報を受信した場合に、当該イベント情報から生成された第１のキー情報と、前記処理対象情報とを比較することによって、当該イベント情報を処理対象とするか否かを判定する処理対象判定手段と、
前記処理対象判定手段が前記イベント情報を処理対象としないと判定した場合に、当該イベント情報、又は、当該イベント情報及び当該イベント情報から生成された第１のキー情報を他の第１のノードに送信する情報転送手段と、を有する情報処理システム。
【請求項２】
前記第１のノードは、前記第１のノードが前記イベント情報に応じた処理を実行するためのイベント情報の属性名及び属性値の範囲を示すイベント条件情報を予め保持するイベント条件情報格納手段と、
前記処理対象判定部が前記イベント情報を処理対象とすると判定した場合に、当該イベント情報の属性名及び属性値と、前記イベント条件情報とに基づいて、当該イベント情報に応じた処理を実行するか否かを判定するイベント条件合致判定手段と、を更に有する請求項１に記載の情報処理システム。
【請求項３】
前記キー情報生成手段は、外部から前記イベント条件情報を受信した場合に、当該イベント条件情報が示す属性名及び属性値の範囲のうち、いずれかの属性名と属性値から、当該属性名及び属性値を大小比較可能な形式に変換した第３のキー情報を生成し、
前記処理対象判定手段は、前記イベント条件情報から生成した第３のキー情報と、前記処理対象情報とを比較することによって、当該イベント条件情報を処理対象とするか否かを判定し、
前記情報転送手段は、前記処理対象判定手段が前記イベント条件情報を処理対象としないと判定した場合に、当該イベント条件情報、又は、当該イベント条件情報及び当該イベント条件情報から生成された第３のキー情報を他の第１のノードに送信する請求項２に記載の情報処理システム。
【請求項４】
前記第１のノードは、前記イベント条件情報と、当該イベント条件情報を一意に識別する識別情報と、当該イベント条件情報の登録を要求する要求種別情報を受信したときに、前記処理対象判定手段が当該イベント条件情報を処理対象とすると判定した場合は、当該イベント条件情報を当該識別情報と対応付けて前記イベント条件情報格納手段に格納するとともに、前記イベント条件情報の識別情報と、当該イベント条件情報の削除を要求する要求種別情報を受信した場合に、前記イベント条件情報格納手段に格納されているイベント条件情報のうち、当該識別情報に対応付けられたイベント条件情報を削除するイベント条件情報制御手段を更に有する請求項３に記載の情報処理システム。
【請求項５】
前記属性値は、最小値及び最大値を有し、
前記キー情報生成手段は、前記イベント条件情報が示す属性名及び属性値の範囲のうち、前記最小値乃至最大値に占める当該属性値の範囲の割合が最小となる属性名及び属性値の範囲から第３のキー情報を生成する請求項３又は４に記載の情報処理システム。
【請求項６】
前記キー情報生成手段は、前記イベント情報又はイベント条件情報の生成元から夫々送信されたイベント情報又はイベント条件情報を受信した場合、前記第１又は第３のキー情報を生成し、
前記情報転送手段は、前記キー情報生成手段が前記第１のキー情報を生成した場合に、前記イベント情報と前記第１のキー情報を送信するとともに、前記キー情報生成手段が前記第３のキー情報を生成した場合に、前記イベント条件情報と前記第３のキー情報を送信する請求項３乃至５のいずれか１項に記載の情報処理システム。
【請求項７】
前記属性名は、大小関係が定義された文字列であり、
前記キー情報生成手段は、前記属性名をｎ１、ｎ２とし、前記属性値をｖ１、ｖ２（ｖ１及びｖ２は、任意の実数）とし、前記属性名ｎ１及び属性値ｖ１によって生成したキー情報をｋ１とし、前記属性名ｎ２及び属性値ｖ２によって生成したキー情報をｋ２としたときに、ｎ１＞ｎ２を満たす場合、又は、ｎ１＝ｎ２かつｖ１＞ｖ２を満たす場合には、ｋ１＞ｋ２となるようにキー情報を生成する請求項１乃至６のいずれか１項に記載の情報処理システム。
【請求項８】
前記複数の第１のノードは、異なる２以上の前記属性名を有する請求項１乃至７のいずれか１項に記載の情報処理システム。
【請求項９】
任意の情報を示す属性名と、当該任意の情報の値を示す属性値とを含むイベント情報を受信して、当該受信したイベント情報のうち、所定の属性名及び所定の範囲内の属性値を含んだイベント情報を処理対象とするノードの制御方法であって、
前記イベント情報を受信した場合に、当該イベント情報に含まれる属性名と属性値から、当該属性名及び属性値を大小比較可能な形式に変換した第１のキー情報を生成し、
前記イベント情報を受信した場合に、当該イベント情報から生成された第１のキー情報と、前記所定の属性名及び所定の範囲内の属性値の第２のキー情報を示し、予め保持されている処理対象情報とを比較することによって、当該イベント情報を処理対象とするか否かを判定し、
前記イベント情報を処理対象としないと判定した場合に、当該イベント情報、又は、当該イベント情報及び当該イベント情報から生成された第１のキー情報を他のノードに送信する制御方法。
【請求項１０】
任意の情報を示す属性名と、当該任意の情報の値を示す属性値とを含むイベント情報を受信して、当該受信したイベント情報のうち、所定の属性名及び所定の範囲内の属性値を含んだイベント情報を処理対象とするノードを制御するプログラムであって、
前記イベント情報を受信した場合に、当該イベント情報に含まれる属性名と属性値から、当該属性名及び属性値を大小比較可能な形式に変換した第１のキー情報を生成するステップと、
前記イベント情報を受信した場合に、当該イベント情報から生成された第１のキー情報と、前記所定の属性名及び所定の範囲内の属性値の第２のキー情報を示し、予め保持されている処理対象情報とを比較することによって、当該イベント情報を処理対象とするか否かを判定するステップと、
前記イベント情報を処理対象としないと判定した場合に、当該イベント情報、又は、当該イベント情報及び当該イベント情報から生成された第１のキー情報を他のノードに送信するステップと、をコンピュータに実行させるプログラムが格納された非一時的なコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、制御方法およびプログラムが格納された非一時的なコンピュータ可読媒体に関する。
【背景技術】
【０００２】
ＩＤ、位置、時刻などの複数の属性から構成されるデータ（以下、「イベント」とする）をアプリケーションに対して配信できるイベント配信システムがある。イベントは、１つ以上の属性から構成される。属性は、属性名と属性値から構成される。例えば、温度・湿度センサが観測した２０℃の温度、６０％の湿度を基にイベントを生成する場合、イベントは、属性名が"温度"で、それに対する属性値が２０℃である属性と、属性名が"湿度"で、それに対する属性値が６０％である属性から構成されるように表現できる。【０００３】
イベント配信システムには、外部プログラム（サブスクライバ）からサブスクリプションＩＤと、要求種別と、サブスクリプションとが入力（サブスクライブ）される。サブスクリプションＩＤは、サブスクリプションを識別するための情報である。要求種別は、登録要求か削除要求かを識別するための情報である。サブスクリプションは、イベントの条件（イベント条件）と、通知先のアプリケーションのＩＤ（アプリケーションＩＤ）とから構成される。登録要求の場合、サブスクリプションＩＤとサブスクリプションがペアでイベント配信システムに記憶される。【０００４】
イベントが発生すると、外部プログラム（パブリッシャ）から発生したイベントが、イベント配信システムに入力（パブリッシュ）される。イベント配信システムは、イベントが登録されているサブスクリプションのイベント条件に合致すると、該イベント条件とペアで指定されているアプリケーションＩＤで特定されるアプリケーションに対して該イベントを送信する。【０００５】
イベント条件として、複数の属性条件を記述できる。属性条件として、属性名と、それに対する属性値の範囲を指定できる。イベント条件を構成する全ての属性条件について、属性条件で指定される属性名をイベントが含んでおり、かつ、属性条件で指定される属性値の範囲が、イベントに記述される該属性名に対する属性値を包含している場合、該イベントは該イベント条件に合致するという。例えば、属性名が"温度"で、その属性名に対する属性値の範囲が"１０℃以上３０℃以下"であるイベント条件がイベント配信システムに登録されているとする。その状態で、属性名が"温度"で、その属性名に対する属性値が"２０℃"である属性と、属性名が"湿度"で、その属性名に対する属性値が"６０％"である属性を含むイベントが発生したとする。イベント条件で指定される属性名"温度"については、"２０℃"が"１０℃以上３０℃以下"に含まれる。そのため、該イベントは該イベント条件に合致すると言える。属性名"湿度"については、該イベント条件で指定されていないので、該イベント条件に合致するかどうかに影響を与えない。【０００６】
このようにイベントを処理する技術の一例が、非特許文献１に記載されている。図１９は、非特許文献１に記載される技術を説明する図である。図１９に示すイベント（図１９中のｐｕｂｌｉｃａｔｉｏｎ）とイベント条件（図１９中のｓｕｂｓｃｒｉｐｔｉｏｎ）は、属性名ｘと属性名ｙから構成される。該イベントには、属性名ｘに対する属性値が１００であり、属性名ｙに対する属性値が２００であることが記述されている。該イベント条件には、属性名ｘに対する属性値の範囲が５０以上１５０以下であり、属性名ｙに対する属性値の範囲が１５０以上２５０以下であることが記述されている。該イベントは該イベント条件に合致する。【０００７】
図１９に示すシステムは、各属性名と１対１に対応するサブシステム（ハブ）から構成される。ハブは１つ以上のノードをリング状に構成するものである。あるノードから見て、リング上の次のノードをサクセッサと呼ぶ。ハブに属するノードは、該ハブに対応する属性名に対する属性値の範囲（属性値範囲）を管理する。【０００８】
ノードがサブスクライバからのサブスクリプション、又は、パブリッシャからのイベントを受信した場合、ノードは、該ノードが属するハブとは別のハブに属するノードに、イベントやサブスクリプションを転送する。そのため、ノードは、該ノードが属するハブとは別のハブに属するノードのネットワークアドレスを保持する（以下、そのようなノードを「クロスハブ隣接ノード」と呼ぶ）。クロスハブ隣接ノードを決定する方法が非特許文献２に開示されている。【０００９】
新しくノードがハブに参加した直後では、該ノードのサクセッサのクロスハブ隣接ノードを該ノードのクロスハブ隣接ノードリンクとする。その後、メンテナンスプロセスを開始する。メンテナンスプロセスでは、他の各ハブでランダムウォークを行い、新規のクロスハブ隣接ノードを決定する。ランダムウォークとは、ランダムウォークを開始するノードから、ルーティングテーブルに記録されている任意のノードへアクセス（ホップ）し、アクセスされたノードから、さらに上記と同じ手段でホップしていくことを、あらかじめ定めされているホップ数に至るまで繰り返すことである。そして、あらかじめ定められたホップ数に至ったときに到達しているノードをクロスハブ隣接ノードとして決定する。
【先行技術文献】
【非特許文献】
【００１０】
【非特許文献１】Ashwin R. Bharambe, Sanjay Rao and Srinivasan Seshan: "Mercury: A Scalable Publish-Subscribe System for Internet Games", Proc. of 1st Workshop on Network and System Support for Games (NetGames2002), April 2002.
【非特許文献２】Ashwin R. Bharambe , Mukesh Agrawal , Srinivasan Seshan, "Mercury: Supporting Scalable Multi-attribute Range Queries," ACM SIGCOMM Computer Communication Review, Vol.34 No.4, October 2004.
【発明の概要】
【発明が解決しようとする課題】
【００１１】
ところで、非特許文献１、２に開示されているようなシステムを構築する場合、各ノードに情報処理装置のリソース（計算リソースやメモリリソース）の全部又は一部を割り当てて構成することが考えられる。そして、非特許文献１、２に開示されているような各属性名のそれぞれに対応するハブを有するシステムでは、特定のハブに含まれる特定のノードに負荷が集中している場合、まず、そのハブに含まれる各ノードが管理する属性値の範囲を調整することが考えられる。これによって、ノードにかかる負荷を均等にして負荷を調整する。次に、それでもノードの負荷が十分に軽減できない場合は、他のハブに割り当てられているリソースを、その特定のハブに移動して負荷を調整することが考えられる。このように各ノードにかかる負荷を均等にすることで、特定のノードに負荷が集中して、そのノードがボトルネックとなってシステム全体としてのイベント処理性能が低下してしまうという事態を回避することができる。【００１２】
しかし、異なるハブに属するノード間でリソースの移動がある場合、そのリソースによって新規にノードを構築しなければならない場合がある。その場合、各ノードが管理する属性値の範囲の調整の他に、サクセッサやクロスハブ隣接ノード等を割り当てる必要があるため、非常に手間がかかってしまうというという問題がある。
あるノードに、該ノードが属するハブとは別のハブから割り当てられるリソースが、その時点で、該ノードが動作する情報処理装置とは、別の情報処理装置上のリソースである場合がある。その場合には、ノードは複数の情報処理装置上にまたがって動作することはできないため、新規にノードを構築しなければならない。【００１３】
また、非特許文献２に開示の技術では、各ノードが、クロスハブ隣接ノードを決定するために、各ハブでランダムウォークを行う必要がある。そのため、ランダムウォークを行うための処理コストがかかってしまうという問題がある。これは各ハブに含まれるノードにかかる負荷を増大することにもつながる。【００１４】
以上に説明したように、各属性名のそれぞれに対応するハブを有するシステムでは、各ノードにかかる負荷の調整に非常に手間がかかってしまうという問題がある。【００１５】
本発明の目的は、上述した課題を解決するために、各ノードにかかる負荷の調整を容易にすることができる情報処理システム、制御方法およびプログラムを提供することにある。
【課題を解決するための手段】
【００１６】
本発明の第１の態様にかかる情報処理システムは、任意の情報を示す属性名と、当該任意の情報の値を示す属性値とを含むイベント情報を受信して、当該受信したイベント情報のうち、所定の属性名及び所定の範囲内の属性値を含んだイベント情報を処理対象とする第１のノードを複数備えた情報処理システムであって、前記第１のノードは、前記イベント情報を受信した場合に、当該イベント情報に含まれる属性名と属性値から、当該属性名及び属性値を大小比較可能な形式に変換した第１のキー情報を生成するキー情報生成部と、前記所定の属性名及び所定の範囲内の属性値の第２のキー情報を示す処理対象情報を予め保持する処理対象情報格納部と、前記イベント情報を受信した場合に、当該イベント情報から生成された第１のキー情報と、前記処理対象情報とを比較することによって、当該イベント情報を処理対象とするか否かを判定する処理対象判定部と、前記処理対象判定部が前記イベント情報を処理対象としないと判定した場合に、当該イベント情報、又は、当該イベント情報及び当該イベント情報から生成された第１のキー情報を他の第１のノードに送信する情報転送部と、を有するものである。【００１７】
本発明の第２の態様にかかる制御方法は、任意の情報を示す属性名と、当該任意の情報の値を示す属性値とを含むイベント情報を受信して、当該受信したイベント情報のうち、所定の属性名及び所定の範囲内の属性値を含んだイベント情報を処理対象とするノードの制御方法であって、前記イベント情報を受信した場合に、当該イベント情報に含まれる属性名及び属性値を大小比較可能な形式に変換した第１のキー情報を生成するステップと、前記イベント情報を受信した場合に、当該イベント情報から生成された第１のキー情報と、前記所定の属性名及び所定の範囲内の属性値の第２のキー情報を示し、予め保持された処理対象情報とを比較することによって、当該イベント情報を処理対象とするか否かを判定するステップと、前記イベント情報を処理対象としないと判定した場合に、当該イベント情報、又は、当該イベント情報及び当該イベント情報から生成された第１のキー情報を他のノードに送信するステップと、を備えたものである。【００１８】
本発明の第３の態様にかかるプログラムは、任意の情報を示す属性名と、当該任意の情報の値を示す属性値とを含むイベント情報を受信して、当該受信したイベント情報のうち、所定の属性名及び所定の範囲内の属性値を含んだイベント情報を処理対象とするノードを制御するプログラムであって、前記イベント情報を受信した場合に、当該イベント情報に含まれる属性名及び属性値を大小比較可能な形式に変換した第１のキー情報を生成するステップと、前記イベント情報を受信した場合に、当該イベント情報から生成された第１のキー情報と、前記所定の属性名及び所定の範囲内の属性値の第２のキー情報を示し、予め保持されている処理対象情報とを比較することによって、当該イベント情報を処理対象とするか否かを判定するステップと、前記イベント情報を処理対象としないと判定した場合に、当該イベント情報、又は、当該イベント情報及び当該イベント情報から生成された第１のキー情報を他のノードに送信するステップと、をコンピュータに実行させるものである。
【発明の効果】
【００１９】
上述した本発明によれば、各ノードにかかる負荷の調整を容易にすることができる情報処理システム、制御方法およびプログラムを提供することができる。
【図面の簡単な説明】
【００２０】
【図１】本発明の実施の形態にかかる情報処理システムの構成図である。
【図２】本発明の実施の形態にかかるイベント配信システムの構成図である。
【図３】本発明の実施の形態にかかるノードの構成図である。
【図４】本発明の実施の形態にかかるサブスクリプション転送情報生成部における動作を示すフローチャートである。
【図５】本発明の実施の形態にかかる属性値が取り得る最小値乃至最大値の範囲と、イベント条件で指定されている属性値の範囲と、最小値乃至最大値に占める当該属性値の範囲の割合との関係の一例を示す図である。
【図６】本発明の実施の形態にかかるイベント転送情報生成部における動作を示すフローチャートである。
【図７】本発明の実施の形態にかかるメッセージ判定部における動作を示すフローチャートである。
【図８】本発明の実施の形態にかかるサブスクリプション配置制御部における動作を示すフローチャートである。
【図９】本発明の実施の形態にかかるサブスクリプション登録・削除処理のフローチャートである。
【図１０】本発明の実施の形態にかかるサブスクリプション転送処理のフローチャートである。
【図１１】本発明の実施の形態にかかるサブスクリプション管理部における動作を示すフローチャートである。
【図１２】本発明の実施の形態にかかるサブスクリプション管理テーブルの一例を示す図である。
【図１３】種別が登録の場合のサブスクリプション操作要求を示す図である。
【図１４】種別が削除の場合のサブスクリプション操作要求を示す図である。
【図１５】種別が参照の場合のサブスクリプション操作要求を示す図である。
【図１６】本発明の実施の形態にかかるイベント条件合致判定部における動作を示すフローチャートである。
【図１７】本発明の実施の形態にかかるメッセージ転送部における動作を示すフローチャートである。
【図１８】本発明の実施の形態にかかるイベント配信システムの動作例を示す図である。
【図１９】背景技術を説明するための図である。
【発明を実施するための形態】
【００２１】
本発明の実施の形態．
まず、図１を参照して、本発明の実施の形態にかかるイベント配信システムの概要について説明する。図１は、本発明の実施の形態にかかるイベント配信システムの概要構成となる情報処理システムの構成図である。
【００２２】
情報処理システム５は、複数のノード５０、６０を含む。ノード５０は、キー情報生成部５１、処理対象判定部５２、処理対象情報格納部５３及び情報転送部５４を備える。なお、ノード６０の構成については、ノード５０の構成と同様であるため、説明を省略する。
ノード５０、６０のそれぞれは、属性名と、属性値とを含むイベント情報を受信する。属性名は、任意の情報を示す。属性値は、この任意の情報の値を示す。ノード５０、６０のそれぞれは、受信したイベント情報のうち、所定の属性名及び所定の範囲内の属性値を含んだイベント情報を処理対象とする。
【００２３】
キー情報生成部５１は、イベント情報を受信した場合に、このイベント情報に含まれる属性名と属性値から、この属性名及び属性値を大小比較可能な形式に変換した第１のキー情報を生成する。
処理対象判定部５２は、イベント情報を受信した場合に、このイベント情報から生成された第１のキー情報と、処理対象情報格納部５３に格納される処理対象情報とを比較する。ことによって、処理対象判定部５２は、このイベント情報を処理対象とするか否かを判定する。
処理対象情報格納部５３は、処理対象情報を予め保持する。処理対象情報は、所定の属性名及び所定の範囲内の属性値の第２のキー情報を示す。
情報転送部５４は、処理対象判定部５２がイベント情報を処理対象としないと判定した場合に、このイベント情報と、このイベント情報から生成された第１のキー情報とを他のノードに送信する。
【００２４】
続いて、本発明の実施の形態にかかる情報処理システムの処理について説明する。
まず、キー情報生成部５１は、イベント情報を受信した場合に、このイベント情報に含まれる属性名と属性値から、この属性名及び属性値を大小比較可能な形式に変換した第１のキー情報を生成する。そして、キー情報生成部５１は、イベント情報と、そのイベント情報から生成された第１のキー情報を処理対象判定部５２に出力する。
処理対象判定部５２は、キー情報生成部５１から出力されたイベント情報及び第１のキー情報を取得すると、処理対象情報格納部５３に格納されている処理対象情報を取得する。そして、処理対象判定部５２は、取得した第１のキー情報と処理対象情報とを比較することによって、取得したイベント情報を処理対象とするか否かを判定する。
情報転送部５４は、処理対象判定部５２がイベント情報を処理対象としないと判定した場合に、このイベント情報と共に、このイベント情報から生成された第１のキー情報を他のノードに送信する。
【００２５】
続いて、本発明の実施の形態にかかるイベント配信システムについて詳細に説明する。図２を参照して、本実施の形態にかかるイベント配信システムの構成について説明する。図２は、イベント配信システムの構成図である。
【００２６】
イベント配信システム１は、1つ以上のノードから構成される。イベント配信システムでは、有限の値（キー）空間を管理する。異なるキーの間には順序が定義される。各ノードは、連続するキーの範囲を管理する。
【００２７】
本実施の形態では、イベント及びサブスクリプションに含まれる属性名及び属性値を大小比較可能な形式に変換したキーを生成するキー生成関数を用意する。つまり、キー生成関数は、キーを戻り値とする関数である。属性名をｎ、属性値をｖとすると、キーを生成するキー生成関数はｆ（ｎ，ｖ）で表される。なお、ｎは文字列であり、ｖは、任意の実数である。属性名、属性値にはそれぞれ順序が定義されているとする。つまり、属性名には、大小関係が定義されている。例えば、属性名が文字列で表され、順序関係が辞書式順序に従う場合、属性名"温度"は、属性名"時刻"より小さい値となる。ｆ（ｎ，ｖ）は、ｎ１＞ｎ２ならば、ｆ（ｎ１，ｖ１）＞ｆ（ｎ２，ｖ２）を満たす関数である。ここで、ｖ１とｖ２は任意の値である。さらにｆ（ｎ，ｖ）は、ｎ１＝ｎ２かつｖ１＞ｖ２ならば、ｆ（ｎ１，ｖ１）＞ｆ（ｎ２，ｖ２）を満たす関数である。
【００２８】
キー生成関数の例を示す。ここで例示するキー生成関数をｆ１（ｎ，ｖ）と記述する。属性名が文字列で表されるとする。属性値は３桁までの１０進整数（０から９９９まで）で表されるとする。ｆ１（ｎ，ｖ）は、まず、属性値を文字列に変換する。ｆ１（ｎ，ｖ）は、属性値が０から９９までの場合には、上位桁に０を追加し、３文字にする。例えば、属性値２０は変換後、文字列"０２０"となる。関数ｆ１（ｎ，ｖ）は、その後、属性名の文字列と属性値の文字列をデリミタを間に挟んで結合する。関数ｆ１（ｎ，ｖ）は、結合後の文字列をｆ１（ｎ，ｖ）の戻り値とする。デリミタとして、属性名と属性値のいずれにも使用されない記号を使用する。例えば、デリミタを"："とすると、ｆ１（"ｘ"，２０）＝"ｘ：０２０"となる。
【００２９】
キー生成関数の他の例を示す。ここで例示するキー生成関数をｆ２（ｎ，ｖ）と記述する。ｆ１（ｎ，ｖ）で求められる文字列は、ＰＣ（Personal computer）やサーバ等の情報処理装置内では、文字コードによって、ビット列で表現される。ｆ２（ｎ，ｖ）は、ｆ１（ｎ，ｖ）で求められる文字列を文字コードによって表現したビット列のうち、上位から所定のビット数を戻り値とする。例えば、そのビット列の上位１６０ビットをｆ２の戻り値とする。文字コードが４バイトの場合、"ｘ：０２０"は１６０ビット（４バイト×５文字×８）となる。そのため、"ｘ：０２０"を文字コードによって表現したビット列の全てが戻り値となる。
【００３０】
本実施の形態では、イベント配信システム１は、ノードａからノードｇまでの７つのノードが存在している場合について例示する。該イベント配信システム１では、取り得る属性値の範囲が０以上３２０未満の整数である属性名"ｘ"と、取り得る属性値の範囲が０以上３２０未満である属性名"ｙ"との２つの属性をサポートしているものとする。つまり、属性値のそれぞれは最小値及び最大値を有する。文字列の順序関係が、"："＜"０"＜"１"＜・・・＜"９"＜"ａ"＜"ｂ"＜・・・＜"ｚ"である場合について例示する。例えば、ノードａは、"ｘ：１６０"以上の文字列で、"ｘ：２４０"より小さい文字列を管理する。例えば、キー"ｘ：２００"はノードａが管理する。
【００３１】
ここで、ノードａ〜ｇは、情報処理装置又はその一部から構成される。つまり、１つのノードは、１つの情報処理装置から構成されていてもよい。また、１つのノードは、情報処理装置に含まれるメモリ、ＣＰＵ（Central Processing Unit）及びハードディスク等のリソースが任意の量割り当てられて構成されるようにしてもよい。つまり、複数のノードが１つの情報処理装置から構成される場合がある。
【００３２】
続いて、本実施の形態にかかるノードの構成について説明する。図３は、ノードの構成図である。
ノード１０は、サブスクリプション転送情報生成部１１と、イベント転送情報生成部１２と、メッセージ判定部１３と、サブスクリプション配置制御部１４と、サブスクリプション管理部１５と、イベント条件合致判定部１６と、メッセージ転送部１７と、を有する。なお、ノード２０の構成については、ノード１０の構成と同様であるため、説明を省略する。つまり、イベント配信システム１に含まれるノードａ〜ｇのそれぞれは、ノード１０の構成と同様である。
【００３３】
サブスクリプション転送情報生成部１１は、サブスクライバ３１から入力されたサブスクリプションから、そのサブスクリプションを転送するために必要な情報を生成する。
イベント転送情報生成部１２は、パブリッシャ３２から入力されたイベントから、そのイベントを転送するために必要な情報を生成する。サブスクリプション転送情報生成部１１及びイベント転送情報生成部１２が生成する情報には、キーが含まれる。サブスクリプション転送情報生成部１１及びイベント転送情報生成部１２は、キー情報生成部５１として機能する。
メッセージ判定部１３は、ノード１０宛に送られてきたメッセージがサブスクリプションかイベントかを判定する。
【００３４】
サブスクリプション配置制御部１４は、サブスクリプションをどのノードに配置するかを制御する。
サブスクリプション管理部１５は、サブスクリプションをノード内に記憶する。サブスクリプション管理部１５は、イベント条件情報格納部に相当する。
イベント条件合致判定部１６は、受信したイベントがイベント条件に合致するかどうかを判定する。
メッセージ転送部１７は、入力されるキーで決まるノードに対して、イベントを含んだメッセージや、サブスクリプションＩＤ、サブスクリプション及び要求種別を含んだメッセージを転送する。メッセージ転送部１７は、処理対象判定部５２及び情報転送部５４として機能する。
【００３５】
続いて、図４を参照して、本実施の形態にかかるサブスクリプション転送情報生成部１１における動作について説明する。図４は、サブスクリプション転送情報生成部１１における動作を示すフローチャートである。
【００３６】
サブスクライバ３１からノード１０へサブスクリプションが入力されると、入力されたサブスクリプションは、まず、サブスクリプション転送情報生成部１１で処理される（Ｓ１０１）。サブスクリプション転送情報生成部１１は、受信したサブスクリプションの構成要素であるイベント条件を構成する属性名群から１つの属性を選択する（Ｓ１０２）。次に、サブスクリプション転送情報生成部１１は、選択した属性名とそれに対する属性値範囲の最小値からキーを生成する（Ｓ１０３）。最後に、サブスクリプション転送情報生成部１１は、生成したキーとサブスクリプションをペアとして、メッセージ転送部１７へ入力する。これにより、そのキーを管理するノードへサブスクリプションが含まれるメッセージが転送される。
【００３７】
イベント条件を構成する属性名群から1つの属性を選択する方法として、例えば、イベント条件を構成する各属性名について、属性値が取り得る値の範囲に対する、イベント条件として指定されている属性値範囲の割合を求め、最も割合が小さい属性名を選択する方法がある。図５に、属性値が取り得る最小値乃至最大値の範囲と、イベント条件で指定されている属性値の範囲と、最小値乃至最大値に占める属性値の範囲の割合との関係の一例を示す。属性名"ｘ"に対する属性値が取り得る値の数が１００で、イベント条件で指定された属性値範囲のサイズが１０であるとすると、割合は、１／１０となる。属性名"ｙ"に対する属性値が取り得る値の数が３００で、イベント条件で指定された属性値範囲のサイズが５０であるとすると、割合は１／６となる。よって、この例の場合、より割合の小さい属性名"ｘ"が選択される。そして、属性名"ｘ"と、その属性名"ｘ"に対応する属性値範囲の最小値である属性値"１１"からキーが生成される。属性名と属性値からのキーの生成には、前述しているキー生成関数を用いる。
【００３８】
ここで、サブスクリプションのイベント条件に含まれる属性名群から選択した属性の属性値の範囲と、ノードが管理する属性値の範囲が重複する場合に、そのノードにサブスクリプションが登録される。したがって、最も割合が小さい属性名を選択した場合は、サブスクリプションが登録されるノード数を低減することができる。
【００３９】
続いて、図６を参照して、本実施の形態にかかるイベント転送情報生成部１２における動作について説明する。図６は、イベント転送情報生成部１２の動作を示すフローチャートである。
【００４０】
パブリッシャ３２から入力されたイベントは、まず、イベント転送情報生成部１２で処理される（Ｓ１１１）。イベント転送情報生成部１２は、受信したイベントを構成する各属性名について、以下の処理を行う。まず、イベント転送情報生成部１２は、属性名ｎとその属性名ｎに対する属性値ｖをキー生成関数へ入力してキーを生成する（Ｓ１１２）。次に、イベント転送情報生成部１２は、生成したキーとイベントをペアとして、メッセージ転送部１７へ入力することによって、そのキーを管理するノードへメッセージを転送する（Ｓ１１３）。
【００４１】
続いて、図７を参照して、本実施の形態にかかるメッセージ判定部１３における動作について説明する。図７は、メッセージ判定部１３の動作を示すフローチャートである。
【００４２】
メッセージ判定部１３は、メッセージ転送部１７からキーとメッセージを受信する（Ｓ１２１）。メッセージ判定部１３は、受信したメッセージの内容を判定する（Ｓ１２２）。メッセージ判定部１３は、メッセージがサブスクリプションであれば、該キーと該メッセージをサブスクリプション配置制御部１４へ入力して処理を終了する（Ｓ１２３）。一方、メッセージ判定部１３は、メッセージがイベントであれば、該キーと該メッセージをイベント条件合致判定部１６にメッセージを入力して処理を終了する（Ｓ１２４）。
【００４３】
続いて、図８〜１０を参照して、本実施の形態にかかるサブスクリプション配置制御部１４における動作について説明する。図８は、サブスクリプション配置制御部１４の動作を示すフローチャートである。
【００４４】
サブスクリプション配置制御部１４は、メッセージ判定部１３からキーとメッセージを受信する（Ｓ１３１）。その後、サブスクリプション配置制御部１４は、サブスクリプション登録・削除処理（Ｓ１３２）と、サブスクリプション転送処理（Ｓ１３３）を行う。以降、前記２つの処理を説明する。
【００４５】
図９は、サブスクリプション登録・削除処理を示すフローチャートである。サブスクリプション登録・削除処理では、まず、サブスクリプション配置制御部１４は、メッセージの要求種別を判定する（Ｓ１４１）。メッセージが登録要求である場合、サブスクリプション配置制御部１４は、種別を登録として、メッセージに含まれるサブスクリプションＩＤとサブスクリプションからサブスクリプション操作要求を生成する（Ｓ１４２）。サブスクリプション配置制御部１４は、生成したサブスクリプション操作要求をサブスクリプション管理部１５に入力する（Ｓ１４４）。一方、メッセージが削除要求である場合、サブスクリプション配置制御部１４は、種別を削除として、メッセージに含まれるサブスクリプションＩＤからサブスクリプション操作要求を生成する（Ｓ１４３）。サブスクリプション配置制御部１４は、生成したサブスクリプション操作要求をサブスクリプション管理部１５に入力する（Ｓ１４４）。
【００４６】
図１０は、サブスクリプション転送処理を示すフローチャートである。サブスクリプション転送処理では、まず、サブスクリプション配置制御部１４は、メッセージに含まれる属性名と、その属性名に対する属性値範囲の最大値からキー（ターゲットキー）を生成する（Ｓ１５１）。次に、サブスクリプション配置制御部１４は、ターゲットキーが、本処理を実行しているノードが管理するキー範囲に含まれるかどうかを判定する（Ｓ１５２）。ターゲットキーがキー範囲に含まれていない場合、サブスクリプション配置制御部１４は、サクセッサが管理するキーの最小値（新規キー）を生成する（Ｓ１５３）。その後、サブスクリプション配置制御部１４は、ネクストホップとしてサクセッサを指定して、メッセージ転送部１７へ新規キーとメッセージを入力する（Ｓ１５４）。
【００４７】
続いて、図１１を参照して、本実施の形態にかかるサブスクリプション管理部１５における動作について説明する。図１１は、サブスクリプション管理部１５の動作を示すフローチャートである。
【００４８】
サブスクリプション管理部１５は、サブスクリプションＩＤとサブスクリプションを管理するサブスクリプション管理テーブルを有する。サブスクリプション管理テーブルの例を図１２に示す。サブスクリプション管理テーブルには、サブスクリプションＩＤと、サブスクリプションとが対応付けられたレコードが格納される。
【００４９】
サブスクリプション管理部１５は、サブスクリプション配置制御部１４、あるいは、イベント条件合致判定部１６から、サブスクリプション操作要求を受信する（Ｓ１６１）。
サブスクリプション操作要求は、その構成要素の１つとして種別を含む。種別には、登録、削除、参照がある。種別ごとにサブスクリプション操作要求の構成要素は異なる。種別が登録の場合のサブスクリプション操作要求を図１３に示す。種別が登録の場合、サブスクリプション操作要求は、種別に加えて、サブスクリプションＩＤとサブスクリプションとから構成される。種別が削除の場合のサブスクリプション操作要求を図１４に示す。種別が削除の場合、サブスクリプション操作要求は、種別に加えて、サブスクリプションＩＤから構成される。種別が参照の場合のサブスクリプション操作要求を図１５に示す。種別が参照の場合、サブスクリプション操作要求は、種別のみから構成される。
【００５０】
サブスクリプション管理部１５は、サブスクリプション操作要求を受信すると、まず、受信したサブスクリプション操作要求の種別を参照する（Ｓ１６２）。種別が登録の場合、サブスクリプション管理部１５は、サブスクリプションとサブスクリプションＩＤのペアをレコードとしてサブスクリプション管理テーブルに追加する（Ｓ１６３）。種別が削除の場合、サブスクリプション管理部１５は、サブスクリプションＩＤが一致するレコードをサブスクリプション管理テーブルから削除する（Ｓ１６４）。種別が参照の場合、サブスクリプション管理部１５は、サブスクリプション管理テーブルを呼び出し元に返す（Ｓ１６５）。
【００５１】
続いて、図１６を参照して、本実施の形態にかかるイベント条件合致判定部１６における動作について説明する。図１６は、イベント条件合致判定部１６の動作を示すフローチャートである。
【００５２】
イベント条件合致判定部１６は、メッセージ転送部１７からイベントを受信すると（Ｓ１７１）、サブスクリプション管理部１５へ種別を参照としたサブスクリプション操作要求を入力することによって、サブスクリプション管理部１５からサブスクリプション管理テーブルを取得する（Ｓ１７２）。イベント条件合致判定部１６は、取得したサブスクリプション管理テーブルの各レコードｒについて、以下の処理を実行する。まず、イベント条件合致判定部１６は、イベントが、レコードｒのサブスクリプションの構成要素の１つであるイベント条件に合致するかどうかを判定する（Ｓ１７３）。イベントがイベント条件に合致した場合には、次に、イベント条件合致判定部１６は、レコードｒのサブスクリプションＩＤとイベントのペアを、レコードｒのサブスクリプションの構成要素の１つであるアプリケーションＩＤで識別されるアプリケーション４０に送信する（Ｓ１７４）。
【００５３】
続いて、図１７を参照して、本実施の形態にかかるメッセージ転送部１７における動作について説明する。図１７は、メッセージ転送部１７の動作を示すフローチャートである。
【００５４】
メッセージ転送部１７は、サブスクリプション転送情報生成部１１、イベント転送情報生成部１２、サブスクリプション配置制御部１４、あるいは、本処理が動作するノードとは別のノードからキーとメッセージを受信する（Ｓ１８１）。メッセージ転送部１７は、キーとメッセージを受信すると、受信したキーが本処理が動作するノードが管理するキー範囲に含まれるかどうかを判定する（Ｓ１８２）。例えば、メッセージ転送部１７を含むノード１０に、メモリやハードディスク等の任意の記憶装置を有するようにする。また、この記憶装置にノード１０が管理するキー範囲を示すキー範囲情報を格納するようにする。そして、メッセージ転送部１７が、受信したキーと、キー範囲情報とを比較することによってここでの判定を可能とする。この記憶装置は、処理対象情報格納部５３に相当する。
【００５５】
キーが管理するキー範囲に含まれる場合、メッセージ転送部１７は、メッセージ判定部１３へキーとメッセージを入力する（Ｓ１８３）。キーが管理するキー範囲に含まれない場合、メッセージ転送部１７は、ネクストホップノードとしてサクセッサが指定されているか否かを判定する（Ｓ１８４）。ネクストホップノードにサクセッサが指定されていない場合、メッセージ転送部１７は、ルーティングテーブルを参照し、転送先のノードを決定する（Ｓ１８５）。そして、メッセージ転送部１７は、ネクストホップノードにキーとメッセージを転送する（Ｓ１８６）。
【００５６】
ルーティングテーブルでは、キーとノードのネットワークアドレスとのペアが管理されている。メッセージ転送部１７は、ルーティングテーブルを有する。ルーティングテーブルは、例えば、メッセージ転送部１７が有する任意の記憶装置に格納される。ルーティングテーブルの生成方法と、メンテナンス方法と、ルーティングテーブルを参照して、メッセージの転送先のノードを決定する方法はルーティングプロトコルに依存する。ルーティングプロトコルの例として、非特許文献２の３．３節に記述される方法を利用できる。ルーティングプロトコルは、任意に決定してもよく、例えば、「送信するキー＞ノードが管理するキー範囲の最小値」となるノードのうち、「（送信するキー）−（ノードが管理するキー範囲の最小値）」が最小となるノードに、キー及びメッセージが到達するように送信する。
【００５７】
続いて、図１８を参照して、本実施の形態にかかるイベント配信システム１における動作について説明する。図１８は、イベント配信システム１の動作例を示す図である。
【００５８】
イベント配信システム１の構成要素であるノードｇが、サブスクライバ３１からサブスクリプションｓ（５０≦ｘ≦１５０＆１５０≦ｙ≦２５０，ａｐｐ１）を受信したとする（Ｓ８０）。
【００５９】
ノードｇは、サブスクリプション転送情報生成部１１でサブスクリプションｓを構成する属性ｘと属性ｙから、属性ｘを選択する（Ｓ８１）。次に、サブスクリプション転送情報生成部１１は、属性ｘと、その属性ｘの属性値範囲の最小値である５０とからキー"ｘ：０５０"を生成する。なお、サブスクリプション転送情報生成部１１は、サブスクリプションとともに、サブスクリプションＩＤ及び要求種別が、サブスクライバ３１から入力される。サブスクリプション転送情報生成部１１は、サブスクリプションＩＤ、サブスクリプション及び要求種別に、選択した属性名"ｘ"を合わせてメッセージを生成する。サブスクリプション転送情報生成部１１は、キーとメッセージをメッセージ転送部１７へ入力する。そして、メッセージ転送部１７は、入力されたキー及びメッセージをルーティングプロトコルにしたがって、そのキーを管理するノードに対して送信する。
【００６０】
ノードｇのメッセージ転送部１７から送信されたキー及びメッセージは、０以上のノードのメッセージ転送部１７を経由して、最終的に、キー"ｘ：０５０"を管理するノードｃのメッセージ転送部に到達する（Ｓ８２）。つまり、ノードｇから送信されたキー及びメッセージは、ノードｅ、ｆを経由してノードｃに到達するようにしてもよく、ノードｇから直接ノードｃに到達するようにしてもよい。ここでは、「送信するキー＞ノードが管理するキー範囲の最小値」となるノードのうち、「（送信するキー）−（ノードが管理するキー範囲の最小値）」が最小となるノードｃに、キー及びメッセージが到達する。
【００６１】
ノードｃのメッセージ転送部１７は、受信したキー"ｘ：０５０"が、管理するキー範囲［"ｘ：０００"，"ｘ：０８０"）に含まれるため、メッセージ判定部１３にキーとメッセージを入力する。メッセージ判定部１３は、メッセージがサブスクリプションから構成されているため、キーとメッセージをサブスクリプション配置制御部１４へ入力する。サブスクリプション配置制御部１４は、サブスクリプションＩＤとサブスクリプションのペアをサブスクリプション管理部１５に登録する。つまり、ここでは要求種別が登録要求の場合について例示している。
【００６２】
また、メッセージに含まれる属性名"ｘ"と、その属性名"ｘ"に対する属性値範囲の最大値１５０から生成されるキー"ｘ：１５０"が、ノードｃが管理するキー範囲［"ｘ：０００"，"ｘ：０８０"）に含まれない。そのため、サブスクリプション配置制御部１４は、サクセッサが管理するキーの最小値"ｘ：０８０"と、入力されたメッセージを、メッセージ転送部１７に入力する。
【００６３】
ここで、ノードｃのサクセッサとして、ノードｃが管理するキー範囲［"ｘ：０００"，"ｘ：０８０"）に続くキー範囲［"ｘ：０８０"，"ｘ：１６０"）を管理するノードｂが設定されている。つまり、メッセージの属性値範囲の最大値１５０から生成されるキー"ｘ：１５０"が、ノードｃに含まれない場合、メッセージの属性値範囲がノードｃの管理するキー範囲に続くキー範囲を管理するノードｂに含まれることになる。したがって、ノードｃは、メッセージのサブスクリプションがノードｂでも登録されるようにするため、ノードｂが管理するキー範囲の最小値から生成したキー"ｘ：０８０"と、メッセージをノードｂに送信する。よって、メッセージ転送部１７は、サブスクリプション配置制御部１４からネクストホップとしてサクセッサであるノードｂが指定する。そして、メッセージ転送部１７は、入力されたキー及びメッセージをノードｂに送信する。
【００６４】
ノードｃのメッセージ転送部１７から送信されたキーとメッセージは、ノードｂに到達する（Ｓ８３）。ノードｂのメッセージ転送部１７は、受信したキー"ｘ：０８０"が、管理するキー範囲［"ｘ：０８０"，"ｘ：１６０"）に含まれるため、メッセージ判定部１３にキーとメッセージを入力する。そして、ノードｃにおける処理と同様に、メッセージを構成するサブスクリプションＩＤとサブスクリプションは、該ノードのサブスクリプション管理部１５に登録される。また、メッセージに含まれる属性名"ｘ"と、その属性名"ｘ"に対する属性値範囲の最大値１５０から生成されるキー"ｘ：１５０"は、ノードｂが管理するキー範囲［"ｘ：０８０"，"ｘ：１６０"）に含まれる。そのため、サブスクリプション配置制御部１４は、メッセージ転送部１７にキー及びメッセージの入力は行わない。よって、メッセージの転送は行われない。これらの処理の結果、サブスクリプションｓはノードｃとノードｂに保持されることとなる。
【００６５】
次に、イベント配信システム１の構成要素であるノードａが、パブリッシャ３２からイベントｅ（ｘ＝１００，ｙ＝２００）を受信したとする（Ｓ８４）。イベントは属性名ｘと属性名ｙから構成されるので、ノードａのイベント転送情報生成部１２は、属性名ｘに対するキー"ｘ：１００"と、属性名ｙに対するキー"ｙ：２００"を生成する。イベント転送情報生成部１２は、イベントをメッセージとして、それぞれのキーごとに、キー及びメッセージをメッセージ転送部１７に入力する。そして、メッセージ転送部１７は、入力されたキー及びメッセージをルーティングプロトコルにしたがって、そのキーを管理するノードに対して送信する。
【００６６】
メッセージは、それぞれのキーを管理するノードへ転送される。キー"ｘ：１００"と、そのキーと共に送信されたメッセージは、ノードｂに到達する（Ｓ８５）。キー"ｙ：２００"と、そのキーと共に送信されたメッセージは、ノードｅに到達する（Ｓ８６）。
【００６７】
キー"ｘ：１００"とそのイベントがノードｂに到達すると、ノードｂのメッセージ転送部１７は、受信したキー"ｘ：１００"が、管理するキー範囲［"ｘ：０８０"，"ｘ：１６０"）に含まれるため、メッセージ判定部１３にキーとメッセージを入力する。メッセージ判定部１３は、メッセージがイベントから構成されているため、キーとメッセージをイベント条件合致判定部１６に入力する。イベント条件合致判定部１６は、サブスクリプション管理部１５からサブスクリプション管理テーブルを取得する。そして、イベント条件合致判定部１６は、サブスクリプション管理テーブルに登録されているサブスクリプションｓのイベント条件が「（５０≦ｘ≦１５０）かつ（１５０≦ｙ≦２５０）」であり、イベントの属性値が「ｘ＝１００，ｙ＝２００」であるため、イベント条件に合致すると判定する。そのため、イベント条件合致判定部１６は、アプリケーションａｐｐ１にイベントが通知する。
【００６８】
また、キー"ｙ：２００"とそのイベントがノードｅに到達すると、ノードｅのメッセージ転送部１７は、受信したキー"ｙ：２００"が、管理するキー範囲［"ｙ：２００"，"ｙ：３２０"）に含まれるため、メッセージ判定部１３にキーとメッセージを入力する。メッセージ判定部１３は、メッセージがイベントから構成されているため、キーとメッセージをイベント条件合致判定部１６に入力する。イベント条件合致判定部１６は、サブスクリプション管理部１５からサブスクリプション管理テーブルを取得する。そして、イベント条件合致判定部１６は、イベントの属性値が「ｘ＝１００，ｙ＝２００」であるが、サブスクリプションｓがサブスクリプション管理テーブルに登録されていないため、イベント条件に合致しないと判定する。そのため、イベント条件合致判定部１６は、アプリケーションへのイベントの通知は行わない。
【００６９】
以上に説明したように、本実施の形態によれば、イベントに含まれる属性名と属性値から、この属性名及び属性値を大小比較可能な形式に変換して生成したキーによって、ノードが管理するキー範囲に含まれるイベントか否かを判定することができるようにしている。言い換えると、ノードが処理対象とするイベントか否かを判定することができるようにしている。したがって、同一のハブ内に２以上の属性名が異なるノードが含まれるような場合であっても、イベント又はサブスクリプションがノードの処理対象か否かを単純比較することで判定可能である。つまり、同一のハブ内に２以上の異なる属性名を管理するノードを含めることができる。そのため、各属性名のそれぞれに対応するハブを有する必要がなくなる。これによって、各ノードのそれぞれにおける負荷を調整する場合、各ノードが管理する属性値の範囲を調整するのみで負荷を調整することができる。そのため、各ノードにかかる負荷の調整を容易にすることができる。
【００７０】
また、本実施の形態によれば、上述したように、各属性名のそれぞれに対応するハブを有する必要がなくなるため、ランダムウォークを行う等して、クロスハブ隣接ノードを決定する必要がなくなる。したがって、処理コストを低減することができる。
【００７１】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【００７２】
本実施の形態では、ノードが、サブスクライバ又はパブリッシャから受信したサブスクリプション又はイベントと、そのサブスクリプション又はイベントから生成したキーと、を常に他のノードに送信するようにしている。そして、他のノードで受信したキーに基づいて、判定を行うようにしている。しかし、これに限られない。例えば、ノードが、他のノードにサブスクリプション又はイベントのみを送信するようにしてもよい。この場合、例えば、他のノードでは、サブスクリプション転送情報生成部又はイベント転送情報生成部によって、受信したサブスクリプション又はイベントからキーを生成して、生成したキーに基づいて判定を行うようにする。
【００７３】
以上に説明した本発明にかかるノードは、上述の実施の形態の機能を実現するプログラムをコンピュータに供給し、コンピュータ又はコンピュータの有するＣＰＵ又はＭＰＵ(Micro Processing Unit)等がこのプログラムを実行することによって、構成することが可能である。
【００７４】
また、このプログラムは、様々なタイプの非一時的なコンピュータ可読媒体（non-transitory computer readable medium）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（tangible storage medium）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Read Only Memory）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Programmable ROM）、ＥＰＲＯＭ（Erasable PROM）、フラッシュＲＯＭ、ＲＡＭ（random access memory））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（transitory computer readable medium）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【００７５】
また、コンピュータが上述の実施の形態の機能を実現するプログラムを実行することにより、上述の実施の形態の機能が実現されるだけではなく、このプログラムの指示に基づき、コンピュータ上で稼動しているＯＳ(Operating System)もしくはアプリケーションソフトと共同して上述の実施の形態の機能が実現される場合も、発明の実施の形態に含まれる。
【００７６】
さらに、このプログラムの処理の全てもしくは一部がコンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットにより行われて上述の実施の形態の機能が実現される場合も、発明の実施の形態に含まれる。
【００７７】
この出願は、２００９年１２月９日に出願された日本出願特願２００９−２７９２１０を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【００７８】
１、２    イベント配信システム
５    情報処理システム
１０、２０、５０、６０    ノード
１１    サブスクリプション転送情報生成部
１２    イベント転送情報生成部
１３    メッセージ判定部
１４    サブスクリプション配置制御部
１５    サブスクリプション管理部
１６    イベント条件合致判定部
１７    メッセージ転送部
５１    キー情報生成部
５２    処理対象判定部
５３    処理対象情報格納部
５４    情報転送部
【図１】
2011070716.tif 000003
【図２】
2011070716.tif 000004
【図３】
2011070716.tif 000005
【図４】
2011070716.tif 000006
【図５】
2011070716.tif 000007
【図６】
2011070716.tif 000008
【図７】
2011070716.tif 000009
【図８】
2011070716.tif 000010
【図９】
2011070716.tif 000011
【図１０】
2011070716.tif 000012
【図１１】
2011070716.tif 000013
【図１２】
2011070716.tif 000014
【図１３】
2011070716.tif 000015
【図１４】
2011070716.tif 000016
【図１５】
2011070716.tif 000017
【図１６】
2011070716.tif 000018
【図１７】
2011070716.tif 000019
【図１８】
2011070716.tif 000020
【図１９】
2011070716.tif 000021
【手続補正書】
【提出日】平成24年6月8日(2012.6.8)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
任意の情報を示す属性名と、当該任意の情報に対応する値を示す属性値とを含むイベント情報を受信して、当該受信したイベント情報のうち、所定の属性名及び所定の範囲内の属性値を含んだイベント情報を処理対象とする複数のノードを備え、
前記ノードは、前記イベント情報を受信した場合に、当該イベント情報に含まれる属性名と属性値から、大小比較可能な第１のキー情報を生成するキー情報生成手段と、
前記所定の属性名及び所定の範囲内の属性値のキー情報の範囲を示す対象キー情報を予め保持する対象キー格納手段と、
前記イベント情報を受信した場合に、当該受信したイベント情報から生成された第１のキー情報が、前記対象キー情報で示される範囲に含まれる場合に、当該イベント情報を対象のイベント情報であると判定する対象判定手段と、
前記受信したイベント情報を対象のイベント情報でないと判定した場合に、当該イベント情報、又は、当該イベント情報及び当該イベント情報から生成された第１のキー情報を他のノードに送信する情報転送手段と、を有する情報処理システム。
【請求項２】
前記ノードは、属性名及び属性値の範囲を示すイベント条件情報を予め保持するイベント条件情報格納手段と、
前記受信したイベント情報を対象のイベント情報であると判定した場合に、前記イベント条件情報の属性名が当該イベント情報に存在し、かつ、当該イベント情報の属性名に対応する属性値が当該イベント条件情報の属性値の範囲内である場合、当該イベント情報及び当該イベント条件情報に応じた処理を実行すると判定するイベント条件合致判定手段と、を更に有する請求項１に記載の情報処理システム。
【請求項３】
前記キー情報生成手段は、外部から前記イベント条件情報を受信した場合に、当該イベント条件情報が示す属性名及び当該属性名に対応する属性値の範囲内の属性値から、大小比較可能な第２のキー情報を生成し、
前記対象判定手段は、前記受信したイベント条件情報から生成した第２のキー情報が、前記対象キー情報で示される範囲に含まれる場合に、当該イベント条件情報を対象のイベント条件情報であると判定し、
前記情報転送手段は、前記受信したイベント条件情報を対象のイベント情報でないと判定した場合に、当該イベント条件情報、又は、当該イベント条件情報及び当該イベント条件情報から生成された第２のキー情報を他のノードに送信する請求項２に記載の情報処理システム。
【請求項４】
前記ノードは、前記イベント条件情報と、当該イベント条件情報を一意に識別する識別情報と、要求種別としての当該イベント条件情報の登録を要求する情報を受信したときに、前記受信したイベント条件情報を対象のイベント情報であると判定した場合は、当該イベント条件情報を当該識別情報とともに前記イベント条件情報格納手段に格納し、前記イベント条件情報の識別情報と、要求種別としての当該イベント条件情報の削除を要求する情報を受信したときに、前記受信したイベント条件情報を対象のイベントであると判断した場合は、前記イベント条件情報格納手段に格納されている当該識別情報及び当該イベント条件情報を削除するイベント条件情報制御手段を更に有する請求項３に記載の情報処理システム。
【請求項５】
前記キー情報生成手段は、前記イベント条件情報が示す複数の属性名から、当該イベント条件情報の全ての属性名に対応する属性値の範囲の割合のうち、当該属性値の範囲の割合が、当該属性値がとり得る範囲に対して最小となる属性名を選択し、選択した属性名及び当該選択した属性名に対応する属性値の範囲から第２のキー情報を生成する請求項３又は４に記載の情報処理システム。
【請求項６】
前記キー情報生成手段は、前記イベント情報又はイベント条件情報の生成元から夫々受信したイベント情報又はイベント条件情報から、前記第１又は第２のキー情報を生成し、
前記情報転送手段は、前記イベント情報を送信する場合には、前記イベント情報と当該イベント情報から生成された第１のキー情報を送信するとともに、前記イベント条件情報を送信する場合には、前記イベント条件情報と当該イベント条件情報から生成された第２のキー情報を送信する請求項３乃至５のいずれか１項に記載の情報処理システム。
【請求項７】
前記複数のノードは、１つのハブに含まれ、
前記ハブに含まれる複数のノードのそれぞれは、異なる属性名から生成されたキー情報に対応するイベント情報を処理する請求項１乃至６のいずれか１項に記載の情報処理システム。
【請求項８】
前記属性名は、大小比較可能に定義されており、
前記キー情報生成手段は、ｎ１＞ｎ２、又は、ｎ１＝ｎ２かつｖ１＞ｖ２である場合に、ｋ１＞ｋ２となるように前記キー情報を生成する（ｎ１及びｎ２は、任意の属性名であり、ｖ１及びｖ２は、それぞれｎ１及びｎ２に対応する任意の実数であり、ｋ１はｎ１及びｖ１から生成されたキー情報であり、ｋ２はｎ２及びｖ２から生成されたキー情報である）請求項７に記載の情報処理システム。
【請求項９】
任意の情報を示す属性名と、当該任意の情報に対応する値を示す属性値とを含むイベント情報を受信して、当該受信したイベント情報のうち、所定の属性名及び所定の範囲内の属性値を含んだイベント情報を処理対象とする制御方法であって、
前記イベント情報を受信した場合に、当該イベント情報に含まれる属性名と属性値から、大小比較可能な第１のキー情報を生成し、
前記イベント情報を受信した場合に、当該受信したイベント情報から生成された第１のキー情報が、予め保持されている対象キー情報で示される、前記所定の属性名及び所定の範囲内の属性値のキー情報の範囲に含まれる場合に、当該イベント情報を対象のイベント情報であると判定し、
前記受信したイベント情報を対象のイベント情報であると判定した場合に、当該イベント情報、又は、当該イベント情報及び当該イベント情報から生成された第１のキー情報を他のノードに送信する制御方法。
【請求項１０】
任意の情報を示す属性名と、当該任意の情報に対応する値を示す属性値とを含むイベント情報を受信して、当該受信したイベント情報のうち、所定の属性名及び所定の範囲内の属性値を含んだイベント情報を処理対象とするノードを制御するプログラムであって、
前記イベント情報を受信した場合に、当該イベント情報に含まれる属性名と属性値から、大小比較可能な第１のキー情報を生成するステップと、
前記イベント情報を受信した場合に、当該受信したイベント情報から生成された第１のキー情報が、予め保持されている対象キー情報で示される、前記所定の属性名及び所定の範囲内の属性値のキー情報の範囲に含まれる場合に、当該イベント情報を対象のイベント情報であると判定するステップと、
前記受信したイベント情報を対象のイベント情報であると判定した場合に、当該イベント情報、又は、当該イベント情報及び当該イベント情報から生成された第１のキー情報を他のノードに送信するステップと、をコンピュータに実行させるプログラム。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００１
【補正方法】変更
【補正の内容】
【０００１】
本発明は、情報処理システム、制御方法およびプログラムに関する。
【国際調査報告】
2011070716.tif 000022
2011070716.tif 000023
2011070716.tif 000024
2011070716.tif 000025