(57)【要約】情報処理装置は、各ノードにおいて行われる属性名を追加するための処理の時間を短縮する。  情報処理装置は、属性名と属性値とを用いて、少なくとも２以上の属性名について予め定められた順序関係に基づいて生成される大小比較可能な形式であるキーの範囲が互いに隣接するように複数に分割された各区間のうちの少なくともひとつ以上の区間である自区間を記憶する自区間記憶手段と、属性名と属性値とから生成されるキーが前記自区間に含まれるか否かを判定する判定手段と、を備える。
2012060465.tif 000002
【特許請求の範囲】
【請求項１】
属性名と属性値とを用いて、少なくとも２以上の属性名について予め定められた順序関係に基づいて生成される大小比較可能な形式であるキーの範囲が互いに隣接するように複数に分割された各区間のうちの少なくともひとつ以上の区間である自区間を記憶する自区間記憶手段と、
属性名と属性値とから生成されるキーが前記自区間に含まれるか否かを判定する判定手段と、を備える情報処理装置。
【請求項２】
属性名と属性値とを含む情報であるイベント情報を受信する受信手段と、
前記属性名のうち、受信した前記イベント情報に含まれる頻度が所定値以上の属性名が存在する場合、前記自区間の分割された区間であって下限または上限を含む区間である端区間を、前記端区間に隣接する区間を記憶する他の情報処理装置へ送信する区間情報転送手段と、
他の情報処理装置から自区間に隣接する区間を受信する区間情報受信手段と、
前記送信した端区間と前記区間情報受信手段で受信した区間の一方もしくは両方を用いて自区間記憶手段を更新する処理対象情報格納手段と、をさらに備える請求項１に記載の情報処理装置。
【請求項３】
前記イベント情報を受信した場合に、前記イベント情報に含まれる属性名と属性値とに基づいて、大小比較可能な形式であるキーを生成するキー情報生成手段と、
生成された前記キーが前記自区間に含まれる場合には、前記イベント情報を前記第一の処理対象とし、含まれない場合には、前記イベント情報と前記イベント情報から生成された前記キーとを、他の情報処理装置に送信する情報転送手段と、
をさらに備え、
前記情報転送手段は、
他の情報処理装置から前記端区間を受信した場合に、前記上限または下限が前記自区間の上限または下限と一致しない場合には前記端区間を他の情報処理装置に送信し、
前記処理対象情報格納手段は、
前記受信した区間の上限または下限が前記自区間の上限または下限と一致する場合には前記自区間に前記端区間を加えた区間を前記自区間記憶手段に記憶させる請求項２に記載の情報処理装置。
【請求項４】
前記キー情報生成手段は、前記属性名と前記属性値の取り得る値の範囲とを含む情報であるサブスクリプション情報を受信した場合に、前記属性名及び前記属性値のいずれか１つの属性名とそれに対応する属性値とから登録キーを生成し、
前記処理対象情報格納手段は、前記登録キーが前記自区間に含まれる場合に、前記サブスクリプション情報に含まれる前記属性名及び前記属性値の取り得る値の範囲から生成されるキー範囲をイベント条件として保持し、
前記処理対象判定手段は、前記キーが前記自区間に含まれる場合に前記イベント条件を検索する前記第一の処理を実行し、前記イベント条件に前記キーが含まれる場合に前記イベント情報を第二の処理対象とする
請求項３に記載の情報処理装置。
【請求項５】
前記情報転送手段は、前記属性名のうち、受信した前記イベント情報または前記サブスクリプション情報に含まれる頻度が所定値以上の属性名が存在する場合、前記自区間を３つの区間に分割し、分割された区間のうち下限を含む第１の区間と、上限を含む第２の区間を他の情報処理装置に送信し、
前記処理対象情報格納手段は、前記情報転送手段が送信していない区間を自装置に割り当てる請求項４に記載の情報処理装置。
【請求項６】
前記属性名が任意の長さの文字列で表される請求項１乃至５のいずれかに記載の情報処理装置。
【請求項７】
前記自区間記憶手段は、自区間の上限及び下限を記憶し、前記判定手段は、前記自区間の上限の生成に用いられた属性名と下限の生成に用いられた属性名との順序関係が前記予め定められた順序関係と一致しない場合、前記生成されるキーが前記下限と比較して小さい又は前記上限と比較して大きい場合に前記生成されるキーが自区間に含まれると判定する、請求項１乃至６のいずれかに記載の情報処理装置。
【請求項８】
請求項１から７のいずれかに記載の情報処理装置と、
前記自装置に割り当てられた区間以外の各区間を割り当てられた他の情報処理装置と、を接続してなる情報処理システム。
【請求項９】
属性名と属性値とを用いて、少なくとも２以上の属性名について予め定められた順序関係に基づいて生成される大小比較可能な形式であるキーの範囲が互いに隣接するように複数に分割された各区間のうちの少なくともひとつ以上の区間である自区間を記憶する自区間記憶手段を備える情報処理装置に、
属性名と属性値とから生成されるキーが前記自区間に含まれるか否かを判定する判定ステップを実行させる情報処理プログラム。
【請求項１０】
属性名と属性値とを用いて、少なくとも２以上の属性名について予め定められた順序関係に基づいて生成される大小比較可能な形式であるキーの範囲が互いに隣接するように複数に分割された各区間のうちの少なくともひとつ以上の区間である自区間を記憶する自区間記憶手段を備える情報処理装置が、属性名と属性値とから生成されるキーが前記自区間に含まれるか否かを判定する情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、システム、制御方法およびプログラムに関する。
【背景技術】
【０００２】
ＩＤ、位置、時刻などの１つ以上のデータ項目から構成されるデータ（以下、「イベント」とする）をアプリケーションに対して配信できるイベント配信システムがある。各データ項目は、属性名と属性値から構成される。例えば、温度、湿度センサが観測した２０℃の温度、６０％の湿度を基にイベントを生成する場合、イベントは、属性名が″温度″で、それに対する属性値が２０℃であるデータ項目と、属性名が″湿度″で、それに対する属性値が６０％であるデータ項目から構成されるように表現できる。
イベント配信システムには、外部プログラム（サブスクライバ）から、サブスクリプションと、サブスクリプションを識別するためのサブスクリプションＩＤと、登録要求か削除要求かを識別するための要求種別とが入力（サブスクライブ）される。サブスクリプションは、イベントの条件（イベント条件）と、通知先のアプリケーションのＩＤ（アプリケーションＩＤ）とから構成される。要求種別が登録要求の場合、サブスクリプションＩＤとサブスクリプションがペアでイベント配信システムに記憶される。イベント配信システムは、イベント条件として複数の属性条件を記述できる。例えば、イベント配信システムは、属性条件として属性名とそれに対する属性値の範囲を指定できる。
外部プログラム（パブリッシャ）からイベントが発生すると、該イベントが、イベント配信システムに入力（パブリッシュ）される。登録されているサブスクリプションのイベント条件に、入力されたイベントが合致した場合、イベント配信システムは、該イベント条件とペアで指定されているアプリケーションＩＤで特定されるアプリケーションに対して該イベントを送信する。
ここで、イベント条件を構成する全ての属性条件について、該属性条件で指定される属性名をイベントが含んでおり、かつ、属性条件で指定される属性値範囲が、イベントに記述される該属性名に対する属性値を包含している場合、該イベントは該イベント条件に合致するという。例えば、属性名が″温度″で、それに対する属性値の範囲が″１０℃以上３０℃以下″であるイベント条件が、イベント配信システムに登録されているとする。その状態で、属性名が″温度″で、それに対する属性値が″２０℃″である属性と、属性名が″湿度″で、それに対する属性値が″６０％″である属性を含むイベントが発生したとする。イベント条件で指定される属性名″温度″については、″２０℃″が″１０℃以上３０℃以下″に含まれるため、該イベントは該イベント条件に合致すると言える。属性名″湿度″については、該イベント条件で指定されていないので、該イベント条件に合致するかどうかに影響を与えない。
このようにイベントを処理する技術の一例が、非特許文献１に記載されている。図１９は、非特許文献１に記載される技術を説明する図である。図１９に示すイベント（図１９中のｐｕｂｌｉｃａｔｉｏｎ）とイベント条件（図１９中のｓｕｂｓｃｒｉｐｔｉｏｎ）は、属性名ｘと属性名ｙから構成される。該イベントには、属性名ｘに対する属性値が１００であり、属性名ｙに対する属性値が２００であることが記述されている。該イベント条件には、属性名ｘに対する属性値の範囲が５０以上１５０以下であり、属性名ｙに対する属性値の範囲が１５０以上２５０以下であることが記述されている。該イベントは該イベント条件に合致する。図１９に示すシステムは、各属性名と１対１に対応するサブシステム（ハブ）から構成される。ハブは１つ以上のノードをリング状に構成するものである。あるノードから見て、リング上の次のノードをサクセッサと呼ぶ。また、あるノードから見て、リング上の前のノードをプレディセッサと呼ぶ。ハブに属するノードは、該ハブに対応する属性名に対する属性値の範囲（属性値範囲）を管理する。
サブスクライバからサブスクリプションを受信し、あるいは、パブリッシャからイベントを受信したノードは、該ノードが属するハブとは別のハブに属するノードに、イベントやサブスクリプションを転送する。そのため、ノードは、該ノードが属するハブとは別のハブに属するノードのネットワークアドレスを保持する（そのようなノードを「クロスハブ隣接ノード」と呼ぶ）。クロスハブ隣接ノードを決定する方法が非特許文献２に開示されている。
システムは、新しいノードがハブに参加した直後では、該ノードのサクセッサのクロスハブ隣接ノードを該ノードのクロスハブ隣接ノードリンクとする。システムは、その後、メンテナンスプロセスを開始する。システムは、メンテナンスプロセスでは、他の各ハブでランダムウォークを行い、新規のクロスハブ隣接ノードを決定する。ランダムウォークとは、ランダムウォークを開始するノードが、ルーティングテーブルに記録されている任意のノードへアクセス（ホップ）し、アクセスされたノードがさらに上記と同じ手段でホップしていくことであり、そのようなホップを、あらかじめ定めされているホップ数に至るまで繰り返すことである。そして、システムは、あらかじめ定められたホップ数に至ったときに到達しているノードをクロスハブ隣接ノードとして決定する。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Ａｓｈｗｉｎ  Ｒ．Ｂｈａｒａｍｂｅ，Ｓａｎｊａｙ  Ｒａｏ  ａｎｄ  Ｓｒｉｎｉｖａｓａｎ  Ｓｅｓｈａｎ：″Ｍｅｒｃｕｒｙ：Ａ  Ｓｃａｌａｂｌｅ  Ｐｕｂｌｉｓｈ−Ｓｕｂｓｃｒｉｂｅ  Ｓｙｓｔｅｍ  ｆｏｒ  Ｉｎｔｅｒｎｅｔ  Ｇａｍｅｓ″，Ｐｒｏｃ．ｏｆ  １ｓｔ  Ｗｏｒｋｓｈｏｐ  ｏｎ  Ｎｅｔｗｏｒｋ  ａｎｄ  Ｓｙｓｔｅｍ  Ｓｕｐｐｏｒｔ  ｆｏｒ  Ｇａｍｅｓ（ＮｅｔＧａｍｅｓ２００２），Ａｐｒｉｌ  ２００２．
【非特許文献２】Ａｓｈｗｉｎ  Ｒ．Ｂｈａｒａｍｂｅ，Ｍｕｋｅｓｈ  Ａｇｒａｗａｌ，Ｓｒｉｎｉｖａｓａｎ  Ｓｅｓｈａｎ，″Ｍｅｒｃｕｒｙ：Ｓｕｐｐｏｒｔｉｎｇ  Ｓｃａｌａｂｌｅ  Ｍｕｌｔｉ−ａｔｔｒｉｂｕｔｅ  Ｒａｎｇｅ  Ｑｕｅｒｉｅｓ，″ＡＣＭ  ＳＩＧＣＯＭＭ  Ｃｏｍｐｕｔｅｒ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｒｅｖｉｅｗ，Ｖｏｌ．３４  Ｎｏ．４，Ｏｃｔｏｂｅｒ  ２００４．
【発明の概要】
【発明が解決しようとする課題】
【０００４】
非特許文献１、２に開示されている方式は、あらかじめ定められた属性名のデータ項目に対しては有効であるが、あらかじめ定められていない属性名が新たに追加されるような状況では有効ではない。すなわち、非特許文献１、２に開示されている方式では、あらゆる未知の属性名に対するハブをあらかじめ作ろうとする場合、ハブが無限に必要となるが、そのようなことは不可能である。また、システムは、新たな属性名が追加されたタイミングで、その属性名に対応するノードを生成し、そのノードを、その属性名に対するハブとすることも考えられる。しかし、システムは、新規に生成したノードと、他の既存のハブを構成する全ノードとのリンクを確立しなければならない。従って、システムは、属性名追加時に、各ノードにおいて行われる属性名を追加するための処理時間がかかってしまうという問題がある。
そこで、本発明の目的は、上述の課題を解決すべく、各ノードにおいて行われる属性名を追加するための処理の時間を短縮する情報処理装置、システム、制御方法およびプログラムを提供することにある。
【課題を解決するための手段】
【０００５】
本発明の一形態は、情報処理装置であって、属性名と属性値とを用いて、少なくとも２以上の属性名について予め定められた順序関係に基づいて生成される大小比較可能な形式であるキーの範囲が互いに隣接するように複数に分割された各区間のうちの少なくともひとつ以上の区間である自区間を記憶する自区間記憶手段と、属性名と属性値とから生成されるキーが前記自区間に含まれるか否かを判定する判定手段と、を備える。
また、本発明によれば、属性名と属性値とを用いて、少なくとも２以上の属性名について予め定められた順序関係に基づいて生成される大小比較可能な形式であるキーの範囲が互いに隣接するように複数に分割された各区間のうちの少なくともひとつ以上の区間である自区間を記憶する自区間記憶手段を備える情報処理装置に、属性名と属性値とから生成されるキーが前記自区間に含まれるか否かを判定する判定ステップを実行させる情報処理プログラムが提供される。
また、本発明によれば、属性名と属性値とを用いて、少なくとも２以上の属性名について予め定められた順序関係に基づいて生成される大小比較可能な形式であるキーの範囲が互いに隣接するように複数に分割された各区間のうちの少なくともひとつ以上の区間である自区間を記憶する自区間記憶手段を備える情報処理装置が、属性名と属性値とから生成されるキーが前記自区間に含まれるか否かを判定する情報処理方法が提供される。
【発明の効果】
【０００６】
上述した本発明によれば、各ノードにおいて行われる属性名を追加するための処理の時間を短縮する情報処理装置、システム、制御方法およびプログラムを提供することができる。
【図面の簡単な説明】
【０００７】
【図１】本発明の第１の実施の形態にかかる情報処理装置５の構成図である。
【図２】本発明の第１の実施の形態にかかるイベント配信システム１の構成図である。
【図３】本発明の第１の実施の形態にかかるノードの構成図である。
【図４】本発明の第１の実施の形態にかかるサブスクリプション転送情報生成部１１における動作を示すフローチャートである。
【図５】本発明の第１の実施の形態にかかる属性値が取り得る下限値乃至上限値の範囲と、イベント条件で指定されている属性値の範囲と、下限値乃至上限値に占める当該属性値の範囲の割合との関係の一例を示す図である。
【図６】本発明の第１の実施の形態にかかるイベント転送情報生成部１２における動作を示すフローチャートである。
【図７】本発明の第１の実施の形態にかかるメッセージ判定部１３における動作を示すフローチャートである。
【図８】本発明の第１の実施の形態にかかるサブスクリプション配置制御部１４における動作を示すフローチャートである。
【図９】本発明の第１の実施の形態にかかるサブスクリプション登録、削除処理のフローチャートである。
【図１０】本発明の第１の実施の形態にかかるサブスクリプション転送処理のフローチャートである。
【図１１】本発明の第１の実施の形態にかかるサブスクリプション管理部１５における動作を示すフローチャートである。
【図１２】本発明の第１の実施の形態にかかるサブスクリプション管理テーブルの一例を示す図である。
【図１３】種別が登録の場合のサブスクリプション操作要求を示す図である。
【図１４】種別が削除の場合のサブスクリプション操作要求を示す図である。
【図１５】種別が参照の場合のサブスクリプション操作要求を示す図である。
【図１６】本発明の実施の形態にかかるイベント条件合致判定部１６における動作を示すフローチャートである。
【図１７】本発明の第１の実施の形態にかかるメッセージ転送部１７における動作を示すフローチャートである。
【図１８】本発明の第１の実施の形態にかかるイベント配信システム１の動作例を示す図である。
【図１９】背景技術を説明するための図である。
【図２０】本発明の第１の実施の形態におけるイベント配信システム１の動作例を示す図である。
【図２１】本発明の第１の実施の形態におけるイベント配信システム１の動作例を示す図である。
【図２２】本発明の第１の実施の形態におけるキー範囲管理の変更を説明するための図である。
【図２３】本発明の第１の実施の形態におけるキー範囲管理の変更を説明するための図である。
【図２４】本発明の第１の実施の形態におけるキー範囲管理の変更を説明するための図である。
【図２５】本発明の第２の実施形態における情報処理装置５の構成例を示す図である。
【発明を実施するための形態】
【０００８】
以下、本発明の実施の形態について、図面を用いて説明する。すべての図面において、同じ構成要素には同じ符号を付し、適宜説明を省略する。
なお、各実施形態のディスク装置等を構成する各部は、制御部、メモリ、メモリにロードされたプログラム、プログラムを格納するハードディスク等の記憶ユニット、ネットワーク接続用インターフェースなどからなり、ハードウェアとソフトウェアの任意の組合せによって実現される。そして特に断りのない限り、その実現方法、装置は限定されない。
また、制御部はＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）などからなり、オペレーティングシステムを動作させてディスク装置等の全体を制御するとともに、例えばドライブ装置などに装着された記録媒体からメモリにプログラムやデータを読み出し、これに従って各種の処理を実行する。
記録媒体は、例えば光ディスク、フレキシブルディスク、磁気光ディスク、外付けハードディスク、半導体メモリ等であって、コンピュータプログラムをコンピュータが読み取り可能に記録する。また、コンピュータプログラムは、通信網に接続されている図示しない外部コンピュータからダウンロードされても良い。ここで、特に断りの無い限り、通信網は、インターネット、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、公衆回線網、無線通信網、または、これらの組み合わせ等によって構成されるネットワーク等であって良い。
また、各実施形態の説明において利用するブロック図は、ハードウェア単位の構成ではなく、機能単位の構成を示している。これらの機能ブロックはハードウェア、ソフトウェアの任意の組み合わせによって実現される。また、これらの図においては、各実施形態の構成部は物理的に結合した一つの装置により実現されるよう記載されている場合もあるが、その実現手段はこれに限定されない。すなわち、各実施形態で説明される構成部、装置、システム等は、二つ以上の物理的に分離した装置を有線または無線で接続することにより複数の装置により実現されてもよい。また、各構成部が物理的に分離した２つ以上装置として記載されている場合もあるが、その実現手段はこれに限定されない。すなわち、物理的に結合した一つの装置により実現されるようにハードウェア、ソフトウェアを任意に組み合わせることにより各実施形態の各構成部、装置、システム等が実現されてもよい。
＜実施形態１＞
まず、図１を参照して、本発明の第１の実施の形態にかかるイベント配信システム１の概要について説明する。図１は、本実施の形態にかかるイベント配信システム１を構成する情報処理装置５の構成図の概要である。
情報処理装置５は、複数のノード５０、６０を含んでもよい。あるいは、ノード５０、６０は、情報処理装置５又はその一部から構成されてもよい。つまり、１つのノードは１つの情報処理装置５から構成されていてもよく、１つのノードは情報処理装置５に含まれるメモリ、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）及びハードディスク等のリソースが任意の量割り当てられて構成されるようにしてもよい。また、複数のノードは１つの情報処理装置５から構成されてもよい。
ノード５０は、キー情報生成部５１、処理対象判定部５２、処理対象情報格納部５３及び情報転送部５４を備える。なお、ノード６０の構成については、ノード５０の構成と同様であるため、説明を省略する。
ノード５０、６０は、情報の種別を示す属性名と、この情報の値を示す属性値とを含むイベント情報を受信する。ここで、イベント情報（イベントともいう。）とは、上述のとおり、ＩＤ、位置、時刻などの１つ以上のデータ項目から構成されるデータである。データ項目は、属性名と属性値から構成される。例えば、温度、湿度センサが観測した２０℃の温度、６０％の湿度を基にイベントを生成する場合、イベントは、属性名が″温度″で、それに対する属性値が２０℃であるデータ項目と、属性名が″湿度″で、それに対する属性値が６０％であるデータ項目から構成されるように表現できる。属性名とは、データ項目に対して付された名称である。属性名とは、一般にあるものに共通して備わっているとされる性質や特徴のことであり、例えば、上述した温度、湿度、の他に物体の色、形、位置、時間等の任意の性質や特徴を表すものであって、特段制限されない。また、属性値とは、属性名で表される属性が取り得る値を表す。例えば、上述の例では、属性名”温度”に対する属性値は”６０％”などである。
ノード５０、６０は、受信したイベント情報のうち、所定の属性名及び所定の範囲内の属性値を含んだイベント情報を処理対象とする。
キー情報生成部５１は、イベント情報を受信した場合に、このイベント情報に含まれる属性名と属性値から、この属性名及び属性値を大小比較可能な形式に変換したキー情報を生成する。そして、キー情報生成部５１は、イベント情報と、そのイベント情報から生成されたキー情報を処理対象判定部５２に出力する。
処理対象判定部５２は、キー情報生成部５１から出力されたイベント情報及びキー情報を取得すると、処理対象情報格納部５３に格納されている処理対象情報を取得する。そして、処理対象判定部５２は、取得したキー情報と処理対象情報とを比較することによって、取得したイベント情報を処理対象とするか否かを判定する。
処理対象情報格納部５３は、所定の属性名及び所定の範囲内の属性値のキー情報を示す処理対象情報を予め保持する。
情報転送部５４は、処理対象判定部５２がイベント情報を処理対象としないと判定した場合に、このイベント情報と、このイベント情報から生成されたキー情報とを他のノードに送信する。
続いて、本実施の形態にかかるイベント配信システム１について詳細に説明する。図２を参照して、本実施の形態にかかるイベント配信システム１の構成について説明する。図２は、イベント配信システム１の構成図である。
イベント配信システム１は、１つ以上のノードから構成される。イベント配信システム１は、データ項目から一意に決まる値（キー）の空間（集合）を管理する。異なるキーの間には順序が定義される。各ノードは、連続するキーの範囲を管理する。
本実施の形態では、情報処理装置５は、イベント及びサブスクリプションに含まれる属性名及び属性値を大小比較可能な形式に変換したキーを生成するキー生成関数を用意する。つまり、キー生成関数は、キーを戻り値とする関数である。属性名はｎ（ｎは、文字列など）、属性値はｖ（ｖは、文字列や実数など）とし、キーを生成するキー生成関数はｆ（ｎ，ｖ）で表す。ここで、属性名、属性値にはそれぞれ順序が定義されているとする。例えば、属性名には、大小関係が定義されている。例えば、属性名が文字列で表され、順序関係が辞書式順序に従う場合、属性名″温度″は、属性名″時刻″より小さい値となる。ｆ（ｎ，ｖ）は、ｎ１＞ｎ２ならば、ｆ（ｎ１，ｖ１）＞ｆ（ｎ２，ｖ２）を満たす関数である。ただし、ｖ１とｖ２は任意の値である。さらにｆ（ｎ，ｖ）は、ｎ１＝ｎ２かつｖ１＞ｖ２ならば、ｆ（ｎ１，ｖ１）＞ｆ（ｎ２，ｖ２）を満たす関数である。属性名の順序の詳細に関しては後述する。
キー生成関数の例（ｆ１（ｎ，ｖ）と記述する）を示す。属性名が文字列で表されると仮定する。属性値は３桁までの１０進整数（０から９９９まで）で表されると仮定する。ｆ１（ｎ，ｖ）は、まず、属性値を文字列に変換する。例えば、ｆ１（ｎ，ｖ）は、属性値が０から９９までの場合には、上位桁に０を追加し、３文字にする。例えば、属性値２０は変換後、文字列″０２０″となる。関数ｆ１（ｎ，ｖ）は、その後、属性名の文字列と属性値の文字列との間にデリミタを挟んで結合し、それをｆ１（ｎ，ｖ）の戻り値とする。ｆ１（ｎ，ｖ）は、デリミタとして、属性名と属性値のいずれにも使用されない記号を使用する。例えば、ｆ１（ｎ，ｖ）は、デリミタを″：″とすると、ｆ１（″ｘ″，２０）＝″ｘ：０２０″となる。
イベント配信システム１は、図２の例では、属性名“ｘ”、“ｙ”から生成されるハッシュ値に多くのノードを割り当てている。イベント条件で指定される属性名が“ｘ”と“ｙ”のいずれか、あるいは、両方である場合には、このようなハッシュ値の配置が適切である。イベント条件に属性名“ｚ”の条件が指定される場合、後述するように、そのイベント条件は、ノードｅに配置される。属性名“ｚ”の条件が指定されたイベント条件が多く登録される場合、イベント配信システム１は、属性名“ｚ”から生成されるハッシュ値に対してより多くのノードを割り当てることにより、イベント処理負荷のバランスをとることができる。
キー生成関数の他の例（ｆ２（ｎ，ｖ）と記述する）を示す。ｆ１（ｎ，ｖ）で求められる文字列は、ＰＣ（Ｐｅｒｓｏｎａｌ  ｃｏｍｐｕｔｅｒ）やサーバ等の情報処理装置内では、文字コードによって、ビット列で表現される。ｆ２（ｎ，ｖ）は、ｆ１（ｎ，ｖ）で求められる文字列を文字コードによって表現したビット列のうち、上位から所定のビット数を戻り値とする。例えば、ｆ２（ｎ，ｖ）は、そのビット列の上位１６０ビットをｆ２の戻り値とする。この場合に、文字コードが４バイトであれば、″ｘ：０２０″は１６０ビット（４バイト×５文字×８）となるため、″ｘ：０２０″を文字コードによって表現したビット列の全てが戻り値となる。
本実施の形態では、イベント配信システム１は、ノードａからノードｇまでの７つのノードが存在している場合について例示する。イベント配信システム１は、属性値のそれぞれが下限値（あるいは最小値、以下同じ。）及び上限値（あるいは最大値、以下同じ。）を有するとしても良い。イベント配信システム１は、属性値の取り得る範囲が、例えば、０以上３２０未満の整数である属性名″ｘ″と、取り得る属性値の範囲が０以上３２０未満の整数である属性名″ｙ″との２つの属性名をサポートしているものとすることができる。また、文字列の順序関係はどのように定められても良い。例えば、文字列の順序関係は、″：″＜″０″＜″１″＜…＜″９″＜″ａ″＜″ｂ″＜…＜″ｚ″としても良い。以下、本実施の形態では、属性名の順序は以下のように循環すると仮定する。すなわち、属性名がアルファベットの例では、″ａ″＜″ｂ″＜…”ｘ”＜”ｙ”＜″ｚ″＜″ａ″＜″ｂ″＜…、のように文字の順序が循環する（この関係を、循環的順序関係という）。例えば、図２に示すノードａは、″ｘ：１６０″以上のキーで、″ｘ：２４０″より小さいキーの範囲を管理する（これを［“ｘ：１６０”，“ｘ：２４０”）と表す。）。例えば、キー″ｘ：２００″はノードａが管理する。また、ノードｅは、″ｙ：２００″以上のキーで、″ｘ：０００″より小さいキーの範囲、すなわち、ｘより前の属性名”ｚ”、”ａ”、”ｂ”、…、”ｗ”と、属性名に対応する属性値を管理する。したがって、ノードｅは、例えば、キー″ｚ：０５０″を管理する。換言すれば、本実施の形態におけるノードは、属性名の有する循環的順序関係において一巡未満の範囲を管理している。
続いて、本実施の形態にかかるノードの具体的な構成について説明する。図３は、図１で説明したノードの具体的な構成図である。
ノード１０は、サブスクリプション転送情報生成部１１と、イベント転送情報生成部１２と、メッセージ判定部１３と、サブスクリプション配置制御部１４と、サブスクリプション管理部１５と、イベント条件合致判定部１６と、メッセージ転送部１７と、を有する。なお、ノード２０の構成については、ノード１０の構成と同様であるため、説明を省略する。つまり、イベント配信システム１に含まれるノードａ〜ｇは、ノード１０の構成と同様である。
サブスクリプション転送情報生成部１１は、サブスクライバ３１から入力されたサブスクリプションからそれを転送するために必要な情報を生成する。サブスクリプションは、イベント条件と、通知先のアプリケーションのＩＤ（アプリケーションＩＤ）とから構成される（図１２参照）。また、イベント条件は、複数の属性条件（属性名と、それに対する属性値の範囲）からなるイベントの条件である。
イベント転送情報生成部１２は、パブリッシャ３２から入力されたイベントからそれを転送するために必要な情報を生成する。サブスクリプション転送情報生成部１１及びイベント転送情報生成部１２が生成する情報には、キーが含まれる。
サブスクリプション転送情報生成部１１及びイベント転送情報生成部１２は、図１で示したキー情報生成部５１として機能する。
メッセージ判定部１３は、ノード１０宛に送られてきたメッセージがサブスクリプションかイベントかを判定する。ノード１０には、サブスクライバ３１から入力されたサブスクリプションやパブリッシャ３２から入力されたイベント、あるいは、サブスクリプションＩＤ、要求種別、属性名などが、他のノード２０から送信される。そこで、他のノード２０から送信される（あるいは、他のノード１０へ送信する）これらサブスクリプションやイベントなどの情報をまとめてメッセージと呼ぶ。
サブスクリプション配置制御部１４は、サブスクリプションをどのノードに配置するかを決定する。
サブスクリプション管理部１５は、サブスクリプションをノード内に記憶する。サブスクリプション管理部１５は、図１で示した処理対象情報格納部５３に相当する。
イベント条件合致判定部１６は、受信したイベントがサブスクリプション管理部１５に格納されたサブスクリプションに含まれるイベント条件に合致するかどうかを判定する。
メッセージ転送部１７は、入力されるキーによって転送先が決定されるノードに対して、イベントを含んだメッセージや、サブスクリプションＩＤ、サブスクリプション及び要求種別（登録要求か削除要求かを識別するための種別）を含んだメッセージを転送する。メッセージ転送部１７は、図１で示した処理対象判定部５２及び情報転送部５４として機能する。
続いて、図４を参照して、本実施の形態にかかるサブスクリプション転送情報生成部１１における動作について説明する。図４は、サブスクリプション転送情報生成部１１における動作を示すフローチャートである。
サブスクライバ３１からノード１０へサブスクリプションが入力されると、入力されたサブスクリプションは、まず、サブスクリプション転送情報生成部１１で処理される（Ｓ１０１）。サブスクリプション転送情報生成部１１は、受信したサブスクリプションの構成要素であるイベント条件について、それを構成する属性名群から１つの属性名を選択する（Ｓ１０２）。次に、サブスクリプション転送情報生成部１１は、選択した属性名とそれに対する属性値範囲の下限値とからキーを生成する（Ｓ１０３）。最後に、サブスクリプション転送情報生成部１１は、生成したキーとサブスクリプションをペアとして、メッセージ転送部１７へ入力する。これにより、そのキーを管理するノードへサブスクリプションが含まれるメッセージが転送される。
サブスクリプション転送情報生成部１１が、イベント条件を構成する属性名群から１つの属性名を選択する方法としては、例えば以下の方法がある。サブスクリプション転送情報生成部１１は、例えば、イベント条件を構成する各属性名について、属性値として取り得る値の範囲に対する、イベント条件として指定されている属性値範囲の割合を求め、その割合が最も小さい属性名を選択してもよい。図５は、属性値が取り得る下限値乃至上限値の範囲と、イベント条件で指定されている属性値の範囲と、下限値乃至上限値に占める属性値の範囲の割合との関係の一例を示す。例えば、属性名″ｘ″に対する属性値が取り得る値の数が１００で、イベント条件で指定された属性値範囲のサイズが１０であるとすると、それらの割合は、１／１０となる。また、例えば、属性名″ｙ″に対する属性値が取り得る値の数が３００で、イベント条件で指定された属性値範囲のサイズが５０であるとすると、その割合は１／６となる。よって、この例の場合、サブスクリプション転送情報生成部１１は、より割合の小さい属性名″ｘ″を選択する。そして、サブスクリプション転送情報生成部１１は、属性名″ｘ″と、それに対応する属性値範囲の下限値である属性値″１１″からキーを生成する。サブスクリプション転送情報生成部１１は、属性値範囲の下限値以外の値を用いてキーを生成しても良い。サブスクリプション転送情報生成部１１は、属性名と属性値からのキーの生成には、前述しているキー生成関数を用いる。
ここで、サブスクリプションのイベント条件に含まれる属性名及びその属性値の範囲と、ノードが管理する属性名及びその属性値の範囲に重複がある場合に、そのノードにサブスクリプションが登録される。したがって、上述のように、属性値として取り得る値の範囲に対してイベント条件として指定されている属性値範囲の割合が最も小さい属性名をサブスクリプション転送情報生成部１１が選択した場合は、サブスクリプションが登録されるノード数を低減することができる。
続いて、図６を参照して、本実施の形態にかかるイベント転送情報生成部１２における動作について説明する。図６は、イベント転送情報生成部１２の動作を示すフローチャートである。
パブリッシャ３２から入力されたイベントは、まず、イベント転送情報生成部１２で処理される（Ｓ１１１）。イベント転送情報生成部１２は、受信したイベントを構成する各属性名について、以下の処理を行う。まず、イベント転送情報生成部１２は、属性名ｎとそれに対する属性値ｖとをキー生成関数へ入力してキーを生成する（Ｓ１１２）。次に、イベント転送情報生成部１２は、生成したキーとイベントをペアとして、メッセージ転送部１７へ入力し、そのキーを管理するノードへメッセージを転送する（Ｓ１１３）。
続いて、図７を参照して、本実施の形態にかかるメッセージ判定部１３における動作について説明する。図７は、メッセージ判定部１３の動作を示すフローチャートである。
メッセージ判定部１３は、メッセージ転送部１７からキーとメッセージを受信する（Ｓ１２１）。メッセージ判定部１３は、受信したメッセージの内容を判定する（Ｓ１２２）。メッセージ判定部１３は、メッセージがサブスクリプションであれば、該キーと該メッセージをサブスクリプション配置制御部１４へ入力して処理を終了する（Ｓ１２３）。一方、メッセージ判定部１３は、メッセージがイベントであれば、該キーと該メッセージをイベント条件合致判定部１６にメッセージを入力して処理を終了する（Ｓ１２４）。
続いて、図８〜１０を参照して、本実施の形態にかかるサブスクリプション配置制御部１４における動作について説明する。図８は、サブスクリプション配置制御部１４の動作を示すフローチャートである。
サブスクリプション配置制御部１４は、メッセージ判定部１３からキーとメッセージを受信する（Ｓ１３１）。その後、サブスクリプション配置制御部１４は、サブスクリプション登録、削除処理（Ｓ１３２）と、サブスクリプション転送処理（Ｓ１３３）を行う。以降、前記２つの処理を説明する。
図９は、サブスクリプション配置制御部１４が行なうサブスクリプション登録、削除処理を示すフローチャートである。サブスクリプション登録、削除処理では、まず、サブスクリプション配置制御部１４は、メッセージの要求種別を判定する（Ｓ１４１）。メッセージが登録要求である場合、サブスクリプション配置制御部１４は、種別を登録として、メッセージに含まれるサブスクリプションＩＤとサブスクリプションからサブスクリプション操作要求を生成し（Ｓ１４２）、生成したサブスクリプション操作要求をサブスクリプション管理部１５に入力する（Ｓ１４４）。
一方、メッセージが削除要求である場合、サブスクリプション配置制御部１４は、種別を削除として、メッセージに含まれるサブスクリプションＩＤからサブスクリプション操作要求を生成し（Ｓ１４３）、生成したサブスクリプション操作要求をサブスクリプション管理部１５に入力する（Ｓ１４４）。
なお、サブスクリプション操作要求は、その構成要素の１つとして種別を含む。種別には、登録、削除、参照がある。サブスクリプション操作要求の構成要素は、種別ごとに異なる。種別が登録の場合のサブスクリプション操作要求を図１３に示す。種別が登録の場合、サブスクリプション操作要求は、種別に加えて、サブスクリプションＩＤとサブスクリプションとから構成される。種別が削除の場合のサブスクリプション操作要求を図１４に示す。種別が削除の場合、サブスクリプション操作要求は、種別に加えて、サブスクリプションＩＤから構成される。種別が参照の場合のサブスクリプション操作要求を図１５に示す。種別が参照の場合、サブスクリプション操作要求は、種別のみから構成される。
図１０は、サブスクリプション転送処理を示すフローチャートである。サブスクリプション転送処理では、まず、サブスクリプション配置制御部１４は、メッセージに含まれる属性名と、それに対する属性値範囲の上限値とからキー（ターゲットキー）を生成する（Ｓ１５１）。次に、サブスクリプション配置制御部１４は、本処理を実行しているノードが管理するキー範囲にターゲットキーが含まれるかどうかを判定する（Ｓ１５２）。含まれていない場合、サブスクリプション配置制御部１４は、サクセッサ（ノードが構成するリング上で、あるノードから見て次のノード）が管理するキーの下限値（新規キー）を生成し（Ｓ１５３）、その後、ネクストホップとしてサクセッサを指定して、メッセージ転送部１７へ新規キーとメッセージを入力する（Ｓ１５４）。ノードが管理するキー範囲にターゲットキーが含まれる場合には、サブスクリプション配置制御部１４は、メッセージ転送部１７にキー及びメッセージの入力は行なわない。
続いて、図１１を参照して、本実施の形態にかかるサブスクリプション管理部１５における動作について説明する。図１１は、サブスクリプション管理部１５の動作を示すフローチャートである。
サブスクリプション管理部１５は、サブスクリプションＩＤとサブスクリプションを管理するサブスクリプション管理テーブルを有する。サブスクリプション管理テーブルの例を図１２に示す。サブスクリプション管理テーブルには、サブスクリプションＩＤと、サブスクリプションとが対応付けられたレコードが格納される。図１２のサブスクリプション管理テーブルの一行目のレコードは、サブスクリプションＩＤが”ｓｕｂ１”であり、サブスクリプションのイベント条件が“５０≦ｘ≦１５０＆１５０≦ｙ≦２５０”であり、通知先のアプリケーションＩＤが“ａｐｐ１”である例を示している。
サブスクリプション管理部１５は、サブスクリプション配置制御部１４、あるいは、イベント条件合致判定部１６から、サブスクリプション操作要求を受信する（Ｓ１６１）。
サブスクリプション管理部１５は、サブスクリプション操作要求を受信すると、まず、受信したサブスクリプション操作要求の種別を参照する（Ｓ１６２）。種別が登録の場合、サブスクリプション管理部１５は、サブスクリプションとサブスクリプションＩＤのペアをレコードとしてサブスクリプション管理テーブルに追加する（Ｓ１６３）。種別が削除の場合、サブスクリプション管理部１５は、サブスクリプションＩＤが一致するレコードをサブスクリプション管理テーブルから削除する（Ｓ１６４）。種別が参照の場合、サブスクリプション管理部１５は、サブスクリプション管理テーブルを呼び出し、テーブルを参照後元に返す（Ｓ１６５）。
続いて、図１６を参照して、本実施の形態にかかるイベント条件合致判定部１６における動作について説明する。図１６は、イベント条件合致判定部１６の動作を示すフローチャートである。
イベント条件合致判定部１６は、メッセージ転送部１７からイベントを受信すると（Ｓ１７１）、サブスクリプション管理部１５へ種別を参照としたサブスクリプション操作要求を入力し、サブスクリプション管理テーブルを取得する（Ｓ１７２）。イベント条件合致判定部１６は、取得したサブスクリプション管理テーブルの各レコードｒについて、以下の処理を実行する。まず、イベント条件合致判定部１６は、イベントが、レコードｒのサブスクリプションの構成要素の１つであるイベント条件に合致するかどうかを判定する（Ｓ１７３）。合致した場合には、次に、イベント条件合致判定部１６は、レコードｒのサブスクリプションＩＤとイベントのペアを、レコードｒのサブスクリプションの構成要素の１つであるアプリケーションＩＤで識別されるアプリケーション４０に送信する（Ｓ１７４）。なお、イベント条件合致判定部１６は、イベントがレコードｒのサブスクリプションの構成要素の１つであるイベント条件に合致しない場合には、アプリケーションへのイベント通知は行わない。
続いて、図１７を参照して、本実施の形態にかかるメッセージ転送部１７における動作について説明する。図１７は、メッセージ転送部１７の動作を示すフローチャートである。
メッセージ転送部１７は、サブスクリプション転送情報生成部１１、イベント転送情報生成部１２、サブスクリプション配置制御部１４、あるいは、本処理が動作するノードとは別のノードからキーとメッセージを受信する（Ｓ１８１）。メッセージ転送部１７は、キーとメッセージを受信すると、受信したキーが、ノードが管理するキー範囲に含まれるかどうかを判定する（Ｓ１８２）。ここでの判定は、メッセージ転送部１７を含むノード１０内のいずれかに、メモリやハードディスク等の任意の記憶装置を有するようにして、この記憶装置にノード１０が管理するキー範囲を示すキー範囲情報を格納して、受信したキーと、キー範囲情報とを比較することによって判定可能としてもよい。この記憶装置は、図１で示した処理対象情報格納部５３に相当する。
メッセージ転送部１７が、受信したキーがノードの管理するキー範囲に含まれるかどうかを判定する処理の一例について説明する。ノードでは、「（自身の管理するキー範囲の上限値）−（自身の管理するキー範囲の下限値）」が最小となる範囲に、受信したキーが含まれているか否かを判定する。
たとえば、受信したキーが“ｘ：０５０”であるとする。図２を参照すると、ノードａでは上限値が“ｘ：２４０”であり下限値が“ｘ：１６０”であるので、その間が最小となる範囲に“ｘ：０５０”は含まれない。したがって、ノードａではメッセージ転送部１７は、受信したキーを含まない、と判定する。一方、ノードｃでは上限値が“ｘ：０８０”であり下限値が“ｘ：０００”であるので、その間が最小となる範囲に“ｘ：０５０”が含まれる。したがって、ノードｃではメッセージ転送部１７は、受信したキーを含む、と判定する。
別の例として、受信したキーが“ｚ：０５０”であるとする。図２を参照すると、ノードａでは上限値が“ｘ：２４０”であり下限値が“ｘ：１６０”であるので、その間が最小となる範囲に“ｚ：０５０”は含まれない。したがって、ノードａではメッセージ転送部１７は、受信したキーを含まない、と判定する。一方、ノードｅでは上限値が“ｘ：０００”であり下限値が“ｙ：２００”である。あらかじめ定められた属性名の循環的順序関係において、「ｘ＜ｙ＜ｚ…＜ｘ」であるので、その間が最小となる範囲に“ｚ：０５０”が含まれる。したがって、ノードｃではメッセージ転送部１７は、受信したキーを含む、と判定する。この際、メッセージ転送部１７は、下限値の生成に用いられた属性名ｙと上限値の生成に用いられた属性名ｘの順序関係が、一巡しない範囲における順序関係と一致しない場合、受信したキーが下限値と比較して小さい又は上限値と比較して大きい場合に受信したキーがキー範囲に含まれる判定することにより、上記の判定を実現してもよい。
受信したキーが、ノードが管理するキー範囲に含まれる場合、メッセージ転送部１７は、メッセージ判定部１３へキーとメッセージを入力する（Ｓ１８３）。受信したキーが、ノードが管理するキー範囲に含まれない場合、メッセージ転送部１７は、ネクストホップノードとしてサクセッサが指定されているか否かを判定する（Ｓ１８４）。メッセージ転送部１７は、ネクストホップノードとしてサクセッサが指定されている場合には、ネクストホップノードにキーとメッセージを転送する（Ｓ１８６）。一方、ネクストホップノードにサクセッサが指定されていない場合、メッセージ転送部１７は、ルーティングテーブルを参照し、転送先のノードを決定する（Ｓ１８５）。そして、メッセージ転送部１７は、ネクストホップノードにキーとメッセージを転送する（Ｓ１８６）。
メッセージ転送部１７は、ルーティングテーブルを有する。ルーティングテーブルは、キーと、ノードのネットワークアドレスとのペアを管理している。ルーティングテーブルは、例えば、メッセージ転送部１７が有する任意の記憶装置に格納される。ルーティングテーブルの生成、メンテナンス方法、ルーティングテーブルを参照してメッセージの転送先のノードを決定する方法は、ルーティングプロトコルに依存する。ルーティングプロトコルの例として、非特許文献２の３．３節に記述される方法が利用されてもよい。ルーティングプロトコルは、任意に決定されてもよく、メッセージ転送部１７は、例えば、「（送信するキー）＞（ノードが管理するキー範囲の下限値）」となるノードのうち、「（送信するキー）−（ノードが管理するキー範囲の下限値）」が最小となるノードに、キー及びメッセージが到達するように送信してもよい。
続いて、図１８を参照して、本実施の形態にかかるイベント配信システム１における動作について説明する。図１８は、イベント配信システム１の動作例を示す図である。図１８に示すように、例えば、ノードｃが［″ｘ：０００″，″ｘ：０８０″）、ノードｂが［″ｘ：０８０″，″ｘ：１６０″）、ノードａが［″ｘ：１６０″，″ｘ：２４０″）、ノードｄが［″ｘ：２４０″，″ｙ：０００″）、ノードｇが［″ｙ：０００″，″ｙ：１００″）、ノードｆが［″ｙ：１００″，″ｙ：２００″）、ノードｅが［″ｙ：２００″，″ｘ：０００″）までを管理している。
イベント配信システム１の構成要素であるノードｇが、サブスクライバ３１からサブスクリプションｓ（５０≦ｘ≦１５０＆１５０≦ｙ≦２５０，ａｐｐ１）を受信したと仮定する（Ｓ８０）。
ノードｇは、サブスクリプション転送情報生成部１１でサブスクリプションｓを構成する属性名ｘと属性名ｙから、例えば上述した方法によって属性名ｘを選択する（Ｓ８１）。次に、サブスクリプション転送情報生成部１１は、属性名ｘと、その属性値範囲の下限値である５０とからキー″ｘ：０５０″を生成する。サブスクリプション転送情報生成部１１は、サブスクライバ３１から入力された、サブスクリプションＩＤ、サブスクリプション、要求種別（ここでは要求種別が登録要求である場合を例とする）と、選択した属性名″ｘ″とを合わせてメッセージとする。サブスクリプション転送情報生成部１１は、キーとメッセージをメッセージ転送部１７へ入力する。そして、メッセージ転送部１７は、入力されたキー及びメッセージをルーティングプロトコルにしたがって、そのキーを管理するノードに対して送信する。
本実施の形態では、ノードｇのメッセージ転送部１７から送信されたキー及びメッセージは、０以上のノードのメッセージ転送部１７を経由して、最終的に、キー″ｘ：０５０″を管理するノードｃのメッセージ転送部に到達する（Ｓ８２）。ノードｇから送信されたキー及びメッセージは、ノードｅ、ｆを経由してノードｃに到達するようにしてもよいし、ノードｇから直接ノードｃに到達するようにしてもよい。ここでは、「（送信するキー）＞（ノードが管理するキー範囲の下限値）」となるノードのうち、「（送信するキー）−（ノードが管理するキー範囲の下限値）」が最小となるノードｃに、キー及びメッセージが到達する。
ノードｃのメッセージ転送部１７は、受信したキー″ｘ：０５０″が、ノードｃが管理するキー範囲［″ｘ：０００″，″ｘ：０８０″）に含まれるため、メッセージ判定部１３にキーとメッセージを入力する。メッセージ判定部１３は、メッセージがサブスクリプションから構成されているため、キーとメッセージをサブスクリプション配置制御部１４へ入力する。ここでは要求種別が登録要求である場合を例としているので、サブスクリプション配置制御部１４は、サブスクリプションＩＤとサブスクリプションのペアをサブスクリプション管理部１５に登録する（図９のフロー参照）。
また、メッセージに含まれる属性名″ｘ″と、それに対する属性値範囲の上限値１５０から生成されるキー″ｘ：１５０″が、ノードｃが管理するキー範囲［″ｘ：０００″，″ｘ：０８０″）に含まれない。そのため、サブスクリプション配置制御部１４は、サクセッサが管理するキーの下限値（新規キー）″ｘ：０８０″と、入力されたメッセージを、メッセージ転送部１７に入力する（図１０のフロー参照）。
ここで、ノードｃのサクセッサとして、ノードｃが管理するキー範囲［″ｘ：０００″，″ｘ：０８０″）に続くキー範囲［″ｘ：０８０″，″ｘ：１６０″）を管理するノードｂが設定されている。つまり、メッセージの属性値範囲の上限値１５０から生成されるキー″ｘ：１５０″が、ノードｃに含まれない場合、メッセージの属性値範囲がノードｃの管理するキー範囲に続くキー範囲を管理するノードｂに含まれることになる。したがって、ノードｃは、メッセージのサブスクリプションがノードｂでも登録されるようにするため、ノードｂが管理するキー範囲の下限値から生成したキー″ｘ：０８０″とメッセージを、ノードｂに送信する。よって、メッセージ転送部１７は、サブスクリプション配置制御部１４からネクストホップとしてサクセッサであるノードｂが指定される。そして、メッセージ転送部１７は、入力されたキー及びメッセージをノードｂに送信する。
ノードｃのメッセージ転送部１７から送信されたキーとメッセージは、ノードｂに到達する（Ｓ８３）。ノードｂのメッセージ転送部１７は、受信したキー″ｘ：０８０″が、管理するキー範囲［″ｘ：０８０″，″ｘ：１６０″）に含まれるため、メッセージ判定部１３にキーとメッセージを入力する。そして、ノードｃにおける処理と同様に、メッセージを構成するサブスクリプションＩＤとサブスクリプションは、該ノードのサブスクリプション管理部１５に登録される。また、メッセージに含まれる属性名″ｘ″と、それに対する属性値範囲の上限値１５０から生成されるキー″ｘ：１５０″は、ノードｂが管理するキー範囲［″ｘ：０８０″，″ｘ：１６０″）に含まれる。そのため、サブスクリプション配置制御部１４は、メッセージ転送部１７にキー及びメッセ−ジの入力は行わない。よって、メッセージの転送は行われない。これらの処理の結果、サブスクリプションｓはノードｃとノードｂに保持されることとなる。
次に、イベント配信システム１の構成要素であるノードａが、パブリッシャ３２からイベントｅ（ｘ＝１００，ｙ＝２００）を受信したとする（Ｓ８４）。イベントは属性名ｘと属性名ｙから構成されるので、ノードａのイベント転送情報生成部１２は、属性名ｘに対するキー″ｘ：１００″と、属性名ｙに対するキー″ｙ：２００″を生成する。イベント転送情報生成部１２は、イベントをメッセージとして、それぞれのキーごとにメッセージ転送部１７に入力する。そして、メッセージ転送部１７は、入力されたキー及びメッセージをルーティングプロトコルにしたがって、そのキーを管理するノードに対して送信する。
メッセージは、それぞれのキーを管理するノードへ転送される。キー″ｘ：１００″と、そのキーと共に送信されたメッセージは、ノードｂに到達する（Ｓ８５）。キー″ｙ：２００″と、そのキーと共に送信されたメッセージは、ノードｅに到達する（Ｓ８６）。
キー″ｘ：１００″とそのイベントがノードｂに到達すると、ノードｂのメッセージ転送部１７は、受信したキー″ｘ：１００″が、管理するキー範囲［″ｘ：０８０″，″ｘ：１６０″）に含まれるため、メッセージ判定部１３にキーとメッセージを入力する。メッセージ判定部１３は、メッセージがイベントから構成されているため、キーとメッセージをイベント条件合致判定部１６に入力する。イベント条件合致判定部１６は、サブスクリプション管理部１５からサブスクリプション管理テーブルを取得する。そして、イベント条件合致判定部１６は、サブスクリプション管理テーブルに登録されているサブスクリプションｓのイベント条件が「（５０≦ｘ≦１５０）かつ（１５０≦ｙ≦２５０）」であり、イベントの属性値が「ｘ＝１００，ｙ＝２００」であるため、イベント条件に合致すると判定する。そのため、イベント条件合致判定部１６は、アプリケーションａｐｐ１にイベントを通知する（図１６のフロー参照）。
また、キー″ｙ：２００″とそのイベントがノードｅに到達すると、ノードｅのメッセージ転送部１７は、受信したキー″ｙ：２００″が、ノードｅが管理するキー範囲［″ｙ：２００″，″ｘ：０００″）に含まれるため、メッセージ判定部１３にキーとメッセージを入力する。メッセージ判定部１３は、メッセージがイベントから構成されているため、キーとメッセージをイベント条件合致判定部１６に入力する。イベント条件合致判定部１６は、サブスクリプション管理部１５からサブスクリプション管理テーブルを取得する。そして、イベント条件合致判定部１６は、イベントの属性値が「ｘ＝１００，ｙ＝２００」であるが、サブスクリプションｓがサブスクリプション管理テーブルに登録されていないため、イベント条件に合致しないと判定する。そのため、イベント条件合致判定部１６は、アプリケーションへのイベントの通知は行わない。
図２、図１８で示したイベント配信システム１は、属性名ｘあるいは属性名ｙから生成されるキーを分割して、多くのノードに割り当てている。これは、イベント配信システム１に登録されているサブスクリプションで指定されている属性が、属性名ｘ、あるいは、属性名ｙ（両方も含む）のみであることをイベント配信システム１の管理者等が想定しているためである。そして、イベント配信システム１は、属性名ｘあるいは属性名ｙの条件を指定しているサブスクリプションが登録されている場合であって属性名ｘあるいは属性名ｙを含むイベントが発生した場合に、そのイベントとサブスクリプションとのマッチング処理をする必要がある。イベント配信システム１は、属性名ｘと属性名ｙから生成されるキーを分割して、複数のノードに割り当てることで、マッチング処理を分散させ、イベント配信システム１のイベント処理負荷を平準化することができる。
続いて、図２０を参照して、それまで指定されたことのなかった属性名ｚが指定されたサブスクリプションがサブスクライブされたときの、本実施の形態にかかるイベント配信システム１における動作について説明する。
イベント配信システム１の構成要素であるノードｇが、サブスクライバ３１からサブスクリプションｓ（５０≦ｚ≦１５０，ａｐｐ１）を受信したとする（Ｓ９０）。ノードｇのサブスクリプション転送情報生成部１１は、属性名ｚと、その属性値範囲の下限値である５０とからキー″ｚ：０５０″を生成する。サブスクリプション転送情報生成部１１は、該キーとメッセージをノードｇのメッセージ転送部１７へ入力する。ここで、該メッセージは、サブスクライバ３１から入力された、サブスクリプションＩＤ、サブスクリプション、要求種別、属性名″ｚ″を含むデータである（Ｓ９１）。
次に、ノードｇのメッセージ転送部１７は、入力されたキー及びメッセージをルーティングプロトコルにしたがって、そのキーを管理するノードに対して送信する（Ｓ９２）。
キー“ｚ：０５０”は、「（送信するキー）＞（ノードが管理するキー範囲の下限値）」となるノードのうち「（送信するキー）−（ノードが管理するキー範囲の下限値）」が最小となるノードに到達することになる。ここで図２を参照して各ノードが管理するキー範囲の下限値を確認すると、ノードａが管理するキー範囲の下限値は“ｘ：１６０”である。ノードｂが管理するキー範囲の下限値は“ｘ：０８０”である。ノードｃが管理するキー範囲の下限値は“ｘ：０００”である。ノードｄが管理するキー範囲の下限値は“ｘ：２４０”である。ノードｅが管理するキー範囲の下限値は“ｙ：２００”である。ノードｆが管理するキー範囲の下限値は“ｙ：１００”である。ノードｇが管理するキー範囲の下限値は“ｙ：０００”である。他方、属性名の順序関係は一巡しない範囲において「ｘ＜ｙ＜ｚ」である。よって、「（送信するキー）＞（ノードが管理するキー範囲の下限値）」となるノードのうち「（送信するキー）−（ノードが管理するキー範囲の下限値）」が最小となるノードはｅとなる。
したがって、ノードｇのメッセージ転送部１７から送信されたキー及びメッセージは、０以上のノードのメッセージ転送部１７を経由して、最終的に、キー″ｚ：０５０″を管理するノードｅのメッセージ転送部１７に到達し、ノードｅで保持される。
次に、イベント配信システム１の構成要素であるノードａが、パブリッシャ３２からイベントｅ（ｚ＝１００）を受信したとする（Ｓ９３）。ノードａのイベント転送情報生成部１２は、属性名ｚに対するキー″ｚ：１００″を生成する。後は、サブスクリプションの転送の場合と同様に、転送されたイベントは、ノードｅに到達する（Ｓ９４）。
次に、イベント配信システム１が、属性名ｚが指定されるイベントやサブスクリプションが多くなってくる場合に、属性名ｚから生成されるキーに対してより多くのリソースを割り当てるように各ノードの管理するキー範囲を変更する場合の動作について図１、図２０、図２１を用いて説明する。
まず、図２０に示すように、ノードｅはキー範囲［″ｙ：２００″，″ｘ：０００″）を管理し、ノードｆはキー範囲［″ｙ：１００″，″ｙ：２００″）を管理しているものと仮定する。
ノードｅがサブスクリプションあるいはイベント情報を受信した場合、処理対象判定部５２は、該サブスクリプションあるいはイベント情報に含まれる属性名を参照し、一定時間ごとに受信したサブスクリプションあるいはイベント情報の少なくとも一方に含まれる属性名の数をカウントする。そして、該属性名の数が、例えば、予め処理対象情報格納部５３に格納されている閾値以上になった場合に、あるいは、増加率が一定の値を超えた場合に、ノードｅは、自己が管理するキー範囲の下限値である“ｙ：２００”のキーをキー情報生成部５１で生成するとともに、変更分キー範囲の情報を生成する。変更分キー範囲をどのように決定するかは、例えば、システムパラメータで与えられる。当該システムパラメータが、例えば、一定時間の受信イベント情報数が閾値以上となった属性名に対する属性値の下限値未満を変更分キー範囲とすることを指定する場合、例えば、図２０から図２１のようにノードｅは、変更分キー範囲を［″ｙ：２００″，″ｚ：０００″）とし、自己の管理するキー範囲を［″ｙ：２００″，″ｘ：０００″）から［″ｚ：０００″，″ｘ：０００″）のように変更すると決定する。なお、該変更分キー範囲は予め管理者が定めても良いし、処理対象情報格納部５３がテーブルを参照して決定しても良い。この場合、例えば、処理対象情報格納部５３は、ノードが受信したサブスクリプションが指定する属性名の増加率と変更分キー範囲とを対応付けた図示しない変更範囲管理テーブルを有していても良い。あるいは、処理対象情報格納部５３は、イベントに含まれる属性名の増加率等と変更分キー範囲とを対応付けた図示しない変更範囲管理テーブルを有していても良い。あるいは、処理対象情報格納部５３は、サブスクリプションやイベント情報に含まれる属性名に対応する属性値の範囲と変更分キー範囲とを対応付けた図示しない変更範囲管理テーブルを有していても良い。この場合、変更範囲管理テーブルは、例えば、サブスクリプションが指定する属性名の増加率やイベント情報に含まれる属性名の増加率、あるいは、属性名に対応する属性値の範囲が大きいほど大きくなる変更分キー範囲を管理しても良い。キー情報生成部５１は、キー範囲［″ｙ：２００″，″ｚ：０００″）を生成する。情報転送部５４は、該生成したキーと該キー範囲とをサクセッサへ送信する。
サクセッサであるノードが該キーと該キー範囲とを受信すると、処理対象判定部５２は、受信したキーが自己の管理するキー範囲の上限値であるか否かを、処理対象情報格納部５３に格納されている自己の管理するキー範囲を参照して判定する。処理対象判定部５２は、受信したキーが自己の管理するキー範囲の上限値ではないと判定した場合には、そのキーを次のサクセッサへ送信する。一方、受信したキーが自己の管理するキー範囲の上限値である場合には、処理対象情報格納部５３は、自己の管理するキー範囲に、受信したキー範囲を加えた新たなキー範囲を自己の管理する新たなキー範囲として格納する。例えば、図２０のノードｆがキー“ｙ：２００”を受信すると、ノードｆは、該キーと自己の管理するキー範囲［″ｙ：１００″，″ｙ：２００″）の上限値とが一致することから、自己の管理するキー範囲［″ｙ：１００″，″ｙ：２００″）に、受信した変更分キー範囲［″ｙ：２００″，″ｚ：０００″）を加えた新たなキー範囲［″ｙ：１００″，″ｚ：０００″）を自己が新たに管理するキー範囲として処理対象情報格納部５３が格納する。そして、該ノードは、キー範囲を変更した旨を、受信したキー情報″ｙ：２００”および変更分キー範囲［″ｙ：２００″，″ｚ：０００″）とともに次のサクセッサに送信する。
次のサクセッサであるノードは、該キー範囲を変更した旨の情報と、該キー情報″ｙ：２００”と、該変更分キー範囲［″ｙ：２００″，″ｚ：０００″）とを受信すると、該キー情報″ｙ：２００”が自己の管理するキー範囲の下限値であるか否かを判定する。そして、自己の管理するキー範囲の下限値でない場合には、受信したキー範囲を変更した旨の情報、キー情報、変更分キー範囲をさらに次のサクセッサに送信する。一方、受信したキーが自己の管理するキー範囲の下限値である場合には、自己の管理するキー範囲から、受信した変更分キー範囲を減じた範囲を、自己が管理する新たなキー範囲として処理対象情報格納部５３が格納する。本実施の形態では、ノードｅの管理するキー範囲［″ｙ：２００″，″ｘ：０００″）の下限値とキー″ｙ：２００”とが一致するため、処理対象情報格納部５３は、キー範囲を、［″ｙ：２００″，″ｘ：０００″）から［″ｙ：２００″，″ｚ：０００″）の範囲を減じた［″ｚ：０００″，″ｘ：０００″）に変更する。
これにより、イベント配信システム１は、例えば、図２０から図２１のようにノードが管理するキー範囲を変更することができる。すなわち、ノードｅは管理するキー範囲を、［″ｙ：２００″，″ｘ：０００″）から［″ｚ：０００″，″ｘ：０００″）のように変更し、ノードｆは管理するキー範囲を［″ｙ：１００″，″ｙ：２００″）から［″ｙ：１００″，″ｚ：０００″）のように変更することができる。なお、ノードｅは、キー範囲を変更する際に、下限値の代わりに上限値をサクセッサに送信することにしても良い。その場合、上記文章中で下限値と上限値とを適宜読み替える。また、この場合、ノードｆの代わりにノードｃの管理するキー範囲が変更される。なぜなら、ノードｃはノードｅのキー範囲の上限値を、キー範囲の下限値として管理するノードだからである。また、より一般的には、ノードｅは、自己の管理するキー範囲の下限値と上限値の両方をサクセッサに送信しても良い。この場合、ノードｅは自己の区間を複数区間に分割し、上述の方法によってノードｅの下限値を含む区間をノードｆに、ノードｅの上限値を含む区間をノードｃに割り当てることができる。また、上記例では、ノードｅはノードｆがキー範囲を変更したことを確認してから、自己の管理するキー範囲を変更しているが、ノードｅは、変更分キー範囲をサクセッサに送信する段階で自己の管理するキー範囲を変更しても良い。また、ノードが送信する情報は、サクセッサ以外の他のノードに送信しても良い。例えば、上述のノードｅは、変更分キー範囲のみをキー情報生成部５１で生成して、プレディセッサであるノードｆに送信しても良い。この場合、プレディセッサであるノードｆは、自己の管理するキー範囲と受け取った変更分キー範囲とをマージした区間を新たに自己が管理するキー範囲としてもよい。
図２２、図２３を用いて、このキー範囲の変更の全体像を説明する。図２２の内側円は、各ノードの管理する属性名がｘ、ｙ、ｚの３つのみであり、それらが循環的順序関係をもっている様子を表している。また、各属性名に対する属性値の範囲はいずれも０から３２０の間であるとする。図２２の外側円は、各ノードが管理するキー範囲を示している。例えば、ノードｃが［″ｘ：０００″，″ｘ：０８０″）、ノードｂが［″ｘ：０８０″，″ｘ：１６０″）、ノードａが［″ｘ：１６０″，″ｘ：２４０″）、ノードｄが［″ｘ：２４０″，″ｙ：０００″）、ノードｇが［″ｙ：０００″，″ｘ：１００″）、ノードｆが［″ｙ：１００″，″ｙ：２００″）、ノードｅが［″ｙ：２００″，″ｘ：０００″）までを管理している。
図２３は、イベント配信システム１が、ノードが管理するキー範囲を変更した様子を表している。例えば、図２３は、ノードｆの管理する範囲が［″ｙ：１００″，″ｚ：０００″）、ノードｅの管理する範囲が［″ｚ：０００″，″ｘ：０００″）である様子を表している。
このとき、もともとノードｅが管理していたキー範囲は、図２２に示すように、属性名ｙからなるキー範囲２００≦ｙ≦３２０の１２０（＝３２０−２００）の範囲分と、属性名ｚからなるキー範囲０≦ｚ≦３２０の３２０（＝３２０−０）の範囲分であるから、キー範囲全体に対する属性名ｚからなるキー範囲の割合は、３２０／（１２０＋３２０）＝８／１１である。一方、キー範囲変更後は、図２３に示すように、ノードｅの管理するキー範囲は属性名ｚからなるキー範囲０≦ｚ≦３２０の３２０（＝３２０−０）の範囲分だけであるから、キー範囲全体に対する属性名ｚからなるキー範囲の割合は３２０／３２０＝１となる。このように、属性名ｚからなるキー範囲の割合が、もともとノードｅが管理していたキー範囲に対する属性名ｚからなるキー範囲の割合よりも大きくなる。このことは、属性名ｚが指定されるイベントやサブスクリプションが多くなってくる場合に、イベント配信システム１が、ノードが管理するキー範囲のうち属性名ｚから生成されるキー範囲の割合を増加させたことに相当する。また、イベント配信システム１は、同様にして、ノードｅのみならず、より多くのノードが属性ｚからなるキー範囲を管理するようにキー範囲の割当を変更しても良い。
図２４は、ノードｅが、もともと管理していたキー範囲［″ｙ：２００″，″ｘ：０００″）を新たにキー範囲［″ｚ：０００″，″ｚ：２００″）に変更した様子を示している。また、図２４は、これに伴い、ノードｆがキー範囲を［″ｙ：１００″，″ｙ：２００″）から［″ｙ：１００″，″ｚ：０００″）に変更させ、ノードｃがキー範囲を［″ｘ：０００″，″ｘ：０８０″）から［″ｚ：２００″，″ｘ：０８０″）に変更させた様子を示している。ノードｅは、上述のとおり、自己の管理していたキー範囲の下限値を含む所定範囲［″ｙ：２００″，″ｚ：０００″）を他のノードに送信し、それを受信したノードｆが、当該範囲を自己の管理するキー範囲に加えることで、キー範囲を［″ｙ：１００″，″ｙ：２００″）から［″ｙ：１００″，″ｚ：０００″）に変更させることができる。同様にして、ノードｅは、自己の管理していたキー範囲の上限値を含む所定範囲［″ｚ：２００″，″ｘ：０００″）を他のノードに送信し、それを受信したノードｃが、当該範囲を自己の管理するキー範囲に加えることで、キー範囲を［″ｘ：０００″，″ｘ：０８０″）から［″ｚ：２００″，″ｘ：０８０″）に変更させることができる。
このように、イベント配信システム１は、属性名ｚが指定されるイベントやサブスクリプションが多くなってくる場合に、属性名ｚから生成されるキーに対してより多くのリソースを割り当てるようなキーの割り当てに変更することで、負荷のバランスをとることができる。
以上に説明したように、本実施の形態は、サブスクリプションやイベントに、それまで指定されたことのなかった属性の条件が指定された場合にも、それまで指定されてきた属性が指定された場合と同じオーダの処理時間で、サブスクリプション及びイベントを転送することができる。つまり、イベント配信システム１は、新たな属性名追加時に、各ノードにおいて行われる属性名を追加するための処理の時間を短縮することができる。
＜実施形態２＞
次に、本発明の第２の実施の形態について図２５を用いて説明する。本実施の形態における情報処理装置５は、処理対象判定部５２、処理対象情報格納部５３を備える。これらの構成、動作については上述したとおりであるから説明を省略する。
この情報処理装置５によれば、属性名と属性値とを用いて、少なくとも２以上の属性名について予め定められた順序関係に基づいて生成される大小比較可能な形式であるキーの範囲が互いに隣接するように複数に分割された各区間のうちの少なくともひとつ以上の区間である自区間を記憶する自区間記憶手段と、属性名と属性値とから生成されるキーが前記自区間に含まれるか否かを判定する判定手段と、を備える情報処理装置が提供される。
本実施の形態によれば、各ノードにおいて行われる属性名を追加するための処理の時間を短縮する情報処理装置、システム、制御方法およびプログラムを提供することができる。
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
以上に説明した本発明にかかるノードは、上述の実施の形態の機能を実現するプログラムを記憶した記憶媒体を装置に供給し、装置の有するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）又はＭＰＵ（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等がこのプログラムを実行することによって、構成することが可能である。
また、このプログラムは様々な種類の記憶媒体に格納することが可能であり、通信媒体を介して伝達されることが可能である。ここで、記憶媒体は、例えば、フレキシブルディスク、ハードディスク、磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）、ＢＤ（Ｂｌｕ−ｒａｙ（登録商標）Ｄｉｓｃ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）カートリッジ、バッテリバックアップ付きＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、メモリカートリッジ、フラッシュメモリカートリッジ、不揮発性ＲＡＭカートリッジを含む。また、通信媒体は、電話回線等の有線通信媒体、マイクロ波回線等の無線通信媒体を含む。また、上述のプログラムは、インターネットを介して伝達することも可能である。
また、ＣＰＵ又はＭＰＵが上述の実施の形態の機能を実現するプログラムを実行することにより、上述の実施の形態の機能が実現されるだけではなく、このプログラムの指示に基づき、装置上で稼動しているＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）もしくはアプリケーションソフトと共同して上述の実施の形態の機能が実現される場合も、発明の実施の形態に含まれる。
さらに、このプログラムの処理の全てもしくは一部が装置に挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットにより行われて上述の実施の形態の機能が実現される場合も、発明の実施の形態に含まれる。
（実施の形態の他の表現）
上述の実施の形態、実施例の一部又は全部は下記のようにも表現できるが、下記のように限定されない。
（付記１）
属性名と属性値とを用いて、少なくとも２以上の属性名について予め定められた順序関係に基づいて生成される大小比較可能な形式であるキーの範囲が互いに隣接するように複数に分割された各区間のうちの少なくともひとつ以上の区間である自区間を記憶する自区間記憶手段と、属性名と属性値とから生成されるキーが前記自区間に含まれるか否かを判定する判定手段と、を備える情報処理装置。
属性名と属性値とを含む情報であるイベント情報を受信する受信手段と、前記属性名のうち、受信した前記イベント情報に含まれる頻度が所定値以上の属性名が存在する場合、前記自区間の分割された区間であって下限または上限を含む区間である端区間を、前記端区間に隣接する区間を記憶する他の情報処理装置へ送信する区間情報転送手段と、他の情報処理装置から自区間に隣接する区間を受信する区間情報受信手段と、前記送信した端区間と前記区間情報受信手段で受信した区間の一方もしくは両方を用いて自区間記憶手段を更新する処理対象情報格納手段と、をさらに備える付記１に記載の情報処理装置。
（付記３）
前記イベント情報を受信した場合に、前記イベント情報に含まれる属性名と属性値とに基づいて、大小比較可能な形式であるキーを生成するキー情報生成手段と、生成された前記キーが前記自区間に含まれる場合には、前記イベント情報を前記第一の処理対象とし、含まれない場合には、前記イベント情報と前記イベント情報から生成された前記キーとを、他の情報処理装置に送信する情報転送手段と、をさらに備え、前記情報転送手段は、他の情報処理装置から前記端区間を受信した場合に、前記上限または下限が前記自区間の上限または下限と一致しない場合には前記端区間を他の情報処理装置に送信し、前記処理対象情報格納手段は、前記受信した区間の上限または下限が前記自区間の上限または下限と一致する場合には前記自区間に前記端区間を加えた区間を前記自区間記憶手段に記憶させる付記２に記載の情報処理装置。
（付記４）
前記キー情報生成手段は、前記属性名と前記属性値の取り得る値の範囲とを含む情報であるサブスクリプション情報を受信した場合に、前記属性名及び前記属性値のいずれか１つの属性名とそれに対応する属性値とから登録キーを生成し、前記処理対象情報格納手段は、前記登録キーが前記自区間に含まれる場合に、前記サブスクリプション情報に含まれる前記属性名及び前記属性値の取り得る値の範囲から生成されるキー範囲をイベント条件として保持し、前記処理対象判定手段は、前記キーが前記自区間に含まれる場合に前記イベント条件を検索する前記第一の処理を実行し、前記イベント条件に前記キーが含まれる場合に前記イベント情報を第二の処理対象とする付記３のいずれかに記載の情報処理装置。
（付記５）
前記情報転送手段は、前記属性名のうち、受信した前記イベント情報または前記サブスクリプション情報に含まれる頻度が所定値以上の属性名が存在する場合、前記自区間を３つの区間に分割し、分割された区間のうち下限を含む第１の区間と、上限を含む第２の区間を他の情報処理装置に送信し、前記処理対象情報格納手段は、前記情報転送手段が送信していない区間を自装置に割り当てる付記３乃至４のいずれかに記載の情報処理装置。
（付記６）
前記情報転送手段は、前記属性名のうち、受信した前記イベント情報または前記サブスクリプション情報に含まれる頻度が所定値以上の属性名が存在する場合、前記自区間を２つの区間に分割し、分割された区間のうち下限または上限を含む一方の区間を他の情報処理装置に送信し、前記処理対象情報格納手段は、前記情報転送手段が送信していない他方の区間を自装置に割り当てる請求項３乃至４のいずれかに記載の情報処理装置。
（付記７）
前記属性名が任意の長さの文字列で表される請求項１乃至６のいずれかに記載の情報処理装置。
（付記８）
前記自区間記憶手段は、自区間の上限及び下限を記憶し、前記判定手段は、前記自区間の上限の生成に用いられた属性名と下限の生成に用いられた属性名との順序関係が前記予め定められた順序関係と一致しない場合、前記生成されるキーが前記下限と比較して小さい又は前記上限と比較して大きい場合に前記生成されるキーが自区間に含まれると判定する、請求項１乃至７のいずれかに記載の情報処理装置。
（付記９）
属性名と属性値とに基づいて生成される大小比較可能な形式であるキーの値の範囲が複数区間に分割された各区間のうち、自装置に割り当てられた区間（自区間）以外の各区間を割り当てられた他の情報処理装置と接続され、前記属性名と前記属性値とを含む情報であるイベント情報を受信した場合、該イベント情報に含まれる前記属性名と前記属性値とから生成される前記キーが前記自区間に含まれる場合に前記イベント情報を第一の処理対象とする処理対象判定手段と、前記属性名のうち、受信した前記イベント情報に含まれる頻度が所定値以上の属性名が存在する場合、前記自区間を２以上の区間に分割し、分割された区間のうち下限または上限を含む区間（端区間）を、前記端区間に隣接する区間を割り当てられ前記端区間を受信すると前記区間に前記端区間を加えた区間を自装置に割り当てる他の情報処理装置に送信する情報転送手段と、前記情報転送手段が送信した端区間以外の少なくとも１つの区間を自装置に割り当てる処理対象情報格納手段と、を備える情報処理装置。
（付記１０）
属性名と属性値とを用いて、少なくとも２以上の属性名について予め定められた順序関係に基づいて生成される大小比較可能な形式であるキーの範囲が互いに隣接するように複数に分割された各区間のうちの少なくともひとつ以上の区間である自区間を記憶する自区間記億手段を備える情報処理装置に、属性名と属性値とから生成されるキーが前記自区間に含まれるか否かを判定する判定ステップを実行させる情報処理プログラム。
（付記１１）
属性名と属性値とを含む情報であるイベント情報を受信する受信ステップと、前記属性名のうち、受信した前記イベント情報に含まれる頻度が所定値以上の属性名が存在する場合、前記自区間の分割された区間であって下限または上限を含む区間である端区間を、前記端区間に隣接する区間を記憶する他の情報処理装置へ送信する区間情報転送ステップと、他の情報処理装置から自区間に隣接する区間を受信する区間情報受信ステップと、前記送信した端区間と前記区間情報受信ステップにおいて受信した区間の一方もしくは両方を用いて前記自区間記憶手段を更新する処理対象情報格納ステップと、をさらに情報処理装置に実行させる付記１０に記載の情報処理プログラム。
（付記１２）
前記イベント情報を受信した場合に、前記イベント情報に含まれる属性名と属性値とに基づいて、大小比較可能な形式であるキーを生成するキー情報生成ステップと、生成された前記キーが前記自区間に含まれる場合には、前記イベント情報を前記第一の処理対象とし、含まれない場合には、前記イベント情報と前記イベント情報から生成された前記キーとを、他の情報処理装置に送信する情報転送ステップと、をさらに備え、前記情報転送ステップにおいて、他の情報処理装置から前記端区間を受信した場合に、前記上限または下限が前記自区間の上限または下限と一致しない場合には前記端区間を他の情報処理装置に送信し、前記処理対象情報格納ステップにおいて、前記受信した区間の上限または下限が前記自区間の上限または下限と一致する場合には前記自区間に前記端区間を加えた区間を前記自区間記憶手段に記憶する記憶ステップを情報処理装置に実行させる付記１１に記載の情報処理プログラム。
（付記１３）
前記キー情報生成ステップにおいて、前記属性名と前記属性値の取り得る値の範囲とを含む情報であるサブスクリプション情報を受信した場合に、前記属性名及び前記属性値のいずれか１つの属性名とそれに対応する属性値とから登録キーを生成し、前記処理対象情報格納ステップにおいて、前記登録キーが前記自区間に含まれる場合に、前記サブスクリプション情報に含まれる前記属性名及び前記属性値の取り得る値の範囲から生成されるキー範囲をイベント条件として保持し、前記処理対象判定ステップにおいて、前記キーが前記自区間に含まれる場合に前記イベント条件を検索する前記第一の処理を実行し、前記イベント条件に前記キーが含まれる場合に前記イベント情報を第二の処理対象とする付記１２に記載の情報処理プログラム。
（付記１４）
前記情報転送ステップにおいて、前記属性名のうち、受信した前記イベント情報または前記サブスクリプション情報に含まれる頻度が所定値以上の属性名が存在する場合、前記自区間を３つの区間に分割し、分割された区間のうち下限を含む第１の区間と、上限を含む第２の区間を他の情報処理装置に送信し、前記処理対象情報格納ステップにおいて、前記情報転送ステップにおいて送信していない区間を自装置に割り当てる付記１２乃至１３のいずれかに記載の情報処理プログラム。
（付記１５）
前記情報転送ステップにおいて、前記属性名のうち、受信した前記イベント情報または前記サブスクリプション情報に含まれる頻度が所定値以上の属性名が存在する場合、前記自区間を２つの区間に分割し、分割された区間のうち下限または上限を含む一方の区間を他の情報処理装置に送信し、前記処理対象情報格納ステップにおいて、前記情報転送ステップにおいて送信していない他方の区間を自装置に割り当てる付記１２乃至１３のいずれかに記載の情報処理プログラム。
（付記１６）
前記自区間記憶手段は、自区間の上限及び下限を記憶し、前記判定ステップにおいて、前記自区間の上限の生成に用いられた属性名と下限の生成に用いられた属性名との順序関係が前記予め定められた順序関係と一致しない場合、前記生成されるキーが前記下限と比較して小さい又は前記上限と比較して大きい場合に前記生成されるキーが自区間に含まれると判定する、付記１０乃至１５のいずれかに記載の情報処理プログラム。
（付記１７）
属性名と属性値とに基づいて生成される大小比較可能な形式であるキーの値の範囲が複数区間に分割された各区間のうち、自装置に割り当てられた区間（自区間）以外の各区間を割り当てられた他の情報処理装置と接続されたコンピュータに、前記属性名と前記属性値とを含む情報であるイベント情報を受信した場合、該イベント情報に含まれる前記属性名と前記属性値とから生成される前記キーが前記自区間に含まれる場合に前記イベント情報を第一の処理対象とする処理対象判定ステップと、前記属性名のうち、受信した前記イベント情報に含まれる頻度が所定値以上の属性名が存在する場合、前記自区間を２以上の区間に分割し、分割された区間のうち下限または上限を含む区間（端区間）を、前記端区間に隣接する区間を割り当てられ前記端区間を受信すると前記区間に前記端区間を加えた区間を自装置に割り当てる他の情報処理装置に送信する情報転送ステップと、
前記情報転送ステップにおいて送信した端区間以外の少なくとも１つの区間を自装置に割り当てる処理対象情報格納ステップと、を実行させる情報処理プログラム。
（付記１８）
属性名と属性値とを用いて、少なくとも２以上の属性名について予め定められた順序関係に基づいて生成される大小比較可能な形式であるキーの範囲が互いに隣接するように複数に分割された各区間のうちの少なくともひとつ以上の区間である自区間を記憶する自区間記億手段を備える情報処理装置が、属性名と属性値とから生成されるキーが前記自区間に含まれるか否かを判定する情報処理方法。
（付記１９）
属性名と属性値とを含む情報であるイベント情報を受信し、前記属性名のうち、受信した前記イベント情報に含まれる頻度が所定値以上の属性名が存在する場合、前記自区間の分割された区間であって下限または上限を含む区間である端区間を、前記端区間に隣接する区間を記憶する他の情報処理装置へ送信し、他の情報処理装置から自区間に隣接する区間を受信し、受信した区間の一方もしくは両方を用いて前記自区間記憶手段を更新する付記１８に記載の情報処理方法。
（付記２０）
前記イベント情報を受信した場合に、前記イベント情報に含まれる属性名と属性値とに基づいて、大小比較可能な形式であるキーを生成し、生成された前記キーが前記自区間に含まれる場合には、前記イベント情報を前記第一の処理対象とし、含まれない場合には、前記イベント情報と前記イベント情報から生成された前記キーとを、他の情報処理装置に送信し、他の情報処理装置から前記端区間を受信した場合に、前記上限または下限が前記自区間の上限または下限と一致しない場合には前記端区間を他の情報処理装置に送信し、前記受信した区間の上限または下限が前記自区間の上限または下限と一致する場合には前記自区間に前記端区間を加えた区間を前記自区間記憶手段に記憶する付記１９に記載の情報処理方法。
（付記２１）
前記属性名と前記属性値の取り得る値の範囲とを含む情報であるサブスクリプション情報を受信した場合に、前記属性名及び前記属性値のいずれか１つの属性名とそれに対応する属性値とから登録キーを生成し、前記登録キーが前記自区間に含まれる場合に、前記サブスクリプション情報に含まれる前記属性名及び前記属性値の取り得る値の範囲から生成されるキー範囲をイベント条件として保持し、前記キーが前記自区間に含まれる場合に前記イベント条件を検索する前記第一の処理を実行し、前記イベント条件に前記キーが含まれる場合に前記イベント情報を第二の処理対象とする付記２０に記載の情報処理プログラム。
（付記２２）
前記属性名のうち、受信した前記イベント情報または前記サブスクリプション情報に含まれる頻度が所定値以上の属性名が存在する場合、前記自区間を３つの区間に分割し、分割された区間のうち下限を含む第１の区間と、上限を含む第２の区間を他の情報処理装置に送信し、送信していない区間を自装置に割り当てる付記２０乃至２１のいずれかに記載の情報処理方法。
（付記２３）
前記属性名のうち、受信した前記イベント情報または前記サブスクリプション情報に含まれる頻度が所定値以上の属性名が存在する場合、前記自区間を２つの区間に分割し、分割された区間のうち下限または上限を含む一方の区間を他の情報処理装置に送信し、送信していない他方の区間を自装置に割り当てる付記２０乃至２１のいずれかに記載の情報処理方法。
（付記２４）
前記自区間記憶手段は、自区間の上限及び下限を記憶し、前記自区間の上限の生成に用いられた属性名と下限の生成に用いられた属性名との順序関係が前記予め定められた順序関係と一致しない場合、前記生成されるキーが前記下限と比較して小さい又は前記上限と比較して大きい場合に前記生成されるキーが自区間に含まれると判定する、付記１８乃至２３のいずれかに記載の情報処理方法。
（付記２５）
属性名と属性値とに基づいて生成される大小比較可能な形式であるキーの値の範囲が複数区間に分割された各区間のうち、自装置に割り当てられた区間（自区間）以外の各区間を割り当てられた他の情報処理装置と接続された情報処理装置が、前記属性名と前記属性値とを含む情報であるイベント情報を受信した場合、該イベント情報に含まれる前記属性名と前記属性値とから生成される前記キーが前記自区間に含まれる場合に前記イベント情報を第一の処理対象とし、前記属性名のうち、受信した前記イベント情報に含まれる頻度が所定値以上の属性名が存在する場合、前記自区間を２以上の区間に分割し、分割された区間のうち下限または上限を含む区間（端区間）を、前記端区間に隣接する区間を割り当てられ前記端区間を受信すると前記区間に前記端区間を加えた区間を自装置に割り当てる他の情報処理装置に送信し、前記情報転送手段が送信した端区間以外の少なくとも１つの区間を自装置に割り当てる情報処理装置の制御方法。
（付記２６）
付記１から９のいずれかに記載の情報処理装置と、
前記自装置に割り当てられた区間以外の各区間を割り当てられた他の情報処理装置と、
を接続してなる情報処理システム。
実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解しうる様々な変更をすることができる。
この出願は、２０１０年１１月２日に出願された日本出願特願２０１０−２４５７６６を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【０００９】
５    情報処理装置
１１  サブスクリプション転送情報生成部
１２  イベント転送情報生成部
１３  メッセージ判定部
１４  サブスクリプション配置制御部
１５  サブスクリプション管理部
１６  イベント条件合致判定部
１７  メッセージ転送部
５１  キー情報生成部
５２  処理対象判定部
５３  処理対象情報格納部
５４  情報転送部
【図１】
2012060465.tif 000003
【図２】
2012060465.tif 000004
【図３】
2012060465.tif 000005
【図４】
2012060465.tif 000006
【図５】
2012060465.tif 000007
【図６】
2012060465.tif 000008
【図７】
2012060465.tif 000009
【図８】
2012060465.tif 000010
【図９】
2012060465.tif 000011
【図１０】
2012060465.tif 000012
【図１１】
2012060465.tif 000013
【図１２】
2012060465.tif 000014
【図１３】
2012060465.tif 000015
【図１４】
2012060465.tif 000016
【図１５】
2012060465.tif 000017
【図１６】
2012060465.tif 000018
【図１７】
2012060465.tif 000019
【図１８】
2012060465.tif 000020
【図１９】
2012060465.tif 000021
【図２０】
2012060465.tif 000022
【図２１】
2012060465.tif 000023
【図２２】
2012060465.tif 000024
【図２３】
2012060465.tif 000025
【図２４】
2012060465.tif 000026
【図２５】
2012060465.tif 000027
【国際調査報告】
2012060465.tif 000028
2012060465.tif 000029