(57)【要約】本発明は、大量のクエリを処理するときに冗長なクエリ処理を低減する。  情報処理装置は、ある値の範囲を特定するクエリを受け取り、クエリに含まれる値をそれぞれ示すキーを生成し、所定のキーの集合であるキー範囲を少なくとも一つ含むキー範囲群を生成し、各装置が管理すべきキーの境界を示すキーを記憶し、キー範囲群を受け取り、受け取ったキー範囲群に含まれるキー範囲毎に、キー範囲に含まれる所定のキーが示す値と記憶する各キーがそれぞれ示す値との大小関係に基づいて一のキーである宛先キーを特定し、キー範囲に含まれるキーを、特定した宛先キーの値に基づいて識別される装置のノード識別子に関連付けられるキーの集合であるキー範囲グループに追加し、各キー範囲グループを、各キー範囲グループに関連付けられているノード識別子で識別される装置へそれぞれ転送する。
2012102102.tif 000002
【特許請求の範囲】
【請求項１】
ある値の範囲を特定するクエリを受け取り、当該クエリに含まれる値をそれぞれ示すキーを生成し、所定のキーの集合であるキー範囲を少なくとも一つ含むキー範囲群を生成するキー範囲生成手段と、
各装置が管理すべきキーの境界を示すキーを記憶する経路管理手段と、
キー範囲群を受け取り、当該キー範囲群に含まれるキー範囲毎に、
キー範囲に含まれる所定のキーが示す値と前記経路管理手段が記憶する各キーがそれぞれ示す値との大小関係に基づいて一のキーである宛先キーを特定し、
当該キー範囲に含まれるキーを、前記宛先キーの値に基づいて識別される装置のノード識別子に関連付けられるキーの集合であるキー範囲グループに追加する、クエリ転送制御手段と、
を備え、
前記クエリ転送制御手段は、各キー範囲グループを、当該各キー範囲グループに関連付けられているノード識別子で識別される装置へそれぞれ転送する、情報処理装置。
【請求項２】
請求項１に記載の情報処理装置であって、
ノード識別子とキーとを対応付けて記憶する最小割当キー保持手段を備え、
前記クエリ転送制御手段は、受け取ったキー範囲群に含まれるキー範囲毎に、
前記宛先キーに基づいて識別される装置のノード識別子に対応付けられている一のキーを前記最小割当キー保持手段から読み出し、
当該キー範囲に含まれるキーのうち前記一のキーが示す値と前記所定のキーが示す値との間の値を示すキーを、前記ノード識別子に関連付けられる一の集合であるキー範囲グループに追加する、情報処理装置。
【請求項３】
請求項２に記載の情報処理装置であって、
前記所定のキーは当該所定のキーを含むキー範囲に含まれるキーの中で最大値を示すキーである、情報処理装置。
【請求項４】
請求項３に記載の情報処理装置であって、
前記最小割当キー保持手段は、ノード識別子と当該ノード識別子で識別される装置が管理すべきキーの中で最小値を示すキーである最小割当キーとを対応付けて記憶し、
前記クエリ転送制御手段は、受け取ったキー範囲群に含まれるキー範囲毎に、
前記キー範囲に含まれるキーのうち前記最小割当キーの値以上であり、前記所定のキーが示す値以下の値を示すキーを、前記ノード識別子に関連付けられる一の集合であるキー範囲グループに追加する、情報処理装置。
【請求項５】
請求項４に記載の情報処理装置であって、
前記クエリ転送制御手段は、受け取ったキー範囲群に含まれるキー範囲毎に、前記キー範囲に含まれるキーであって、前記最小割当キーの値未満、または、前記所定のキーが示す値を超える値を示すキーを新たなキー範囲として特定する、情報処理装置。
【請求項６】
請求項１ないし５のいずれか１項に記載の情報処理装置であって、
前記経路管理手段が記憶するキーは、対応する装置のノード識別子である、情報処理装置。
【請求項７】
請求項１ないし６のいずれか１項に記載の情報処理装置であって、
あるキーの集合を示す割当キー範囲を記憶する割当キー範囲記憶手段と、
クエリを処理するクエリ処理手段と、を備え、
前記クエリ転送制御手段は、受け取ったキー範囲群に含まれるキー範囲毎に、
キー範囲を、前記割当キー範囲に重複するキーを含む第一のキー範囲と重複しないキーを含む第二のキー範囲とに分割し、前記第一のキー範囲を削除し、
前記クエリ処理手段は、前記クエリ転送制御手段が第一のキー範囲を削除した際にクエリを処理する、情報処理装置。
【請求項８】
少なくとも一つの情報処理装置を備え、
当該情報処理装置は、
ある値の範囲を特定するクエリを受け取り、当該クエリに含まれる値をそれぞれ示すキーを生成し、所定のキーの集合であるキー範囲を少なくとも一つ含むキー範囲群を生成するキー範囲生成手段と、
各情報処理装置が管理すべきキーの境界を示すキーを記憶する経路管理手段と、
キー範囲群を受け取り、当該キー範囲群に含まれるキー範囲毎に、
キー範囲に含まれる所定のキーが示す値と前記経路管理手段が記憶する各キーがそれぞれ示す値との大小関係に基づいて一のキーである宛先キーを特定し、
当該キー範囲に含まれるキーを、前記宛先キーの値に基づいて識別される情報処理装置のノード識別子に関連付けられるキーの集合であるキー範囲グループに追加する、クエリ転送制御手段と、
を備え、
前記クエリ転送制御手段は、各キー範囲グループを、当該各キー範囲グループに関連付けられているノード識別子で識別される情報処理装置へそれぞれ転送する、情報処理システム。
【請求項９】
ある値の範囲を特定するクエリを受け取り、当該クエリに含まれる値をそれぞれ示すキーを生成し、所定のキーの集合であるキー範囲を少なくとも一つ含むキー範囲群を生成し、
各装置が管理すべきキーの境界を示すキーを経路管理手段に記憶し、
キー範囲群を受け取り、当該キー範囲群に含まれるキー範囲毎に、
キー範囲に含まれる所定のキーが示す値と前記経路管理手段に記憶される各キーがそれぞれ示す値との大小関係に基づいて一のキーである宛先キーを特定し、
当該キー範囲に含まれるキーを、前記宛先キーの値に基づいて識別される装置のノード識別子に関連付けられるキーの集合であるキー範囲グループに追加し、
各キー範囲グループを、当該各キー範囲グループに関連付けられているノード識別子で識別される装置へそれぞれ転送する、情報処理方法。
【請求項１０】
コンピュータに、
ある値の範囲を特定するクエリを受け取り、当該クエリに含まれる値をそれぞれ示すキーを生成し、所定のキーの集合であるキー範囲を少なくとも一つ含むキー範囲群を生成する処理と、
各装置が管理すべきキーの境界を示すキーを経路管理手段に記憶する処理と、
キー範囲群を受け取り、当該キー範囲群に含まれるキー範囲毎に、
キー範囲に含まれる所定のキーが示す値と前記経路管理手段に記憶される各キーがそれぞれ示す値との大小関係に基づいて一のキーである宛先キーを特定する処理と、
当該キー範囲に含まれるキーを、前記宛先キーの値に基づいて識別される装置のノード識別子に関連付けられるキーの集合であるキー範囲グループに追加する処理と、
各キー範囲グループを、当該各キー範囲グループに関連付けられているノード識別子で識別される装置へそれぞれ転送する処理と、を実行させるための情報処理プログラムを格納する記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、構造化Ｐ２Ｐ（Ｐｅｅｒ−ｔｏ−Ｐｅｅｒ）におけるクエリの転送方法に関する。
【背景技術】
【０００２】
構造化Ｐ２Ｐ（Ｐｅｅｒ−ｔｏ−Ｐｅｅｒ）では、システムを構成するノードは、外部システムから入力されるクエリを分担して処理する。ノードは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）やメモリから構成される装置のメモリ上に配備されるプログラムである。該プログラムをＣＰＵが読み込んで実行することで、このＣＰＵを備えるコンピュータは、データやクエリを転送したり、メモリ上に保持したりするノードとして機能する。クエリからハッシュ関数などによって生成される値（キー）によって、該クエリが到達するべきノードが決定される。構造化Ｐ２Ｐではキーがとりうる値の空間であるキー空間が定義され、各ノードにキー空間の一部が範囲（キー範囲）としてそれぞれ割り当てられる。ノードに割り当てられるキーは、該ノードの割当キーと呼ばれ、割り当てられるキーの範囲は割当キー範囲と呼ばれる。割当キー範囲のうち、最小の値を示すキーは最小割当キーと呼ばれ、割当キー範囲のうち、最大の値を示すキーは最大割当キーと呼ばれる。
外部システムから入力されたクエリは、０以上のノードを経由して、該クエリから生成したキーが割り当てられたノードに送信される。クエリから複数のキーが生成される可能性があり、その場合、各キーが割り当てられたノードの全てに該クエリが送信される。経由されるノードの特定は、ルーティングプロトコルに依存する。あるキーが割り当てられたノードにクエリが送信されるとき、該キーは、該ノードの宛先キーと呼ばれる。
外部システムからデータが入力されると、ノードは、該データからキーを生成し、生成したキーが割り当てられたノードへ、データを転送する。よって、同じキーが生成されるデータとクエリとが、そのキーが割り当てられた同一のノードに送信される。各ノードがデータとクエリとの完全一致を判定する場合には、データを入力としてハッシュ関数により得られる値をキーとし、クエリで指定されるデータを入力としてハッシュ関数により得られる値をキーとする構成であればよい。これにより、完全一致するデータとクエリとが同一のノードに到達することとなる。
外部システムから入力されるクエリを、そのクエリを処理すべきノードにルーティングする方法が開示されている（例えば非特許文献１参照）。
非特許文献１に記載された技術は、例えば以下のように動作する。Ｐ２Ｐシステムの各ノードは、多次元の属性のそれぞれの値を示す属性値を、空間充填曲線を使って一次元のデータを示すキーにマッピングする。そしてクエリが入力されると、各ノードは、該クエリからある値を示すキーの集合であるキー範囲を生成する。次に、ノードは、該クエリが各キー範囲の最小キーが割り当てられたノードに送信されるように、該クエリの転送先のノードを決定する。そして該ノードは、その転送先のノードに該クエリを送信する。クエリは、０以上のノードを経由して、該キーが割り当てられたノードに送信される。クエリの転送先のノードは、クエリを受信し、受信したクエリを処理する。その処理の際、該ノードに割り当てられたキー範囲の最大値よりもクエリのキー範囲の最大値の方が大きい場合、該ノードはサクセッサ（ｓｕｃｃｅｓｓｏｒ）に受信したクエリを転送する。ノードのサクセッサとは、該ノードの割当キーが示すそれぞれの値の最大値に一を加えた値を示すキーが割り当てられたノードである。ノードがそのサクセッサにクエリを転送する処理は、クエリから生成されたキー範囲の最大値が該ノードに割り当てられたキー範囲の最大値よりも小さくなるまで繰り返される。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Ｐｒａｓａｎｎａ  Ｇａｎｅｓａｎ  ｅｔ  ａｌ．，“Ｏｎｅ  ｔｏｒｕｓ  ｔｏ  ｒｕｌｅ  ｔｈｅｍ  ａｌｌ：Ｍｕｌｔｉ−ｄｉｍｅｎｓｉｏｎａｌ  ｑｕｅｒｉｅｓ  ｉｎ  ｐ２ｐ  ｓｙｓｔｅｍｓ，”Ｉｎ  ＷｅｂＤＢ  ’０４：Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  ７ｔｈＩｎｔｅｒｎａｔｉｏｎａｌ  Ｗｏｒｋｓｈｏｐ  ｏｎ  ｔｈｅ  Ｗｅｂ  ａｎｄ  Ｄａｔａｂａｓｅｓ，ｐａｇｅｓ  １９−２４，Ｎｅｗ  Ｙｏｒｋ，ＮＹ，ＵＳＡ，２００４．ＡＣＭ  Ｐｒｅｓｓ．
【非特許文献２】Ｃｈｒｉｓｔｉａｎ  Ｂｏｈｍ  ｅｔ  ａｌ．，“ＸＺ−Ｏｒｄｅｒｉｎｇ：Ａ  Ｓｐａｃｅ−Ｆｉｌｌｉｎｇ  Ｃｕｒｖｅｆｏｒ  Ｏｂｊｅｃｔｓ  ｗｉｔｈ  Ｓｐａｔｉａｌ  Ｅｘｔｅｎｓｉｏｎ，”Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  ６ｔｈ  ＩｎｔｅｒｎａｔｉｏｎａｌＳｙｍｐｏｓｉｕｍ  ｏｎ  Ａｄｖａｎｃｅｓ  ｉｎ  Ｓｐａｔｉａｌ  Ｄａｔａｂａｓｅｓ，ｐａｇｅｓ  ７５−９０，Ｊｕｌｙ  ２０−２３，１９９９．
【非特許文献３】Ｉｏｎ  Ｓｔｏｉｃａ  ｅｔ  ａｌ．，“Ｃｈｏｒｄ：Ａ  Ｓｃａｌａｂｌｅ  Ｐｅｅｒ−ｔｏ−ｐｅｅｒ  Ｌｏｏｋｕｐ  Ｓｅｒｖｉｃｅ  ｆｏｒ  Ｉｎｔｅｒｎｅｔ  Ａｐｐｌｉｃａｔｉｏｎｓ，”Ｉｎ  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  ２００１  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎＡｐｐｌｉｃａｔｉｏｎｓ，Ｔｅｃｈｎｏｌｏｇｉｅｓ，Ａｒｃｈｉｔｅｃｔｕｒｅｓ，ａｎｄ  Ｐｒｏｔｏｃｏｌｓ  Ｆｏｒ  Ｃｏｍｐｕｔｅｒ  Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ．ＳＩＧＣＯＭＭ  ’０１．ＡＣＭ，Ｎｅｗ  Ｙｏｒｋ，ＮＹ，１４９−１６０．
【発明の概要】
【発明が解決しようとする課題】
【０００４】
非特許文献１に記載された技術は、クエリが中継されるノードの割当キー範囲を考慮しないでクエリをいくつかのキー範囲に分割し、各キー範囲を送信する。よって、クエリが中継されるノードにおいて同一のクエリが同じノードを複数回経由する可能性がある。
本発明の目的の一例は、大量のクエリを転送するときに冗長なクエリ転送を低減する情報処理装置、情報処理システム、情報処理方法および情報処理プログラムを提供することである。
【課題を解決するための手段】
【０００５】
本発明の一態様における情報処理装置は、ある値の範囲を特定するクエリを受け取り、当該クエリに含まれる値をそれぞれ示すキーを生成し、所定のキーの集合であるキー範囲を少なくとも一つ含むキー範囲群を生成するキー範囲生成部と、各装置が管理すべきキーの境界を示すキーを記憶する経路管理部と、キー範囲群を受け取り、当該キー範囲群に含まれるキー範囲毎に、キー範囲に含まれる所定のキーが示す値と前記経路管理部が記憶する各キーがそれぞれ示す値との大小関係に基づいて一のキーである宛先キーを特定し、当該キー範囲に含まれるキーを、前記宛先キーの値に基づいて識別される装置のノード識別子に関連付けられるキーの集合であるキー範囲グループに追加する、クエリ転送制御部と、を備え、前記クエリ転送制御部は、各キー範囲グループを、当該各キー範囲グループに関連付けられているノード識別子で識別される装置へそれぞれ転送する。
本発明の一態様における情報処理システムは、少なくとも一つの情報処理装置を備え、当該情報処理装置は、ある値の範囲を特定するクエリを受け取り、当該クエリに含まれる値をそれぞれ示すキーを生成し、所定のキーの集合であるキー範囲を少なくとも一つ含むキー範囲群を生成するキー範囲生成部と、各情報処理装置が管理すべきキーの境界を示すキーを記憶する経路管理部と、キー範囲群を受け取り、当該キー範囲群に含まれるキー範囲毎に、キー範囲に含まれる所定のキーが示す値と前記経路管理部が記憶する各キーがそれぞれ示す値との大小関係に基づいて一のキーである宛先キーを特定し、当該キー範囲に含まれるキーを、前記宛先キーの値に基づいて識別される情報処理装置のノード識別子に関連付けられるキーの集合であるキー範囲グループに追加する、クエリ転送制御部と、を備え、前記クエリ転送制御部は、各キー範囲グループを、当該各キー範囲グループに関連付けられているノード識別子で識別される情報処理装置へそれぞれ転送する。
本発明の一態様における情報処理方法は、ある値の範囲を特定するクエリを受け取り、当該クエリに含まれる値をそれぞれ示すキーを生成し、所定のキーの集合であるキー範囲を少なくとも一つ含むキー範囲群を生成し、各装置が管理すべきキーの境界を示すキーを経路管理部に記憶し、キー範囲群を受け取り、当該キー範囲群に含まれるキー範囲毎に、キー範囲に含まれる所定のキーが示す値と前記経路管理部に記憶される各キーがそれぞれ示す値との大小関係に基づいて一のキーである宛先キーを特定し、当該キー範囲に含まれるキーを、前記宛先キーの値に基づいて識別される装置のノード識別子に関連付けられるキーの集合であるキー範囲グループに追加し、各キー範囲グループを、当該各キー範囲グループに関連付けられているノード識別子で識別される装置へそれぞれ転送する。
本発明の一態様における情報処理プログラムは、コンピュータに、ある値の範囲を特定するクエリを受け取り、当該クエリに含まれる値をそれぞれ示すキーを生成し、所定のキーの集合であるキー範囲を少なくとも一つ含むキー範囲群を生成する処理と、各装置が管理すべきキーの境界を示すキーを経路管理部に記憶する処理と、キー範囲群を受け取り、当該キー範囲群に含まれるキー範囲毎に、キー範囲に含まれる所定のキーが示す値と前記経路管理部に記憶される各キーがそれぞれ示す値との大小関係に基づいて一のキーである宛先キーを特定する処理と、当該キー範囲に含まれるキーを、前記宛先キーの値に基づいて識別される装置のノード識別子に関連付けられるキーの集合であるキー範囲グループに追加する処理と、各キー範囲グループを、当該各キー範囲グループに関連付けられているノード識別子で識別される装置へそれぞれ転送する処理と、を実行させる。
本発明の一態様における記録媒体は、コンピュータに、ある値の範囲を特定するクエリを受け取り、当該クエリに含まれる値をそれぞれ示すキーを生成し、所定のキーの集合であるキー範囲を少なくとも一つ含むキー範囲群を生成する処理と、各装置が管理すべきキーの境界を示すキーを経路管理部に記憶する処理と、キー範囲群を受け取り、当該キー範囲群に含まれるキー範囲毎に、キー範囲に含まれる所定のキーが示す値と前記経路管理部に記憶される各キーがそれぞれ示す値との大小関係に基づいて一のキーである宛先キーを特定する処理と、当該キー範囲に含まれるキーを、前記宛先キーの値に基づいて識別される装置のノード識別子に関連付けられるキーの集合であるキー範囲グループに追加する処理と、各キー範囲グループを、当該各キー範囲グループに関連付けられているノード識別子で識別される装置へそれぞれ転送する処理と、を実行させるための情報処理プログラムを格納する。
【発明の効果】
【０００６】
本発明の効果の一例は、大量のクエリを処理するときに冗長なクエリ処理を低減することができることである。
【図面の簡単な説明】
【０００７】
【図１】図１は、本発明の第一の実施の形態における情報処理システムの構成を示すブロック図である。
【図２】図２は、二次元の属性を示す例である。
【図３】図３は、情報処理システムが、空間充填曲線を使って、多次元の属性を一次元の情報を示すキーにマッピングする手順の一例を示す図である。
【図４】図４は、本発明の第一の実施の形態におけるノードの構成を示すブロック図である。
【図５】図５は、経路管理部が記憶する情報の一例である。
【図６】図６は、最小割当キー保持部が保持する最小割当キー表の例を示す図である
【図７】図７は、ノードが、自ノードの割当キー範囲を記憶する割当キー範囲記憶部１０６を備える構成を示すブロック図である。
【図８】図８は、クエリ転送制御部が生成するメッセージの例を示す図である。
【図９】図９は、ノードが備えるプログラム記憶装置を示すブロック図である。
【図１０】図１０は、本発明の第一の実施の形態におけるノードのキー範囲生成部の動作の概要の一例を示すフローチャートである。
【図１１】図１１は、本発明の第一の実施の形態におけるノードのクエリ転送制御部の動作の概要の一例を示すフローチャートである。
【図１２】図１２は、本発明の第一の実施の形態におけるノードのクエリ転送制御部による対の生成処理の動作の概要の一例を示すフローチャートである。
【図１３】図１３は、第一の実施の形態におけるノードの動作の概要を示す具体例である。
【図１４】図１４は、本発明の第二の実施の形態におけるノードの構成を示すブロック図である。
【図１５】図１５は、ノードが備えるプログラム記憶装置を示すブロック図である。
【発明を実施するための形態】
【０００８】
本発明を実施するための形態について図面を参照して詳細に説明する。なお、各図面および明細書記載の各実施の形態において、同様の機能を備える構成要素には同様の符号が与えられている。
［第一の実施の形態］
図１は、本発明の第一の実施の形態における情報処理システム１０の構成を示すブロック図である。
図１を参照すると、本発明の第一の実施の形態における情報処理システム１０は、複数のノード１００ａないしノード１００ｒを備える。ここで、ノード１００ａないしノード１００ｒは、以下代表してノード１００とも記載される。各ノード１００は、少なくとも一つの他のノード１００と通信可能に接続されている。
情報処理システム１０は、空間充填曲線を使って多次元の属性を、ある値を示すキーにマッピングする。図２は、二次元の属性を示す例である。二次元の属性のそれぞれの属性値の組み合わせが、あるキー８０３にマッピングされる。例えば、図２において、二次元の属性からなる空間である属性空間８０４の少なくとも一部を示すクエリエリア８０５に含まれるある属性値の組み合わせ（ｘａ，ｙａ）が、あるキー８０３にマッピングされている。
図１において、情報処理システム１０は、ノード１００ａからノード１００ｒまでを備える。そして、それぞれのノード１００に対して一次元のキー空間８０１の一部のキー範囲８０２が割り当てられている。
本明細書において、データは、複数の属性を含んでもよい。例えば、データは、位置情報として「緯度」属性と「経度」属性とを含んでもよい。属性は、属性の種別を識別する情報である属性名と、属性名に対する値（属性値）を含む。例えば、「緯度」属性は、属性名「緯度」と、属性値「北緯３５度４０分」とをそれぞれ含んでもよい。
本明細書において、クエリは、属性値の範囲を指定する情報であってもよい。例えば、クエリは、北緯３５度３０分から北緯３５度５０分まで、東経１３９度４０分から東経１３９度５０分までといったように各属性値の範囲を指定する情報であってもよい。「北緯３５度４０分、東経１３９度４６分」というデータは、前述のクエリで指定される範囲に含まれる。よって該データは、前述のクエリ「北緯３５度３０分から北緯３５度５０分まで、東経１３９度４０分から東経１３９度５０分まで」に合致する。
次に、情報処理システム１０が、空間充填曲線を使って、多次元の属性を一次元の情報を示すキーにマッピングする手順について説明する。
図３は、情報処理システム１０が、空間充填曲線を使って、多次元の属性を一次元の情報を示すキーにマッピングする手順の一例を示す図である。
本例は、属性ｘと属性ｙとを含む二次元の属性が一次元の情報を示すキーにマッピングされる例である。まず、属性ｘの属性値範囲と属性ｙの属性値範囲とから、属性ｘサブキー範囲［０１１，１０１］と属性ｙサブキー範囲［００，０１］が生成される。ここで、サブキーとは、キーを生成するために使用される値である。図３の例では、属性ｘのサブキーは、３ビットである。また属性ｙのサブキーは、２ビットである。本例において、属性ｘサブキー範囲に含まれるサブキー集合｛０１１，１００，１０１｝と属性ｙサブキー範囲に含まれるサブキー集合｛００，０１｝の全組み合わせについて、各ビットを交互に並べたビット列がキーである。例えば、「０１１」と「００」の各ビットが交互に並べられると、「００１０１」が生成される。以上の処理により、属性ｘの属性値範囲と属性ｙの属性値範囲から、２×３個（＝６個）のキーが生成される。本明細書では、サブキーの組み合わせである、「０１１」と「００」と、からキーを生成することを、「（０１１，００）からキーを生成する」と表記する。上記のキー生成方法は例示であって、キー生成方法は、サブキー集合に含まれるビットの組み合わせに基づいてキーが生成される方法であればよい。
図４は、本発明の第一の実施の形態におけるノード１００の構成を示すブロック図である。
図４を参照すると、本発明の第一の実施の形態におけるノード１００は、キー範囲生成部１０１と、クエリ転送制御部１０２と、経路管理部１０３と、クエリ処理部１０４と、最小割当キー保持部１０５と、を備える。
キー範囲生成部１０１は、クエリを図示しない外部システムから受信する。そしてキー範囲生成部１０１は、該クエリから一または複数のキー範囲を含むキー範囲群のデータを生成する。キー範囲とは、キーがとりうる値の空間であるキー空間の一部の範囲である。あるキー範囲に含まれる各キーの値は、連続する値を示す。
キー範囲生成部１０１がクエリからキー範囲群を生成する方法として、非特許文献２が開示する手段が挙げられる。例えば、クエリとして、緯度の範囲と経度の範囲で表されるエリアが指定される場合、非特許文献２が開示する方法では、以下のように処理が行われる。まず、キー範囲生成部１０１は、緯度と経度で表すことができる全エリアに対して、そのエリアがクエリに完全に包含されるかどうかを検証する。包含されていなければ、キー範囲生成部１０１は、そのエリアを四等分する。四等分された各エリアに対して、一つのエリアがクエリとオーバーラップする場合に、キー範囲生成部１０１は、そのエリアをさらに四等分する。キー範囲生成部１０１は、以上のような処理を再帰的に行う。以上の処理が完了すると、キー範囲生成部１０１は、クエリに完全に包含されるエリアの集合と、クエリとオーバーラップしないエリアの集合と、を求めることができる。キー範囲生成部１０１は、クエリに完全に包含されるエリアに基づいて一つのキー範囲を生成することができる。非特許文献２が開示する手段は、分割されたエリアから連続したキーが生成されるように、複数の属性の属性値が空間充填曲線に基づいて一次元のキーに変換されていることが前提となる。
キー範囲生成部１０１は、生成した各キー範囲について、キー範囲を、自ノード１００の割当キー範囲とオーバーラップするキー範囲と、オーバーラップしないキー範囲とに分割する。例えばキー範囲生成部１０１は、自ノード１００の割当キー範囲の最小割当キーｋに基づいて、ｋ以上の値を示すキーのキー範囲と、ｋ未満の値を示すキーのキー範囲とに分割する。つまり、キー範囲生成部１０１は、キー範囲［ｋｍｉｎ，ｋｍａｘ］が自ノード１００に割り当てられたキー範囲（割当キー範囲）の最小割当キーｋとそのｋより一小さい値を示すキーｋ−１とを含む場合に、以下の処理を行う。すなわちキー範囲生成部１０１は、キー範囲［ｋｍｉｎ，ｋｍａｘ］を、二つのキー範囲［ｋｍｉｎ，ｋ−１］と［ｋ，ｋｍａｘ］とに分割する。
キー範囲生成部１０１は、自ノード１００が受信したクエリと、生成したキー範囲を含むキー範囲群と、をクエリ転送制御部１０２に渡す。
クエリ処理部１０４は、後述のクエリ転送制御部１０２からクエリを受け取り、受け取ったクエリを処理する。クエリ処理部１０４が行う処理は、情報処理システム１０の応用方法によって異なる。例えば、情報処理システム１０は、Ｐｕｂｌｉｓｈ／Ｓｕｂｓｃｒｉｂｅ型のシステムとして利用されうる。
Ｐｕｂｌｉｓｈ／Ｓｕｂｓｃｒｉｂｅ型のシステムでは、アプリケーションが、あらかじめデータの条件（データの条件とは、これまでの説明のクエリに相当する）をシステムに登録する。データの条件に合致するイベントが発生すると、そのイベントは、データの条件を登録したアプリケーションに通知される。イベントがシステムに入力されることは、Ｐｕｂｌｉｓｈと呼ばれる。またデータの条件がシステムに登録されることは、Ｓｕｂｓｃｒｉｂｅと呼ばれる。
本実施の形態において、例えばあらかじめ、ユーザがデータの条件（データ条件）を情報処理システム１０に登録しておく。そしてデータ条件にマッチするデータが情報処理システム１０に入力されたら、該データを、データ条件を登録した外部システムに通知する。この場合、データ条件とは、クエリに相当する。よってクエリ処理部１０４は、クエリをメモリ上に記憶し、データが入力されたときにクエリとデータとの合致判定をする機能手段を備える。その後、データがクエリ処理部１０４に入力されたら、クエリ処理部１０４は、メモリ上に保持しているクエリとの合致判定を行う。クエリ処理部１０４は、合致したと判定した場合に、所定の通知先にその旨を通知する。
経路管理部１０３は、キー（宛先キー）に対して、該キーが割り当てられたノードに到達するために、次の転送先であるノードのアドレス（ノードアドレス）を算出する。例えば、経路管理部１０３は、Ｃｈｏｒｄ（例えば、非特許文献３参照）などのルーティングプロトコルに基づいて、ノードアドレスを算出する。Ｃｈｏｒｄは、宛先キーに最も近いキーが割り当てられたノードを次の転送先として特定するプロトコルである。
経路管理部１０３は、他のノード１００との経路を示す情報（例えば、Ｃｈｏｒｄであれば、Ｆｉｎｇｅｒ  ｔａｂｌｅに相当する）を記憶する。図５は、経路管理部１０３が記憶する情報の一例である。この情報はフィンガーテーブル８２５とも呼ばれる。図５において、「ｓｔａｒｔ」は、自ノード１００に対応付けられているキーが示す値に所定数だけ（例えば２ｉ、ただしｉは０以上の整数）加算した値を示すキーである。また、「ｉｎｔ．」は、「ｓｔａｒｔ」のキーに対応するキー範囲を示す情報である。例えばキーの値がｎであるキーに対応付けられているノードにおいて「ｓｔａｒｔ」は、ｎ＋２ｉ（ただしｉは０以上の整数）である。そしてこのキー「ｎ＋２ｉ」に対応付けられている「ｉｎｔ．」は、ｎ＋２ｉ≦ｋ＜２ｉ＋１を満たすキーｋの集合、すなわち、キーｋのキー範囲である。「ｓｕｃｃ．」は、ｉｎｔ．で示されている各キーに対応するノードのうちｓｔａｒｔに対応付けられているキーの値に最も近いキーに対応付けられている他のノード１００を示す識別子である。
キーはいずれかのノード１００を識別できる情報であってもよい。また、キーは、ノード１００を識別できる識別子、またはノードアドレスであってもよい。キーは、あるノードを識別できる識別子またはノードアドレスに一意に対応する情報であってもよい。
図５において、「ｉｎｔ．」は、「ｓｕｃｃ．」で識別されるノードに対応付けられるキーの集合を示す情報であってもよい。また、「ｓｕｃｃ．」に含まれるノードの識別子は、ノードのノードアドレスであってもよい。
各ノード１００は、この経路を示す情報を生成するために、自ノード１００のノードアドレスと自ノードに割り当てられているキーとを他のノード１００に通知する。経路管理部１０３は、通知される情報を元に他ノード１００との経路を示す情報を生成し、その情報を記憶する。
最小割当キー保持部１０５は、他のノード１００の最小割当キーを保持する。最小割当キー保持部１０５が保持する最小割当キー表の例が図６に示されている。図６に示される例は、ノード１００ｂが保持する最小割当キー表８０６、ノード１００ｊが保持する最小割当キー表８０７およびノード１００ｑが保持する最小割当キー表８０８、である。図６を参照すると、ノード１００ｂの最小割当キー保持部１０５は、ノードアドレスｃ、ｄ、ｆ、ｊに対して、それらのノードの最小割当キーが、それぞれ、ｋｃ−ｍｉｎ、ｋｄ−ｍｉｎ、ｋｆ−ｍｉｎ、ｋｊ−ｍｉｎであることを記憶している。
経路管理部１０３が他ノード１００との経路を示す情報を生成するときに、ノード１００がノードアドレスを別のノード１００に通知する処理を行う。該ノード１００の最小割当キーは、その通知メッセージに含まれてもよい。最小割当キー保持部１０５は、経路管理部１０３が受け取った通知メッセージに含まれるノードアドレスと、最小割当キーとを対応付けて記憶する。これによって、経路管理部１０３が他ノード１００との経路を示す情報を構築する際に、最小割当キー保持部１０５は、最小割当キー表を記憶することができる。
クエリ転送制御部１０２は、キー範囲生成部１０１、あるいは、他のノード１００のクエリ転送制御部１０２からクエリとキー範囲群を受信する。そして、クエリ転送制御部１０２は、自ノードの割当キー範囲が、キー範囲群のいずれかとオーバーラップするか否かを検証する。すなわち、クエリ転送制御部１０２は、キー範囲群に含まれるキーの中に自ノードの割当キー範囲にも含まれるキーがあるか否かを検証する。
自ノードの割当キー範囲は、クエリ転送制御部１０２に記憶されていてもよい。あるいは、図７に示されるように、ノード１００が、自ノードの割当キー範囲を記憶する割当キー範囲記憶部１０６を備えていてもよい。
クエリ転送制御部１０２は、自ノードの割当キー範囲が、キー範囲群のいずれかとオーバーラップすると判定した場合に、受信したクエリをクエリ処理部１０４に渡す。そしてクエリ転送制御部１０２は、キー範囲群から、割当キー範囲に完全に包含されるキー範囲を削除する。例えば、自ノードの割当キー範囲が［ｋ１，ｋ２］であり、キー範囲群のうちの一つのキー範囲が［ｋｍｉｎ，ｋｍａｘ］であると仮定する。このとき、例えばｋ１≦ｋｍｉｎ＜ｋｍａｘ≦ｋ２の場合が、『割当キー範囲に完全に包含されるキー範囲』の例に該当し、このキー範囲［ｋｍｉｎ，ｋｍａｘ］は削除される。
またクエリ転送制御部１０２は、キー範囲群のうち、自ノードの割当キー範囲とオーバーラップするキー範囲を二つのキー範囲に分割する。そしてクエリ転送制御部１０２は、分割したキー範囲のうち、オーバーラップする部分を削除する。例えば自ノードの割当キー範囲に含まれるキーの中で最大値を示すキーである最大割当キーがｋであると仮定する。そしてキー範囲［ｋｍｉｎ，ｋｍａｘ］について、ｋｍｉｎ＜ｋ≦ｋｍａｘなる関係が満たされるとき、クエリ転送制御部１０２は、キー範囲［ｋｍｉｎ，ｋｍａｘ］を二つのキー範囲［ｋｍｉｎ，ｋ］と［ｋ＋１，ｋｍａｘ］に分割する。またクエリ転送制御部１０２は、キー範囲［ｋｍｉｎ，ｋ］を削除する。
クエリ転送制御部１０２は、一以上のキー範囲を含む集合であるキー範囲グループとそのキー範囲グループの送付先であるノードのノードアドレスとを対応付けた対を生成する。クエリ転送制御部１０２は、キー範囲群を構成する各キー範囲［ｋｍｉｎ，ｋｍａｘ］について以降に示す処理を行う。
まずクエリ転送制御部１０２は、経路管理部１０３を参照し、ｋｍａｘに基づいて特定されるノードアドレス“ａｄｄｒ”を取得する。次にクエリ転送制御部１０２は、ノードアドレス“ａｄｄｒ”に対応付けられている最小割当キーｋを最小割当キー保持部１０５から読み出す。
そしてクエリ転送制御部１０２は、キー範囲［ｋｍｉｎ，ｋｍａｘ］のうち、読み出した最小割当キーｋが示す値以上であり、ｋｍａｘが示す値以下である値を示すキー範囲［ｋ，ｋｍａｘ］のキーを特定する。そしてクエリ転送制御部１０２は、この特定したキーをノードアドレス“ａｄｄｒ”に送信するキー範囲グループに追加する。そしてクエリ転送制御部１０２は、残りのキー範囲［ｋｍｉｎ，ｋ−１］を新たに［ｋｍｉｎ，ｋｍａｘ］とみなして前述の処理を繰り返し行う。
一方、クエリ転送制御部１０２は、読み出した最小割当キーｋが示す値よりもｋｍｉｎが示す値のほうが小さいと判定した場合に、キー範囲［ｋｍｉｎ，ｋｍａｘ］をノードアドレス“ａｄｄｒ”に送信するキー範囲グループに含まれると特定する。もし、“ａｄｄｒ”に対応するキー範囲グループがない場合、クエリ転送制御部１０２は、新たにキー範囲グループを生成し、そのキー範囲グループを“ａｄｄｒ”に送信するキー範囲グループと特定する。
クエリ転送制御部１０２は、特定されたキー範囲グループ毎に、各キー範囲グループに対応付けられているノードアドレス“ａｄｄｒ”で特定されるノード１００へ、そのキー範囲グループを送信する。具体的には、クエリ転送制御部１０２は、生成した対毎に図８に示す構造のメッセージを生成する。このメッセージ８０９は、クエリ８１０と、キー範囲グループに含まれる各キー範囲８１１と、各キー範囲の最小キー８１２と最大キー８１３とを含む。最小キー８１２は、そのキー範囲に含まれるキーの中で最小値を示すキーである。また、最大キー８１３は、そのキー範囲に含まれるキーの中で最大値を示すキーである。
キー範囲生成部１０１と、クエリ転送制御部１０２と、経路管理部１０３と、クエリ処理部１０４とは、例えば、プログラム（情報処理プログラム）によって動作するＣＰＵによって実現される。キー範囲生成部１０１と、クエリ転送制御部１０２と、経路管理部１０３と、クエリ処理部１０４とが、同一のＣＰＵによって実現されてもよい。この場合、プログラムは、例えば、ノード１００が備えるプログラム記憶装置１０７（図９参照）に記憶される。ＣＰＵ１０８は、そのプログラムを読み込み、そのプログラムにしたがって、キー範囲生成部１０１と、クエリ転送制御部１０２と、経路管理部１０３と、クエリ処理部１０４として動作すればよい。
また、前述のプログラムのコードを記録した記録媒体（または記憶媒体）が、ノード１００に供給され、ノード１００が記録媒体に格納されたプログラムのコードを読み出し実行してもよい。すなわち、本発明は、第一の実施の形態におけるノード１００が実行するためのソフトウェア（情報処理プログラム）を一時的に記憶するまたは非一時的に記憶する記録媒体１１０も含む。
最小割当キー保持部１０５は、例えば、ハードディスク１０９のような記憶装置によって実現される。
次に、本発明の第一の実施の形態におけるノード１００の動作の一例について説明する。図１０は、本発明の第一の実施の形態におけるノード１００のキー範囲生成部１０１の動作の概要の一例を示すフローチャートである。
キー範囲生成部１０１は、図示しない外部システムからクエリを受け取る（ステップＡ１）。そして、キー範囲生成部１０１は、入力されたクエリからキー範囲１、キー範囲２、およびキー範囲３を含むキー範囲群を生成する（ステップＡ２）。
キー範囲生成部１０１は、生成した各キー範囲について以下の処理を行う。あるキー範囲が［ｋｍｉｎ，ｋｍａｘ］であると仮定する。キー範囲［ｋｍｉｎ，ｋｍａｘ］が自ノード１００の割当キー範囲の最小割当キーｋと、このｋより一小さい値を示すキーｋ−１と、を含む場合、キー範囲生成部１０１は、以下の処理を実行する。すなわちキー範囲生成部１０１は、キー範囲［ｋｍｉｎ，ｋｍａｘ］をｋに基づいて二つに分割する（ステップＡ３）。具体的には、キー範囲生成部１０１は、キー範囲［ｋｍｉｎ，ｋｍａｘ］を二つのキー範囲［ｋｍｉｎ，ｋ−１］と［ｋ，ｋｍａｘ］に分割する。
キー範囲生成部１０１は、すべてのキー範囲について処理が行われたか否か判定する（ステップＡ４）。すべてのキー範囲について、処理が行われていない場合（ステップＡ４のＮｏ）、キー範囲生成部１０１の処理は、ステップＡ３に戻る。すべてのキー範囲について、処理が行われた場合（ステップＡ４のＹｅｓ）、キー範囲生成部１０１は次の処理を行う。すなわちキー範囲生成部１０１は、自ノード１００が受信したクエリと、生成したキー範囲群とをクエリ転送制御部１０２に渡す（ステップＡ５）。
図１１は、本発明の第一の実施の形態におけるノード１００のクエリ転送制御部１０２の動作の概要の一例を示すフローチャートである。
クエリ転送制御部１０２は、キー範囲生成部１０１、または他のノード１００のクエリ転送制御部１０２から少なくともクエリとキー範囲群とを含む情報を受け取る（ステップＢ１）。そしてクエリ転送制御部１０２は、受け取ったキー範囲群に含まれるいずれかのキー範囲が自ノード１００の割当キー範囲とオーバーラップするか否か検証する（ステップＢ２）。
クエリ転送制御部１０２は、受け取ったキー範囲群に含まれるいずれかのキー範囲が自ノード１００の割当キー範囲とオーバーラップすると判定した場合（ステップＢ２のＹｅｓ）、クエリをクエリ処理部１０４に渡す（ステップＢ３）。そして、クエリ転送制御部１０２は、受け取ったキー範囲群に含まれる各キー範囲から、自ノード１００の割当キー範囲に完全に包含されるキー範囲を削除する（ステップＢ４）。また、クエリ転送制御部１０２は、受け取ったキー範囲群に含まれる各キー範囲のうち、自ノード１００の割当キー範囲とオーバーラップするキー範囲［ｋｍｉｎ，ｋｍａｘ］を二つのキー範囲［ｋｍｉｎ，ｋ］と［ｋ＋１，ｋｍａｘ］に分割する。そして、クエリ転送制御部１０２は、キー範囲［ｋｍｉｎ，ｋ］を削除する（ステップＢ５）。ここで、ｋは自ノード１００の最大割当キーである。
クエリ転送制御部１０２は、ステップＢ５の処理後、またはステップＢ２において受け取ったキー範囲群に含まれるいずれかのキー範囲が自ノード１００の割当キー範囲とオーバーラップしないと判定した場合（ステップＢ２のＮｏ）、以下の処理を行う。すなわちクエリ転送制御部１０２は、キー範囲グループとノードアドレスとを含む０以上の対を生成する（ステップＢ６）。ステップＢ６におけるクエリ転送制御部１０２の処理は、後で説明される。クエリ転送制御部１０２は、生成した各対について、クエリと、対の一方であるキー範囲グループとに基づいて図８に示される構造のメッセージを生成する。そしてクエリ転送制御部１０２は、生成したメッセージを対のもう一方であるノードアドレスで特定されるノードに送信する（ステップＢ７）。
図１２は、本発明の第一の実施の形態におけるノード１００のクエリ転送制御部１０２による前述ステップＢ６における処理の動作の概要の一例を示すフローチャートである。
クエリ転送制御部１０２は、これまでのステップにより生成されている各キー範囲［ｋｍｉｎ，ｋｍａｘ］についてそれぞれ以下の処理を行う（ステップＢ６０１）。
クエリ転送制御部１０２は、キー範囲に含まれるキーの中で最大値を示すキーｋｍａｘを経路管理部１０３に渡し、経路管理部１０３からそのｋｍａｘに対応するノードアドレス“ａｄｄｒ”を受け取る（ステップＢ６０２）。
次に、クエリ転送制御部１０２は、ノードアドレス“ａｄｄｒ”に対応付けられている最小割当キーｋを最小割当キー保持部１０５から読み出す（ステップＢ６０３）。
クエリ転送制御部１０２は、ｋｍｉｎが示す値よりもｋが示す値が大きいか否か判定する（ステップＢ６０４）。クエリ転送制御部１０２は、ｋｍｉｎ＜ｋであると判定した場合（ステップＢ６０４のＹｅｓ）、キー範囲［ｋｍｉｎ，ｋｍａｘ］を二つのキー範囲［ｋｍｉｎ，ｋ−１］と［ｋ，ｋｍａｘ］に分割する（ステップＢ６０５）。
次に、クエリ転送制御部１０２は、キー範囲［ｋ，ｋｍａｘ］をノードアドレス“ａｄｄｒ”に対応するキー範囲グループに追加する。もし“ａｄｄｒ”に対応するキー範囲グループがない場合、クエリ転送制御部１０２は、新たにキー範囲グループを生成し、該キー範囲グループを“ａｄｄｒ”と関連付ける（ステップＢ６０６）。以降、クエリ転送制御部１０２は、キー範囲［ｋｍｉｎ，ｋ−１］を［ｋｍｉｎ，ｋｍａｘ］と見なす（ステップＢ６０７）。そして、クエリ転送制御部１０２の処理は、ステップＢ６０２へ移行する。
一方、クエリ転送制御部１０２は、ｋｍｉｎ＜ｋでないと判定した場合（ステップＢ６０４のＮｏ）、キー範囲［ｋｍｉｎ，ｋｍａｘ］をノードアドレス“ａｄｄｒ”に対応するキー範囲グループに追加する。もし“ａｄｄｒ”に対応するキー範囲グループがない場合、クエリ転送制御部１０２は、新たにキー範囲グループを生成し、該キー範囲グループを“ａｄｄｒ”と関連付ける（ステップＢ６０８）。
クエリ転送制御部１０２は、ステップＢ６０２−Ｂ６０８における処理をキー範囲毎に行う（ステップＢ６０９）。
図１３は、第一の実施の形態におけるノード１００ｂの動作の概要を示す具体例である。本例では、ノード１００ｂが、キー範囲１（８１４）、キー範囲２（８１５）およびキー範囲３（８１８）に対応するクエリのサブスクライブを受け、それぞれ転送を行う。
キー範囲１（８１４）は、［ｋ  １ｍｉｎ，ｋ  １ｍａｘ］と表される。そしてキー範囲１（８１４）は、ノード１００ｑの割当キー範囲［ｋｑ−ｍｉｎ，ｋｑ−ｍａｘ］に対して、ｋｑ−ｍｉｎ＜ｋ  １ｍｉｎ＜ｋ  １ｍａｘ＜ｋｑ−ｍａｘという関係を満たす。また、キー範囲２（８１５）は、［ｋ  ２ｍｉｎ，ｋ  ２ｍａｘ］と表される。そしてキー範囲２（８１５）は、ノード１００ｍの割当キー範囲［ｋｍ−ｍｉｎ，ｋｍ−ｍａｘ］および、ノード１００ｎの割当キー範囲［ｋｎ−ｍｉｎ，ｋｎ−ｍａｘ］に対して、次の関係をそれぞれ満たす。その関係とはすなわち、ｋｍ−ｍｉｎ＜ｋ  ２ｍｉｎ＜ｋｍ−ｍａｘ＜ｋｎ−ｍｉｎ＜ｋ  ２ｍａｘ＜ｋｎ−ｍａｘという関係である。また、キー範囲３（８１８）は、［ｋ  ３ｍｉｎ，ｋ  ３ｍａｘ］と表される。またキー範囲３は、ノード１００ｎの割当キー範囲［ｋｎ−ｍｉｎ，ｋｎ−ｍａｘ］に対して、ｋｎ−ｍｉｎ＜ｋ  ３ｍｉｎ＜ｋ  ３ｍａｘ≦ｋｎ−ｍａｘという関係を満たす。
ノード１００ｂのキー範囲生成部１０１は、受信したクエリからキー範囲群｛キー範囲１，キー範囲２，キー範囲３｝を生成する。ノード１００ｂの最小割当キーｋｂ−ｍｉｎとｋｂ−ｍｉｎ−１の両方を含むキー範囲は、キー範囲群の中にない。したがって、キー範囲生成部１０１によるキー範囲の分割はない。その後、ノード１００ｂのキー範囲生成部１０１は、クエリ転送制御部１０２へ該クエリと、生成したキー範囲群｛キー範囲１，キー範囲２，キー範囲３｝とを渡す。
ノード１００ｂのクエリ転送制御部１０２は、キー範囲生成部１０１からクエリとキー範囲群｛キー範囲１，キー範囲２，キー範囲３｝とを受け取る。ノード１００ｂの割当キー範囲［ｋｂ−ｍｉｎ，ｋｂ−ｍａｘ］とオーバーラップするキー範囲がキー範囲群には含まれていない。したがって、クエリは、クエリ処理部１０４に渡されない。
次にクエリ転送制御部１０２は、受け取ったキー範囲群に基づいてキー範囲グループとそのキー範囲グループを送信するノード１００を識別できるノードアドレスとを対応付けた対を求める。ノード１００ｂの最小割当キー保持部１０５は、例えば図６に示される最小割当キー表８０６を保持していると仮定する。
また経路管理部１０３は、Ｃｈｏｒｄのルーティングアルゴリズムにしたがって、一のキーに対するノードアドレスを算出すると仮定する。この場合、経路管理部１０３は、自ノードから２ｉ
（ｉは０以上の整数）ホップだけ離れたノードのノードアドレスを有する。例えば、ノード１００ｂの経路管理部１０３は、ノード１００ｃ、ノード１００ｅ、ノード１００ｆおよびノード１００ｊのノードアドレスを管理する。また経路管理部１０３は、自身が管理するノードアドレスに対応付けてそれぞれに対応するキーの集合を記憶する。例えば、ノード１００ｂの経路管理部１０３は、ノード１００ｊのノードアドレスに対応付けて、ノード１００ｊからノード１００ｐまでの、およびノード１００ａの、それぞれの割当キー範囲に含まれるキーを記憶する。
ここで、キー範囲１について、ｋ  １ｍａｘが、ノード１００ｑの割当キー範囲に含まれている。また経路管理部１０３は、ノード１００ｑの割当キー範囲に含まれるキーをノード１００ｊのノードアドレスと対応付けて記憶している。よって、クエリ転送制御部１０２は、キー範囲１について経路管理部１０３を参照することにより、ｋ  １ｍａｘに基づいて、ノード１００ｊのノードアドレスを取得する。また、クエリ転送制御部１０２は、ノード１００ｊのノードアドレスに基づいて、最小割当キー保持部１０５からノード１００ｊの最小割当キーｋｊ−ｍｉｎを取得する。
ここで、ｋ  １ｍｉｎ＜ｋｊ−ｍｉｎが成り立たない。よってクエリ転送制御部１０２は、キー範囲１［ｋ  １ｍｉｎ，ｋ  １ｍａｘ］をノード１００ｊのノードアドレスに対応するキー範囲グループｊに追加する。キー範囲２およびキー範囲３は、キー範囲１の場合と同様に、グループｊに追加される。
次に、クエリ転送制御部１０２は、クエリとキー範囲グループｊ｛キー範囲１，キー範囲２，キー範囲３｝をノード１００ｊのノードアドレスへ送信する。
ノード１００ｊのクエリ転送制御部１０２は、ノード１００ｂからクエリとキー範囲群｛キー範囲１，キー範囲２，キー範囲３｝とを受信する。ノード１００ｊの割当キー範囲［ｋｊ−ｍｉｎ，ｋｊ−ｍａｘ］とオーバーラップするキー範囲がキー範囲群には含まれていない。したがって、クエリは、クエリ処理部１０４に渡されない。
次にクエリ転送制御部１０２は、受け取ったキー範囲群に基づいてキー範囲グループとそのキー範囲グループを送信するノード１００を識別できるノードアドレスとを対応付けた対を求める。ノード１００ｊの最小割当キー保持部１０５は、例えば図６に示される最小割当キー表８０７を保持していると仮定する。
またノード１００ｊの経路管理部１０３も、Ｃｈｏｒｄのルーティングアルゴリズムにしたがって、一のキーに対するノードアドレスを算出すると仮定する。例えば、ノード１００ｊの経路管理部１０３は、ノード１００ｋ、ノード１００ｑ、ノード１００ｎおよびノード１００ｂのノードアドレスを管理する。また経路管理部１０３は、自身が管理するノードアドレスに対応付けてそれぞれに対応するキーの集合を記憶する。例えば、ノード１００ｊの経路管理部１０３は、ノード１００ｑのノードアドレスに対応付けて、ノード１００ｑおよびノード１００ｍのそれぞれの割当キー範囲に含まれるキーを記憶する。
ここで、キー範囲１について、ｋ  １ｍａｘが、ノード１００ｑの割当キー範囲に含まれている。また経路管理部１０３は、ノード１００ｑの割当キー範囲に含まれるキーをノード１００ｑのノードアドレスと対応付けて記憶している。よって、クエリ転送制御部１０２は、キー範囲１について経路管理部１０３を参照することにより、ｋ  １ｍａｘに基づいて、ノード１００ｑのノードアドレスを取得する。また、クエリ転送制御部１０２は、ノード１００ｑのノードアドレスに基づいて、最小割当キー保持部１０５からノード１００ｑの最小割当キーｋｑ−ｍｉｎを取得する。
ここで、ｋ  １ｍｉｎ＜ｋｑ−ｍｉｎが成り立たない。よってクエリ転送制御部１０２は、キー範囲１［ｋ  １ｍｉｎ，ｋ  １ｍａｘ］をノード１００ｑのノードアドレスに対応するキー範囲グループｑに追加する。
キー範囲２について、ｋ  ２ｍａｘが、ノード１００ｎの割当キー範囲に含まれている。また経路管理部１０３は、ノード１００ｎの割当キー範囲に含まれるキーをノード１００ｎのノードアドレスと対応付けて記憶している。よって、クエリ転送制御部１０２は、キー範囲２について経路管理部１０３を参照することにより、ｋ  ２ｍａｘに基づいて、ノード１００ｎのノードアドレスを取得する。また、クエリ転送制御部１０２は、ノード１００ｎのノードアドレスに基づいて、最小割当キー保持部１０５からノード１００ｎの最小割当キーｋｎ−ｍｉｎを取得する。
ここで、ｋ  １ｍｉｎ＜ｋｎ−ｍｉｎが成り立つ。よってクエリ転送制御部１０２は、キー範囲２［ｋ  １ｍｉｎ，ｋ  １ｍａｘ］をキー範囲２−１（８１６）［ｋ  ２ｍｉｎ，ｋｎｍｉｎ−１］とキー範囲２−２（８１７）［ｋｎ−ｍｉｎ，ｋ  ２ｍａｘ］とに分割する。そしてクエリ転送制御部１０２は、キー範囲２−２［ｋｎ−ｍｉｎ，ｋ  ２ｍａｘ］をノード１００ｎのノードアドレスに対応するキー範囲グループｎに追加する。そして、クエリ転送制御部１０２は、キー範囲２−１［ｋ  ２ｍｉｎ，ｋｎ−ｍｉｎ−１］について、上述の処理と同様の処理を行う。
キー範囲２−１について、ｋｎ−ｍｉｎ−１が、ノード１００ｍの割当キー範囲に含まれている。また経路管理部１０３は、ノード１００ｍの割当キー範囲に含まれるキーをノード１００ｑのノードアドレスと対応付けて記憶している。よって、クエリ転送制御部１０２は、キー範囲２−１について経路管理部１０３を参照することにより、ｋｎ−ｍｉｎ−１に基づいて、ノード１００ｑのノードアドレスを取得する。また、クエリ転送制御部１０２は、ノード１００ｑのノードアドレスに基づいて、最小割当キー保持部１０５からノード１００ｑの最小割当キーｋｑ−ｍｉｎを取得する。
ここで、ｋ  ２ｍｉｎ＜ｋｑ−ｍｉｎが成り立たない。よってクエリ転送制御部１０２は、キー範囲２−１［ｋ  ２ｍｉｎ，ｋｎ−ｍｉｎ−１］をノード１００ｑのノードアドレスに対応するキー範囲グループｑに追加する。
同様に、クエリ転送制御部１０２は、キー範囲３をノード１００ｎのノードアドレスに対応するキー範囲グループｎに追加する。クエリ転送制御部１０２が、キー範囲３をキー範囲グループｎに追加する過程については、上述の例と類似している。したがって記述は省略される。
次に、クエリ転送制御部１０２は、クエリとキー範囲グループｑ｛キー範囲１，キー範囲２−１｝をノード１００ｑのノードアドレスへ送信する。また、クエリ転送制御部１０２は、クエリとキー範囲グループｎ｛キー範囲２−２，キー範囲３｝をノード１００ｎのノードアドレスへ送信する。
ノード１００ｑのクエリ転送制御部１０２は、ノード１００ｊからクエリとキー範囲群｛キー範囲１，キー範囲２−１｝を受信する。キー範囲１は、ノード１００ｑの割当キー範囲に完全に包含される。したがってクエリ転送制御部１０２は、クエリをクエリ処理部１０４に渡し、キー範囲１をキー範囲群から削除する。そしてクエリ転送制御部１０２は、キー範囲群｛キー範囲２−１｝からキー範囲グループとノードアドレスの対を求める。以降の、キー範囲グループとノードアドレスとの対を求める処理についての説明は、省略される。
このような処理を行うことにより、最終的に、ノード１００ｑ、１００ｍ、１００ｎのクエリ処理部１０４に所望のクエリが入力されるように、適切にクエリが転送される。
本実施の形態における情報処理システム１０は、クエリから形成されるキー範囲群のうち、次の転送先のノードが同じであるキー範囲群をキー範囲グループにまとめる。そして情報処理システム１０は、そのキー範囲グループを該ノードへ転送する。例えば図１３を参照すると、ノード１００ｂは、キー範囲１、キー範囲２およびキー範囲３を次の転送先ノードであるノード１００ｊへまとめて転送する。一方非特許文献１に開示された技術は、ノード１００ｂからノード１００ｊへ、キー範囲毎に転送を行う。したがって、非特許文献１の技術によれば、ノード１００ｂからノード１００ｊへの通信が３回行われることになる。一方、本実施の形態の情報処理システム１０において、ノード間を転送するクエリは、同じノードを二回以上経由しない。
情報処理システム１０は、ステップＢ６０７において、キー範囲［ｋｍｉｎ，ｋ−１］を［ｋｍｉｎ，ｋｍａｘ］と見なし、処理がステップＢ６０２へ戻る。この処理はキー範囲毎に繰り返される。よって、各ノードアドレスに高々一つのキー範囲グループが関連付けられる。一つの装置には高々一つのキー範囲グループとクエリとが送信される。つまり、ノード間を転送するクエリは、同じノードを二回以上経由しない。
このような冗長性の低減により、本実施の形態の情報処理システム１０は、各ノードにおいて、クエリを転送するための処理負荷を低減させることができる。
また、本実施の形態における情報処理システム１０は、クエリから生成された各キー範囲について、キー範囲に含まれる各キーから求められる転送先ノードが同じになるように、キー範囲を分割する。そして情報処理システム１０は、分割されたキー範囲毎にキー範囲グループにまとめる。図１３を参照すると、ノード１００ｊは、キー範囲１、キー範囲２およびキー範囲３を受信する。そしてノード１００ｊは、キー範囲２を、転送先がノード１００ｑであるキー範囲２−１と、転送先がノード１００ｎであるキー範囲２−２とに分割する。そして、ノード１００ｊのクエリ転送制御部１０２は、キー範囲２−２と、同じく転送先がノード１００ｎであるキー範囲３とを、キー範囲グループｎとして一つのグループとして扱う。そしてクエリ転送制御部１０２は、そのキー範囲グループｎをノード１００ｎに転送する。一方、非特許文献１に開示された技術は、ノード１００ｊからノード１００ｑへのクエリの転送が二回行われる。さらに非特許文献１に開示された技術は、ノード１００ｎに二回、同一のクエリが到達する。したがって、本実施の形態における情報処理システム１０は、ノード１００ｎに対して、キー範囲グループｎが別経路にて二重に通知されることはなくなる。
このような冗長性の低減により、本実施の形態の情報処理システム１０は、各ノードにおいて、クエリを転送するための処理負荷を低減することができる。
本実施の形態の情報処理システム１０は、クエリ処理時の冗長な処理を低減できる。そして、本実施の形態の情報処理システム１０は、大量のクエリを処理する場合、例えば非特許文献１に開示された技術と比べて、より高いパフォーマンスを得ることができる。
［第二の実施の形態］
図１４は、本発明の第二の実施の形態におけるノード９００の構成を示すブロック図である。
図１４を参照すると、本発明の第二の実施の形態におけるノード９００は、キー範囲生成部９０１と、クエリ転送制御部９０２と、経路管理部９０３と、を備える。ノード９００は、データを処理するためのクエリを転送する。
キー範囲生成部９０１は、ある値の範囲を特定するクエリを受け取る。そしてキー範囲生成部９０１は、受け取ったクエリに含まれる値をそれぞれ示すキーを生成する。キーは少なくともある値を示す情報である。そしてキー範囲生成部９０１は、所定のキーの集合であるキー範囲を少なくとも一つ含むキー範囲群を生成する。
経路管理部９０３は、各装置が管理すべきキーの境界を示すキーを記憶する。
クエリ転送制御部９０２は、他のノード９００またはキー範囲生成部９０１からキー範囲群を受け取る。そしてクエリ転送制御部９０２は、受け取ったキー範囲群に含まれるキー範囲毎に、以下の処理を行う。すなわちクエリ転送制御部９０２は、キー範囲に含まれる所定のキーを経路管理部９０３に渡す。経路管理部９０３はクエリ転送制御部９０２から受け取るキーが示す値と記憶している各キーがそれぞれ示す値との大小関係に基づいて一のキーである宛先キーを特定する。クエリ転送制御部９０２は、経路管理部９０３が特定する宛先キーを経路管理部９０３から受け取る。そしてクエリ転送制御部９０２は、対象のキー範囲に含まれるキーを、経路管理部９０３から受け取った宛先キーの値に基づいて識別される装置のノード識別子に関連付けられるキーの集合であるキー範囲グループに追加する。
またクエリ転送制御部９０２は、各キー範囲グループを、その各キー範囲グループに関連付けられているノード識別子で識別される装置へそれぞれ転送する。
キー範囲生成部９０１と、クエリ転送制御部９０２と、経路管理部９０３とは、例えば、プログラム（情報処理プログラム）によって動作するＣＰＵによって実現される。キー範囲生成部９０１と、クエリ転送制御部９０２と、経路管理部９０３とが、同一のＣＰＵによって実現されてもよい。この場合、プログラムは、例えば、ノード９００が備えるプログラム記憶装置９０７（図１５参照）に記憶される。ＣＰＵ９０８は、そのプログラムを読み込み、そのプログラムにしたがって、キー範囲生成部９０１と、クエリ転送制御部９０２と、経路管理部９０３として動作すればよい。
また、前述のプログラムのコードを記録した記録媒体（または記憶媒体）が、ノード９００に供給され、ノード９００が記録媒体に格納されたプログラムのコードを読み出し実行してもよい。すなわち、本発明は、第一の実施の形態におけるノード９００が実行するためのソフトウェア（情報処理プログラム）を一時的に記憶するまたは非一時的に記憶する記録媒体９１０も含む。
経路管理部９０３は、例えば、ハードディスク９０９のような記憶装置によっても実現される。
このような構成により、本実施の形態におけるノード９００は、大量のクエリを処理するときに冗長なクエリ処理を低減することができる。
以上、これまで述べてきた各実施の形態は、本発明の好適な実施形態であり、上記実施の形態のみに本発明の範囲を限定するものではない。各実施の形態は、本発明の要旨を逸脱しない範囲において種々の変更を施した形態での実施が可能である。
本発明の各実施の形態において、ノード１００およびノード９００は、情報処理装置またはその一部に備えられる。したがって、一つのノードが一つの情報処理装置から構成されてもよい。あるいは、一つのノードに、情報処理装置に含まれるメモリ、ＣＰＵおよびハードディスクなどの資源の少なくとも一部が割り当てられるように構成されてもよい。つまり、複数のノードが一つの情報処理装置から構成されてもよい。
上記の各実施の形態の一部または全部は、以下の付記のようにも記載されうるが、以下には限られない。
（付記１）
ある値の範囲を特定するクエリを受け取り、当該クエリに含まれる値をそれぞれ示すキーを生成し、所定のキーの集合であるキー範囲を少なくとも一つ含むキー範囲群を生成するキー範囲生成部と、
各装置が管理すべきキーの境界を示すキーを記憶する経路管理部と、
キー範囲群を受け取り、当該キー範囲群に含まれるキー範囲毎に、
キー範囲に含まれる所定のキーが示す値と前記経路管理部が記憶する各キーがそれぞれ示す値との大小関係に基づいて一のキーである宛先キーを特定し、
当該キー範囲に含まれるキーを、前記宛先キーの値に基づいて識別される装置のノード識別子に関連付けられるキーの集合であるキー範囲グループに追加する、クエリ転送制御部と、
を備え、
前記クエリ転送制御部は、各キー範囲グループを、当該各キー範囲グループに関連付けられているノード識別子で識別される装置へそれぞれ転送する、情報処理装置。
（付記２）
付記１に記載の情報処理装置であって、
ノード識別子とキーとを対応付けて記憶する最小割当キー保持部を備え、
前記クエリ転送制御部は、受け取ったキー範囲群に含まれるキー範囲毎に、
前記宛先キーに基づいて識別される装置のノード識別子に対応付けられている一のキーを前記最小割当キー保持部から読み出し、
当該キー範囲に含まれるキーのうち前記一のキーが示す値と前記所定のキーが示す値との間の値を示すキーを、前記ノード識別子に関連付けられる一の集合であるキー範囲グループに追加する、情報処理装置。
（付記３）
付記２に記載の情報処理装置であって、
前記所定のキーは当該所定のキーを含むキー範囲に含まれるキーの中で最大値を示すキーである、情報処理装置。
（付記４）
付記３に記載の情報処理装置であって、
前記最小割当キー保持部は、ノード識別子と当該ノード識別子で識別される装置が管理すべきキーの中で最小値を示すキーである最小割当キーとを対応付けて記憶し、前記クエリ転送制御部は、受け取ったキー範囲群に含まれるキー範囲毎に、
前記キー範囲に含まれるキーのうち前記最小割当キーの値以上であり、前記所定のキーが示す値以下の値を示すキーを、前記ノード識別子に関連付けられる一の集合であるキー範囲グループに追加する、情報処理装置。
（付記５）
付記４に記載の情報処理装置であって、
前記クエリ転送制御部は、受け取ったキー範囲群に含まれるキー範囲毎に、前記キー範囲に含まれるキーであって、前記最小割当キーの値未満、または、前記所定のキーが示す値を超える値を示すキーを新たなキー範囲として特定する、情報処理装置。
（付記６）
付記１ないし５のいずれか１項に記載の情報処理装置であって、
前記経路管理部が記憶するキーは、対応する装置のノード識別子である、情報処理装置。
（付記７）
付記１ないし６のいずれか１項に記載の情報処理装置であって、
あるキーの集合を示す割当キー範囲を記憶する割当キー範囲記憶部と、
クエリを処理するクエリ処理部と、を備え、
前記クエリ転送制御部は、受け取ったキー範囲群に含まれるキー範囲毎に、
キー範囲を、前記割当キー範囲に重複するキーを含む第一のキー範囲と重複しないキーを含む第二のキー範囲とに分割し、前記第一のキー範囲を削除し、
前記クエリ処理部は、前記クエリ転送制御部が第一のキー範囲を削除した際にクエリを処理する、情報処理装置。
（付記８）
少なくとも一つの情報処理装置を備え、
当該情報処理装置は、
ある値の範囲を特定するクエリを受け取り、当該クエリに含まれる値をそれぞれ示すキーを生成し、所定のキーの集合であるキー範囲を少なくとも一つ含むキー範囲群を生成するキー範囲生成部と、
各情報処理装置が管理すべきキーの境界を示すキーを記憶する経路管理部と、キー範囲群を受け取り、当該キー範囲群に含まれるキー範囲毎に、
キー範囲に含まれる所定のキーが示す値と前記経路管理部が記憶する各キーがそれぞれ示す値との大小関係に基づいて一のキーである宛先キーを特定し、
当該キー範囲に含まれるキーを、前記宛先キーの値に基づいて識別される情報処理装置のノード識別子に関連付けられるキーの集合であるキー範囲グループに追加する、クエリ転送制御部と、
を備え、
前記クエリ転送制御部は、各キー範囲グループを、当該各キー範囲グループに関連付けられているノード識別子で識別される情報処理装置へそれぞれ転送する、情報処理システム。
（付記９）
付記８に記載の情報処理システムであって、
前記情報処理装置は、
ノード識別子とキーとを対応付けて記憶する最小割当キー保持部を備え、
前記クエリ転送制御部は、受け取ったキー範囲群に含まれるキー範囲毎に、
前記宛先キーに基づいて識別される装置のノード識別子に対応付けられている一のキーを前記最小割当キー保持部から読み出し、
当該キー範囲に含まれるキーのうち前記一のキーが示す値と前記所定のキーが示す値との間の値を示すキーを、前記ノード識別子に関連付けられる一の集合であるキー範囲グループに追加する、情報処理システム。
（付記１０）
付記９に記載の情報処理システムであって、前記所定のキーは当該所定のキーを含むキー範囲に含まれるキーの中で最大値を示すキーである、情報処理システム。
（付記１１）
付記１０に記載の情報処理システムであって、
前記最小割当キー保持部は、ノード識別子と当該ノード識別子で識別される装置が管理すべきキーの中で最小値を示すキーである最小割当キーとを対応付けて記憶し、前記クエリ転送制御部は、受け取ったキー範囲群に含まれるキー範囲毎に、
前記キー範囲に含まれるキーのうち前記最小割当キーの値以上であり、前記所定のキーが示す値以下の値を示すキーを、前記ノード識別子に関連付けられる一の集合であるキー範囲グループに追加する、情報処理システム。
（付記１２）
付記１１に記載の情報処理システムであって、
前記クエリ転送制御部は、受け取ったキー範囲群に含まれるキー範囲毎に、前記キー範囲に含まれるキーであって、前記最小割当キーの値未満、または、前記所定のキーが示す値を超える値を示すキーを新たなキー範囲として特定する、情報処理システム。
（付記１３）
付記８ないし１２のいずれか１項に記載の情報処理システムであって、
前記経路管理部が記憶するキーは、対応する装置のノード識別子である、情報処理システム。
（付記１４）
付記８ないし１３のいずれか１項に記載の情報処理システムであって、
前記情報処理装置は、
あるキーの集合を示す割当キー範囲を記憶する割当キー範囲記憶部と、
クエリを処理するクエリ処理部と、を備え、
前記クエリ転送制御部は、受け取ったキー範囲群に含まれるキー範囲毎に、
キー範囲を、前記割当キー範囲に重複するキーを含む第一のキー範囲と重複しないキーを含む第二のキー範囲とに分割し、前記第一のキー範囲を削除し、
前記クエリ処理部は、前記クエリ転送制御部が第一のキー範囲を削除した際にクエリを処理する、情報処理システム。
（付記１５）
ある値の範囲を特定するクエリを受け取り、当該クエリに含まれる値をそれぞれ示すキーを生成し、所定のキーの集合であるキー範囲を少なくとも一つ含むキー範囲群を生成し、
各装置が管理すべきキーの境界を示すキーを経路管理部に記憶し、
キー範囲群を受け取り、当該キー範囲群に含まれるキー範囲毎に、
キー範囲に含まれる所定のキーが示す値と前記経路管理部に記憶される各キーがそれぞれ示す値との大小関係に基づいて一のキーである宛先キーを特定し、
当該キー範囲に含まれるキーを、前記宛先キーの値に基づいて識別される装置のノード識別子に関連付けられるキーの集合であるキー範囲グループに追加し、
各キー範囲グループを、当該各キー範囲グループに関連付けられているノード識別子で識別される装置へそれぞれ転送する、情報処理方法。
（付記１６）
付記１５に記載の情報処理方法であって、
ノード識別子とキーとを対応付けて最小割当キー保持部に記憶し、
前記受け取ったキー範囲群に含まれるキー範囲毎に、
前記宛先キーに基づいて識別される装置のノード識別子に対応付けられている一のキーを前記最小割当キー保持部から読み出し、
当該キー範囲に含まれるキーのうち前記一のキーが示す値と前記所定のキーが示す値との間の値を示すキーを、前記ノード識別子に関連付けられる一の集合であるキー範囲グループに追加する、情報処理方法。
（付記１７）
付記１６に記載の情報処理方法であって、
前記所定のキーは当該所定のキーを含むキー範囲に含まれるキーの中で最大値を示すキーである、情報処理方法。
（付記１８）
付記１７に記載の情報処理方法であって、
前記最小割当キー保持部に、ノード識別子と当該ノード識別子で識別される装置が管理すべきキーの中で最小値を示すキーである最小割当キーとを対応付けて記憶し、前記受け取ったキー範囲群に含まれるキー範囲毎に、
前記キー範囲に含まれるキーのうち前記最小割当キーの値以上であり、前記所定のキーが示す値以下の値を示すキーを、前記ノード識別子に関連付けられる一の集合であるキー範囲グループに追加する、情報処理方法。
（付記１９）
付記１８に記載の情報処理方法であって、
前記受け取ったキー範囲群に含まれるキー範囲毎に、前記キー範囲に含まれるキーであって、前記最小割当キーの値未満、または、前記所定のキーが示す値を超える値を示すキーを新たなキー範囲として特定する、情報処理方法。
（付記２０）
付記１５ないし１９のいずれか１項に記載の情報処理方法であって、
前記経路管理部に記憶されるキーは、対応する装置のノード識別子である、情報処理方法。
（付記２１）
付記１５ないし２０のいずれか１項に記載の情報処理方法であって、
あるキーの集合を示す割当キー範囲を割当キー範囲記憶部に記憶し、
前記受け取ったキー範囲群に含まれるキー範囲毎に、
キー範囲を、前記割当キー範囲に重複するキーを含む第一のキー範囲と重複しないキーを含む第二のキー範囲とに分割し、前記第一のキー範囲を削除し、
前記クエリ転送制御部が第一のキー範囲を削除した際にクエリを処理する、情報処理方法。
（付記２２）
コンピュータに、
ある値の範囲を特定するクエリを受け取り、当該クエリに含まれる値をそれぞれ示すキーを生成し、所定のキーの集合であるキー範囲を少なくとも一つ含むキー範囲群を生成する処理と、
各装置が管理すべきキーの境界を示すキーを経路管理部に記憶する処理と、
キー範囲群を受け取り、当該キー範囲群に含まれるキー範囲毎に、
キー範囲に含まれる所定のキーが示す値と前記経路管理部に記憶される各キーがそれぞれ示す値との大小関係に基づいて一のキーである宛先キーを特定する処理と、
当該キー範囲に含まれるキーを、前記宛先キーの値に基づいて識別される装置のノード識別子に関連付けられるキーの集合であるキー範囲グループに追加する処理と、各キー範囲グループを、当該各キー範囲グループに関連付けられているノード識別子で識別される装置へそれぞれ転送する処理と、を実行させるための情報処理プログラム。
（付記２３）
付記２２に記載の情報処理プログラムであって、
前記コンピュータに、
ノード識別子とキーとを対応付けて最小割当キー保持部に記憶する処理と、
前記受け取ったキー範囲群に含まれるキー範囲毎に、
前記宛先キーに基づいて識別される装置のノード識別子に対応付けられている一のキーを前記最小割当キー保持部から読み出す処理と、
当該キー範囲に含まれるキーのうち前記一のキーが示す値と前記所定のキーが示す値との間の値を示すキーを、前記ノード識別子に関連付けられる一の集合であるキー範囲グループに追加する処理と、を実行させるための情報処理プログラム。
（付記２４）
付記２３に記載の情報処理プログラムであって、
前記所定のキーは当該所定のキーを含むキー範囲に含まれるキーの中で最大値を示すキーである、情報処理プログラム。
（付記２５）
付記２４に記載の情報処理プログラムであって、
前記コンピュータに、
前記最小割当キー保持部に、ノード識別子と当該ノード識別子で識別される装置が管理すべきキーの中で最小値を示すキーである最小割当キーとを対応付けて記憶する処理と、
前記受け取ったキー範囲群に含まれるキー範囲毎に、
前記キー範囲に含まれるキーのうち前記最小割当キーの値以上であり、前記所定のキーが示す値以下の値を示すキーを、前記ノード識別子に関連付けられる一の集合であるキー範囲グループに追加する処理と、を実行させるための情報処理プログラム。
（付記２６）
付記２５に記載の情報処理プログラムであって、
前記コンピュータに、
前記受け取ったキー範囲群に含まれるキー範囲毎に、前記キー範囲に含まれるキーであって、前記最小割当キーの値未満、または、前記所定のキーが示す値を超える値を示すキーを新たなキー範囲として特定する処理を実行させるための情報処理プログラム。
（付記２７）
付記２２ないし２６のいずれか１項に記載の情報処理プログラムであって、
前記経路管理部に記憶されるキーは、対応する装置のノード識別子である、情報処理プログラム。
（付記２８）
付記２２ないし２７のいずれか１項に記載の情報処理プログラムであって、
前記コンピュータに、
あるキーの集合を示す割当キー範囲を割当キー範囲記憶部に記憶する処理と、
前記受け取ったキー範囲群に含まれるキー範囲毎に、
キー範囲を、前記割当キー範囲に重複するキーを含む第一のキー範囲と重複しないキーを含む第二のキー範囲とに分割し、前記第一のキー範囲を削除する処理と、前記クエリ転送制御部が第一のキー範囲を削除した際にクエリを処理する処理と、を実行させるための情報処理プログラム。
（付記２９）
コンピュータに、
ある値の範囲を特定するクエリを受け取り、当該クエリに含まれる値をそれぞれ示すキーを生成し、所定のキーの集合であるキー範囲を少なくとも一つ含むキー範囲群を生成する処理と、
各装置が管理すべきキーの境界を示すキーを経路管理部に記憶する処理と、
キー範囲群を受け取り、当該キー範囲群に含まれるキー範囲毎に、
キー範囲に含まれる所定のキーが示す値と前記経路管理部に記憶される各キーがそれぞれ示す値との大小関係に基づいて一のキーである宛先キーを特定する処理と、
当該キー範囲に含まれるキーを、前記宛先キーの値に基づいて識別される装置のノード識別子に関連付けられるキーの集合であるキー範囲グループに追加する処理と、各キー範囲グループを、当該各キー範囲グループに関連付けられているノード識別子で識別される装置へそれぞれ転送する処理と、を実行させるための情報処理プログラムを格納した記録媒体。
この出願は、２０１１年１月２５日に出願された日本出願特願２０１１−０１２９４６を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【０００９】
本発明の情報処理システムは、ＲＦＩＤ（Ｒａｄｉｏ  Ｆｒｅｑｕｅｎｃｙ  ＩＤｅｎｔｉｆｉｃａｔｉｏｎ）やセンサなどのデバイスから大量に発生するデータ（イベント）を、それを要求するアプリケーションに対して配信するＰｕｂｌｉｓｈ／Ｓｕｂｓｃｒｉｂｅ型のシステムに応用されうる。
【符号の説明】
【００１０】
１０    情報処理システム
１００、９００    ノード
１０１、９０１    キー範囲生成部
１０２、９０２    クエリ転送制御部
１０４    クエリ処理部
１０３、９０３    経路管理部
１０５    最小割当キー保持部
１０６    割当キー範囲記憶部
１０７、９０７    プログラム記憶装置
１０８、９０８    ＣＰＵ
１０９、９０９    ハードディスク
１１０、９１０    記録媒体
８０１    キー空間
８０２    キー範囲
８０３    キー
８０４    属性空間
８０５    クエリエリア
８０６、８０７、８０８    最小割当キー表
８０９    メッセージ
８１０    クエリ
８１１    キー範囲
８１２    最小キー
８１３    最大キー
８１４    キー範囲１
８１５    キー範囲２
８１６    キー範囲２−１
８１７    キー範囲２−２
８１８    キー範囲３
８２５    フィンガーテーブル
【図１】
2012102102.tif 000003
【図２】
2012102102.tif 000004
【図３】
2012102102.tif 000005
【図４】
2012102102.tif 000006
【図５】
2012102102.tif 000007
【図６】
2012102102.tif 000008
【図７】
2012102102.tif 000009
【図８】
2012102102.tif 000010
【図９】
2012102102.tif 000011
【図１０】
2012102102.tif 000012
【図１１】
2012102102.tif 000013
【図１２】
2012102102.tif 000014
【図１３】
2012102102.tif 000015
【図１４】
2012102102.tif 000016
【図１５】
2012102102.tif 000017
【国際調査報告】
2012102102.tif 000018
2012102102.tif 000019