JP5867407B2 - 情報処理装置、システム、制御方法およびプログラム - Google Patents

情報処理装置、システム、制御方法およびプログラム Download PDF

Info

Publication number
JP5867407B2
JP5867407B2 JP2012541919A JP2012541919A JP5867407B2 JP 5867407 B2 JP5867407 B2 JP 5867407B2 JP 2012541919 A JP2012541919 A JP 2012541919A JP 2012541919 A JP2012541919 A JP 2012541919A JP 5867407 B2 JP5867407 B2 JP 5867407B2
Authority
JP
Japan
Prior art keywords
section
information
key
attribute
event
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2012541919A
Other languages
English (en)
Other versions
JPWO2012060465A1 (ja
Inventor
佐藤 正
正 佐藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2012541919A priority Critical patent/JP5867407B2/ja
Publication of JPWO2012060465A1 publication Critical patent/JPWO2012060465A1/ja
Application granted granted Critical
Publication of JP5867407B2 publication Critical patent/JP5867407B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/544Remote

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)

Description

本発明は、情報処理装置、システム、制御方法およびプログラムに関する。
ID、位置、時刻などの1つ以上のデータ項目から構成されるデータ(以下、「イベント」とする)をアプリケーションに対して配信できるイベント配信システムがある。各データ項目は、属性名と属性値から構成される。例えば、温度、湿度センサが観測した20℃の温度、60%の湿度を基にイベントを生成する場合、イベントは、属性名が″温度″で、それに対する属性値が20℃であるデータ項目と、属性名が″湿度″で、それに対する属性値が60%であるデータ項目から構成されるように表現できる。
イベント配信システムには、外部プログラム(サブスクライバ)から、サブスクリプションと、サブスクリプションを識別するためのサブスクリプションIDと、登録要求か削除要求かを識別するための要求種別とが入力(サブスクライブ)される。サブスクリプションは、イベントの条件(イベント条件)と、通知先のアプリケーションのID(アプリケーションID)とから構成される。要求種別が登録要求の場合、サブスクリプションIDとサブスクリプションがペアでイベント配信システムに記憶される。イベント配信システムは、イベント条件として複数の属性条件を記述できる。例えば、イベント配信システムは、属性条件として属性名とそれに対する属性値の範囲を指定できる。
外部プログラム(パブリッシャ)からイベントが発生すると、該イベントが、イベント配信システムに入力(パブリッシュ)される。登録されているサブスクリプションのイベント条件に、入力されたイベントが合致した場合、イベント配信システムは、該イベント条件とペアで指定されているアプリケーションIDで特定されるアプリケーションに対して該イベントを送信する。
ここで、イベント条件を構成する全ての属性条件について、該属性条件で指定される属性名をイベントが含んでおり、かつ、属性条件で指定される属性値範囲が、イベントに記述される該属性名に対する属性値を包含している場合、該イベントは該イベント条件に合致するという。例えば、属性名が″温度″で、それに対する属性値の範囲が″10℃以上30℃以下″であるイベント条件が、イベント配信システムに登録されているとする。その状態で、属性名が″温度″で、それに対する属性値が″20℃″である属性と、属性名が″湿度″で、それに対する属性値が″60%″である属性を含むイベントが発生したとする。イベント条件で指定される属性名″温度″については、″20℃″が″10℃以上30℃以下″に含まれるため、該イベントは該イベント条件に合致すると言える。属性名″湿度″については、該イベント条件で指定されていないので、該イベント条件に合致するかどうかに影響を与えない。
このようにイベントを処理する技術の一例が、非特許文献1に記載されている。図19は、非特許文献1に記載される技術を説明する図である。図19に示すイベント(図19中のpublication)とイベント条件(図19中のsubscription)は、属性名xと属性名yから構成される。該イベントには、属性名xに対する属性値が100であり、属性名yに対する属性値が200であることが記述されている。該イベント条件には、属性名xに対する属性値の範囲が50以上150以下であり、属性名yに対する属性値の範囲が150以上250以下であることが記述されている。該イベントは該イベント条件に合致する。図19に示すシステムは、各属性名と1対1に対応するサブシステム(ハブ)から構成される。ハブは1つ以上のノードをリング状に構成するものである。あるノードから見て、リング上の次のノードをサクセッサと呼ぶ。また、あるノードから見て、リング上の前のノードをプレディセッサと呼ぶ。ハブに属するノードは、該ハブに対応する属性名に対する属性値の範囲(属性値範囲)を管理する。
サブスクライバからサブスクリプションを受信し、あるいは、パブリッシャからイベントを受信したノードは、該ノードが属するハブとは別のハブに属するノードに、イベントやサブスクリプションを転送する。そのため、ノードは、該ノードが属するハブとは別のハブに属するノードのネットワークアドレスを保持する(そのようなノードを「クロスハブ隣接ノード」と呼ぶ)。クロスハブ隣接ノードを決定する方法が非特許文献2に開示されている。
システムは、新しいノードがハブに参加した直後では、該ノードのサクセッサのクロスハブ隣接ノードを該ノードのクロスハブ隣接ノードリンクとする。システムは、その後、メンテナンスプロセスを開始する。システムは、メンテナンスプロセスでは、他の各ハブでランダムウォークを行い、新規のクロスハブ隣接ノードを決定する。ランダムウォークとは、ランダムウォークを開始するノードが、ルーティングテーブルに記録されている任意のノードへアクセス(ホップ)し、アクセスされたノードがさらに上記と同じ手段でホップしていくことであり、そのようなホップを、あらかじめ定めされているホップ数に至るまで繰り返すことである。そして、システムは、あらかじめ定められたホップ数に至ったときに到達しているノードをクロスハブ隣接ノードとして決定する。
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、2に開示されている方式は、あらかじめ定められた属性名のデータ項目に対しては有効であるが、あらかじめ定められていない属性名が新たに追加されるような状況では有効ではない。すなわち、非特許文献1、2に開示されている方式では、あらゆる未知の属性名に対するハブをあらかじめ作ろうとする場合、ハブが無限に必要となるが、そのようなことは不可能である。また、システムは、新たな属性名が追加されたタイミングで、その属性名に対応するノードを生成し、そのノードを、その属性名に対するハブとすることも考えられる。しかし、システムは、新規に生成したノードと、他の既存のハブを構成する全ノードとのリンクを確立しなければならない。従って、システムは、属性名追加時に、各ノードにおいて行われる属性名を追加するための処理時間がかかってしまうという問題がある。
そこで、本発明の目的は、上述の課題を解決すべく、各ノードにおいて行われる属性名を追加するための処理の時間を短縮する情報処理装置、システム、制御方法およびプログラムを提供することにある。
本発明の一形態は、情報処理装置であって、属性名と属性値とを用いて、少なくとも2以上の属性名について予め定められた順序関係に基づいて生成される大小比較可能な形式であるキーの範囲が互いに隣接するように複数に分割された各区間のうちの少なくともひとつ以上の区間である自区間を記憶する自区間記憶手段と、属性名と属性値とから生成されるキーが前記自区間に含まれるか否かを判定する判定手段と、を備える。
また、本発明によれば、属性名と属性値とを用いて、少なくとも2以上の属性名について予め定められた順序関係に基づいて生成される大小比較可能な形式であるキーの範囲が互いに隣接するように複数に分割された各区間のうちの少なくともひとつ以上の区間である自区間を記憶する自区間記憶手段を備える情報処理装置に、属性名と属性値とから生成されるキーが前記自区間に含まれるか否かを判定する判定ステップを実行させる情報処理プログラムが提供される。
また、本発明によれば、属性名と属性値とを用いて、少なくとも2以上の属性名について予め定められた順序関係に基づいて生成される大小比較可能な形式であるキーの範囲が互いに隣接するように複数に分割された各区間のうちの少なくともひとつ以上の区間である自区間を記憶する自区間記憶手段を備える情報処理装置が、属性名と属性値とから生成されるキーが前記自区間に含まれるか否かを判定する情報処理方法が提供される。
上述した本発明によれば、各ノードにおいて行われる属性名を追加するための処理の時間を短縮する情報処理装置、システム、制御方法およびプログラムを提供することができる。
本発明の第1の実施の形態にかかる情報処理装置5の構成図である。 本発明の第1の実施の形態にかかるイベント配信システム1の構成図である。 本発明の第1の実施の形態にかかるノードの構成図である。 本発明の第1の実施の形態にかかるサブスクリプション転送情報生成部11における動作を示すフローチャートである。 本発明の第1の実施の形態にかかる属性値が取り得る下限値乃至上限値の範囲と、イベント条件で指定されている属性値の範囲と、下限値乃至上限値に占める当該属性値の範囲の割合との関係の一例を示す図である。 本発明の第1の実施の形態にかかるイベント転送情報生成部12における動作を示すフローチャートである。 本発明の第1の実施の形態にかかるメッセージ判定部13における動作を示すフローチャートである。 本発明の第1の実施の形態にかかるサブスクリプション配置制御部14における動作を示すフローチャートである。 本発明の第1の実施の形態にかかるサブスクリプション登録、削除処理のフローチャートである。 本発明の第1の実施の形態にかかるサブスクリプション転送処理のフローチャートである。 本発明の第1の実施の形態にかかるサブスクリプション管理部15における動作を示すフローチャートである。 本発明の第1の実施の形態にかかるサブスクリプション管理テーブルの一例を示す図である。 種別が登録の場合のサブスクリプション操作要求を示す図である。 種別が削除の場合のサブスクリプション操作要求を示す図である。 種別が参照の場合のサブスクリプション操作要求を示す図である。 本発明の実施の形態にかかるイベント条件合致判定部16における動作を示すフローチャートである。 本発明の第1の実施の形態にかかるメッセージ転送部17における動作を示すフローチャートである。 本発明の第1の実施の形態にかかるイベント配信システム1の動作例を示す図である。 背景技術を説明するための図である。 本発明の第1の実施の形態におけるイベント配信システム1の動作例を示す図である。 本発明の第1の実施の形態におけるイベント配信システム1の動作例を示す図である。 本発明の第1の実施の形態におけるキー範囲管理の変更を説明するための図である。 本発明の第1の実施の形態におけるキー範囲管理の変更を説明するための図である。 本発明の第1の実施の形態におけるキー範囲管理の変更を説明するための図である。 本発明の第2の実施形態における情報処理装置5の構成例を示す図である。
以下、本発明の実施の形態について、図面を用いて説明する。すべての図面において、同じ構成要素には同じ符号を付し、適宜説明を省略する。
なお、各実施形態のディスク装置等を構成する各部は、制御部、メモリ、メモリにロードされたプログラム、プログラムを格納するハードディスク等の記憶ユニット、ネットワーク接続用インターフェースなどからなり、ハードウェアとソフトウェアの任意の組合せによって実現される。そして特に断りのない限り、その実現方法、装置は限定されない。
また、制御部はCPU(Central Processing Unit)などからなり、オペレーティングシステムを動作させてディスク装置等の全体を制御するとともに、例えばドライブ装置などに装着された記録媒体からメモリにプログラムやデータを読み出し、これに従って各種の処理を実行する。
記録媒体は、例えば光ディスク、フレキシブルディスク、磁気光ディスク、外付けハードディスク、半導体メモリ等であって、コンピュータプログラムをコンピュータが読み取り可能に記録する。また、コンピュータプログラムは、通信網に接続されている図示しない外部コンピュータからダウンロードされても良い。ここで、特に断りの無い限り、通信網は、インターネット、LAN(Local Area Network)、公衆回線網、無線通信網、または、これらの組み合わせ等によって構成されるネットワーク等であって良い。
また、各実施形態の説明において利用するブロック図は、ハードウェア単位の構成ではなく、機能単位の構成を示している。これらの機能ブロックはハードウェア、ソフトウェアの任意の組み合わせによって実現される。また、これらの図においては、各実施形態の構成部は物理的に結合した一つの装置により実現されるよう記載されている場合もあるが、その実現手段はこれに限定されない。すなわち、各実施形態で説明される構成部、装置、システム等は、二つ以上の物理的に分離した装置を有線または無線で接続することにより複数の装置により実現されてもよい。また、各構成部が物理的に分離した2つ以上装置として記載されている場合もあるが、その実現手段はこれに限定されない。すなわち、物理的に結合した一つの装置により実現されるようにハードウェア、ソフトウェアを任意に組み合わせることにより各実施形態の各構成部、装置、システム等が実現されてもよい。
<実施形態1>
まず、図1を参照して、本発明の第1の実施の形態にかかるイベント配信システム1の概要について説明する。図1は、本実施の形態にかかるイベント配信システム1を構成する情報処理装置5の構成図の概要である。
情報処理装置5は、複数のノード50、60を含んでもよい。あるいは、ノード50、60は、情報処理装置5又はその一部から構成されてもよい。つまり、1つのノードは1つの情報処理装置5から構成されていてもよく、1つのノードは情報処理装置5に含まれるメモリ、CPU(Central Processing Unit)及びハードディスク等のリソースが任意の量割り当てられて構成されるようにしてもよい。また、複数のノードは1つの情報処理装置5から構成されてもよい。
ノード50は、キー情報生成部51、処理対象判定部52、処理対象情報格納部53及び情報転送部54を備える。なお、ノード60の構成については、ノード50の構成と同様であるため、説明を省略する。
ノード50、60は、情報の種別を示す属性名と、この情報の値を示す属性値とを含むイベント情報を受信する。ここで、イベント情報(イベントともいう。)とは、上述のとおり、ID、位置、時刻などの1つ以上のデータ項目から構成されるデータである。データ項目は、属性名と属性値から構成される。例えば、温度、湿度センサが観測した20℃の温度、60%の湿度を基にイベントを生成する場合、イベントは、属性名が″温度″で、それに対する属性値が20℃であるデータ項目と、属性名が″湿度″で、それに対する属性値が60%であるデータ項目から構成されるように表現できる。属性名とは、データ項目に対して付された名称である。属性名とは、一般にあるものに共通して備わっているとされる性質や特徴のことであり、例えば、上述した温度、湿度、の他に物体の色、形、位置、時間等の任意の性質や特徴を表すものであって、特段制限されない。また、属性値とは、属性名で表される属性が取り得る値を表す。例えば、上述の例では、属性名”温度”に対する属性値は”60%”などである。
ノード50、60は、受信したイベント情報のうち、所定の属性名及び所定の範囲内の属性値を含んだイベント情報を処理対象とする。
キー情報生成部51は、イベント情報を受信した場合に、このイベント情報に含まれる属性名と属性値から、この属性名及び属性値を大小比較可能な形式に変換したキー情報を生成する。そして、キー情報生成部51は、イベント情報と、そのイベント情報から生成されたキー情報を処理対象判定部52に出力する。
処理対象判定部52は、キー情報生成部51から出力されたイベント情報及びキー情報を取得すると、処理対象情報格納部53に格納されている処理対象情報を取得する。そして、処理対象判定部52は、取得したキー情報と処理対象情報とを比較することによって、取得したイベント情報を処理対象とするか否かを判定する。
処理対象情報格納部53は、所定の属性名及び所定の範囲内の属性値のキー情報を示す処理対象情報を予め保持する。
情報転送部54は、処理対象判定部52がイベント情報を処理対象としないと判定した場合に、このイベント情報と、このイベント情報から生成されたキー情報とを他のノードに送信する。
続いて、本実施の形態にかかるイベント配信システム1について詳細に説明する。図2を参照して、本実施の形態にかかるイベント配信システム1の構成について説明する。図2は、イベント配信システム1の構成図である。
イベント配信システム1は、1つ以上のノードから構成される。イベント配信システム1は、データ項目から一意に決まる値(キー)の空間(集合)を管理する。異なるキーの間には順序が定義される。各ノードは、連続するキーの範囲を管理する。
本実施の形態では、情報処理装置5は、イベント及びサブスクリプションに含まれる属性名及び属性値を大小比較可能な形式に変換したキーを生成するキー生成関数を用意する。つまり、キー生成関数は、キーを戻り値とする関数である。属性名はn(nは、文字列など)、属性値はv(vは、文字列や実数など)とし、キーを生成するキー生成関数はf(n,v)で表す。ここで、属性名、属性値にはそれぞれ順序が定義されているとする。例えば、属性名には、大小関係が定義されている。例えば、属性名が文字列で表され、順序関係が辞書式順序に従う場合、属性名″温度″は、属性名″時刻″より小さい値となる。f(n,v)は、n1>n2ならば、f(n1,v1)>f(n2,v2)を満たす関数である。ただし、v1とv2は任意の値である。さらにf(n,v)は、n1=n2かつv1>v2ならば、f(n1,v1)>f(n2,v2)を満たす関数である。属性名の順序の詳細に関しては後述する。
キー生成関数の例(f1(n,v)と記述する)を示す。属性名が文字列で表されると仮定する。属性値は3桁までの10進整数(0から999まで)で表されると仮定する。f1(n,v)は、まず、属性値を文字列に変換する。例えば、f1(n,v)は、属性値が0から99までの場合には、上位桁に0を追加し、3文字にする。例えば、属性値20は変換後、文字列″020″となる。関数f1(n,v)は、その後、属性名の文字列と属性値の文字列との間にデリミタを挟んで結合し、それをf1(n,v)の戻り値とする。f1(n,v)は、デリミタとして、属性名と属性値のいずれにも使用されない記号を使用する。例えば、f1(n,v)は、デリミタを″:″とすると、f1(″x″,20)=″x:020″となる。
イベント配信システム1は、図2の例では、属性名“x”、“y”から生成されるハッシュ値に多くのノードを割り当てている。イベント条件で指定される属性名が“x”と“y”のいずれか、あるいは、両方である場合には、このようなハッシュ値の配置が適切である。イベント条件に属性名“z”の条件が指定される場合、後述するように、そのイベント条件は、ノードeに配置される。属性名“z”の条件が指定されたイベント条件が多く登録される場合、イベント配信システム1は、属性名“z”から生成されるハッシュ値に対してより多くのノードを割り当てることにより、イベント処理負荷のバランスをとることができる。
キー生成関数の他の例(f2(n,v)と記述する)を示す。f1(n,v)で求められる文字列は、PC(Personal computer)やサーバ等の情報処理装置内では、文字コードによって、ビット列で表現される。f2(n,v)は、f1(n,v)で求められる文字列を文字コードによって表現したビット列のうち、上位から所定のビット数を戻り値とする。例えば、f2(n,v)は、そのビット列の上位160ビットをf2の戻り値とする。この場合に、文字コードが4バイトであれば、″x:020″は160ビット(4バイト×5文字×8)となるため、″x:020″を文字コードによって表現したビット列の全てが戻り値となる。
本実施の形態では、イベント配信システム1は、ノードaからノードgまでの7つのノードが存在している場合について例示する。イベント配信システム1は、属性値のそれぞれが下限値(あるいは最小値、以下同じ。)及び上限値(あるいは最大値、以下同じ。)を有するとしても良い。イベント配信システム1は、属性値の取り得る範囲が、例えば、0以上320未満の整数である属性名″x″と、取り得る属性値の範囲が0以上320未満の整数である属性名″y″との2つの属性名をサポートしているものとすることができる。また、文字列の順序関係はどのように定められても良い。例えば、文字列の順序関係は、″:″<″0″<″1″<…<″9″<″a″<″b″<…<″z″としても良い。以下、本実施の形態では、属性名の順序は以下のように循環すると仮定する。すなわち、属性名がアルファベットの例では、″a″<″b″<…”x”<”y”<″z″<″a″<″b″<…、のように文字の順序が循環する(この関係を、循環的順序関係という)。例えば、図2に示すノードaは、″x:160″以上のキーで、″x:240″より小さいキーの範囲を管理する(これを[“x:160”,“x:240”)と表す。)。例えば、キー″x:200″はノードaが管理する。また、ノードeは、″y:200″以上のキーで、″x:000″より小さいキーの範囲、すなわち、xより前の属性名”z”、”a”、”b”、…、”w”と、属性名に対応する属性値を管理する。したがって、ノードeは、例えば、キー″z:050″を管理する。換言すれば、本実施の形態におけるノードは、属性名の有する循環的順序関係において一巡未満の範囲を管理している。
続いて、本実施の形態にかかるノードの具体的な構成について説明する。図3は、図1で説明したノードの具体的な構成図である。
ノード10は、サブスクリプション転送情報生成部11と、イベント転送情報生成部12と、メッセージ判定部13と、サブスクリプション配置制御部14と、サブスクリプション管理部15と、イベント条件合致判定部16と、メッセージ転送部17と、を有する。なお、ノード20の構成については、ノード10の構成と同様であるため、説明を省略する。つまり、イベント配信システム1に含まれるノードa〜gは、ノード10の構成と同様である。
サブスクリプション転送情報生成部11は、サブスクライバ31から入力されたサブスクリプションからそれを転送するために必要な情報を生成する。サブスクリプションは、イベント条件と、通知先のアプリケーションのID(アプリケーションID)とから構成される(図12参照)。また、イベント条件は、複数の属性条件(属性名と、それに対する属性値の範囲)からなるイベントの条件である。
イベント転送情報生成部12は、パブリッシャ32から入力されたイベントからそれを転送するために必要な情報を生成する。サブスクリプション転送情報生成部11及びイベント転送情報生成部12が生成する情報には、キーが含まれる。
サブスクリプション転送情報生成部11及びイベント転送情報生成部12は、図1で示したキー情報生成部51として機能する。
メッセージ判定部13は、ノード10宛に送られてきたメッセージがサブスクリプションかイベントかを判定する。ノード10には、サブスクライバ31から入力されたサブスクリプションやパブリッシャ32から入力されたイベント、あるいは、サブスクリプションID、要求種別、属性名などが、他のノード20から送信される。そこで、他のノード20から送信される(あるいは、他のノード10へ送信する)これらサブスクリプションやイベントなどの情報をまとめてメッセージと呼ぶ。
サブスクリプション配置制御部14は、サブスクリプションをどのノードに配置するかを決定する。
サブスクリプション管理部15は、サブスクリプションをノード内に記憶する。サブスクリプション管理部15は、図1で示した処理対象情報格納部53に相当する。
イベント条件合致判定部16は、受信したイベントがサブスクリプション管理部15に格納されたサブスクリプションに含まれるイベント条件に合致するかどうかを判定する。
メッセージ転送部17は、入力されるキーによって転送先が決定されるノードに対して、イベントを含んだメッセージや、サブスクリプションID、サブスクリプション及び要求種別(登録要求か削除要求かを識別するための種別)を含んだメッセージを転送する。メッセージ転送部17は、図1で示した処理対象判定部52及び情報転送部54として機能する。
続いて、図4を参照して、本実施の形態にかかるサブスクリプション転送情報生成部11における動作について説明する。図4は、サブスクリプション転送情報生成部11における動作を示すフローチャートである。
サブスクライバ31からノード10へサブスクリプションが入力されると、入力されたサブスクリプションは、まず、サブスクリプション転送情報生成部11で処理される(S101)。サブスクリプション転送情報生成部11は、受信したサブスクリプションの構成要素であるイベント条件について、それを構成する属性名群から1つの属性名を選択する(S102)。次に、サブスクリプション転送情報生成部11は、選択した属性名とそれに対する属性値範囲の下限値とからキーを生成する(S103)。最後に、サブスクリプション転送情報生成部11は、生成したキーとサブスクリプションをペアとして、メッセージ転送部17へ入力する。これにより、そのキーを管理するノードへサブスクリプションが含まれるメッセージが転送される。
サブスクリプション転送情報生成部11が、イベント条件を構成する属性名群から1つの属性名を選択する方法としては、例えば以下の方法がある。サブスクリプション転送情報生成部11は、例えば、イベント条件を構成する各属性名について、属性値として取り得る値の範囲に対する、イベント条件として指定されている属性値範囲の割合を求め、その割合が最も小さい属性名を選択してもよい。図5は、属性値が取り得る下限値乃至上限値の範囲と、イベント条件で指定されている属性値の範囲と、下限値乃至上限値に占める属性値の範囲の割合との関係の一例を示す。例えば、属性名″x″に対する属性値が取り得る値の数が100で、イベント条件で指定された属性値範囲のサイズが10であるとすると、それらの割合は、1/10となる。また、例えば、属性名″y″に対する属性値が取り得る値の数が300で、イベント条件で指定された属性値範囲のサイズが50であるとすると、その割合は1/6となる。よって、この例の場合、サブスクリプション転送情報生成部11は、より割合の小さい属性名″x″を選択する。そして、サブスクリプション転送情報生成部11は、属性名″x″と、それに対応する属性値範囲の下限値である属性値″11″からキーを生成する。サブスクリプション転送情報生成部11は、属性値範囲の下限値以外の値を用いてキーを生成しても良い。サブスクリプション転送情報生成部11は、属性名と属性値からのキーの生成には、前述しているキー生成関数を用いる。
ここで、サブスクリプションのイベント条件に含まれる属性名及びその属性値の範囲と、ノードが管理する属性名及びその属性値の範囲に重複がある場合に、そのノードにサブスクリプションが登録される。したがって、上述のように、属性値として取り得る値の範囲に対してイベント条件として指定されている属性値範囲の割合が最も小さい属性名をサブスクリプション転送情報生成部11が選択した場合は、サブスクリプションが登録されるノード数を低減することができる。
続いて、図6を参照して、本実施の形態にかかるイベント転送情報生成部12における動作について説明する。図6は、イベント転送情報生成部12の動作を示すフローチャートである。
パブリッシャ32から入力されたイベントは、まず、イベント転送情報生成部12で処理される(S111)。イベント転送情報生成部12は、受信したイベントを構成する各属性名について、以下の処理を行う。まず、イベント転送情報生成部12は、属性名nとそれに対する属性値vとをキー生成関数へ入力してキーを生成する(S112)。次に、イベント転送情報生成部12は、生成したキーとイベントをペアとして、メッセージ転送部17へ入力し、そのキーを管理するノードへメッセージを転送する(S113)。
続いて、図7を参照して、本実施の形態にかかるメッセージ判定部13における動作について説明する。図7は、メッセージ判定部13の動作を示すフローチャートである。
メッセージ判定部13は、メッセージ転送部17からキーとメッセージを受信する(S121)。メッセージ判定部13は、受信したメッセージの内容を判定する(S122)。メッセージ判定部13は、メッセージがサブスクリプションであれば、該キーと該メッセージをサブスクリプション配置制御部14へ入力して処理を終了する(S123)。一方、メッセージ判定部13は、メッセージがイベントであれば、該キーと該メッセージをイベント条件合致判定部16にメッセージを入力して処理を終了する(S124)。
続いて、図8〜10を参照して、本実施の形態にかかるサブスクリプション配置制御部14における動作について説明する。図8は、サブスクリプション配置制御部14の動作を示すフローチャートである。
サブスクリプション配置制御部14は、メッセージ判定部13からキーとメッセージを受信する(S131)。その後、サブスクリプション配置制御部14は、サブスクリプション登録、削除処理(S132)と、サブスクリプション転送処理(S133)を行う。以降、前記2つの処理を説明する。
図9は、サブスクリプション配置制御部14が行なうサブスクリプション登録、削除処理を示すフローチャートである。サブスクリプション登録、削除処理では、まず、サブスクリプション配置制御部14は、メッセージの要求種別を判定する(S141)。メッセージが登録要求である場合、サブスクリプション配置制御部14は、種別を登録として、メッセージに含まれるサブスクリプションIDとサブスクリプションからサブスクリプション操作要求を生成し(S142)、生成したサブスクリプション操作要求をサブスクリプション管理部15に入力する(S144)。
一方、メッセージが削除要求である場合、サブスクリプション配置制御部14は、種別を削除として、メッセージに含まれるサブスクリプションIDからサブスクリプション操作要求を生成し(S143)、生成したサブスクリプション操作要求をサブスクリプション管理部15に入力する(S144)。
なお、サブスクリプション操作要求は、その構成要素の1つとして種別を含む。種別には、登録、削除、参照がある。サブスクリプション操作要求の構成要素は、種別ごとに異なる。種別が登録の場合のサブスクリプション操作要求を図13に示す。種別が登録の場合、サブスクリプション操作要求は、種別に加えて、サブスクリプションIDとサブスクリプションとから構成される。種別が削除の場合のサブスクリプション操作要求を図14に示す。種別が削除の場合、サブスクリプション操作要求は、種別に加えて、サブスクリプションIDから構成される。種別が参照の場合のサブスクリプション操作要求を図15に示す。種別が参照の場合、サブスクリプション操作要求は、種別のみから構成される。
図10は、サブスクリプション転送処理を示すフローチャートである。サブスクリプション転送処理では、まず、サブスクリプション配置制御部14は、メッセージに含まれる属性名と、それに対する属性値範囲の上限値とからキー(ターゲットキー)を生成する(S151)。次に、サブスクリプション配置制御部14は、本処理を実行しているノードが管理するキー範囲にターゲットキーが含まれるかどうかを判定する(S152)。含まれていない場合、サブスクリプション配置制御部14は、サクセッサ(ノードが構成するリング上で、あるノードから見て次のノード)が管理するキーの下限値(新規キー)を生成し(S153)、その後、ネクストホップとしてサクセッサを指定して、メッセージ転送部17へ新規キーとメッセージを入力する(S154)。ノードが管理するキー範囲にターゲットキーが含まれる場合には、サブスクリプション配置制御部14は、メッセージ転送部17にキー及びメッセージの入力は行なわない。
続いて、図11を参照して、本実施の形態にかかるサブスクリプション管理部15における動作について説明する。図11は、サブスクリプション管理部15の動作を示すフローチャートである。
サブスクリプション管理部15は、サブスクリプションIDとサブスクリプションを管理するサブスクリプション管理テーブルを有する。サブスクリプション管理テーブルの例を図12に示す。サブスクリプション管理テーブルには、サブスクリプションIDと、サブスクリプションとが対応付けられたレコードが格納される。図12のサブスクリプション管理テーブルの一行目のレコードは、サブスクリプションIDが”sub1”であり、サブスクリプションのイベント条件が“50≦x≦150&150≦y≦250”であり、通知先のアプリケーションIDが“app1”である例を示している。
サブスクリプション管理部15は、サブスクリプション配置制御部14、あるいは、イベント条件合致判定部16から、サブスクリプション操作要求を受信する(S161)。
サブスクリプション管理部15は、サブスクリプション操作要求を受信すると、まず、受信したサブスクリプション操作要求の種別を参照する(S162)。種別が登録の場合、サブスクリプション管理部15は、サブスクリプションとサブスクリプションIDのペアをレコードとしてサブスクリプション管理テーブルに追加する(S163)。種別が削除の場合、サブスクリプション管理部15は、サブスクリプションIDが一致するレコードをサブスクリプション管理テーブルから削除する(S164)。種別が参照の場合、サブスクリプション管理部15は、サブスクリプション管理テーブルを呼び出し、テーブルを参照後元に返す(S165)。
続いて、図16を参照して、本実施の形態にかかるイベント条件合致判定部16における動作について説明する。図16は、イベント条件合致判定部16の動作を示すフローチャートである。
イベント条件合致判定部16は、メッセージ転送部17からイベントを受信すると(S171)、サブスクリプション管理部15へ種別を参照としたサブスクリプション操作要求を入力し、サブスクリプション管理テーブルを取得する(S172)。イベント条件合致判定部16は、取得したサブスクリプション管理テーブルの各レコードrについて、以下の処理を実行する。まず、イベント条件合致判定部16は、イベントが、レコードrのサブスクリプションの構成要素の1つであるイベント条件に合致するかどうかを判定する(S173)。合致した場合には、次に、イベント条件合致判定部16は、レコードrのサブスクリプションIDとイベントのペアを、レコードrのサブスクリプションの構成要素の1つであるアプリケーションIDで識別されるアプリケーション40に送信する(S174)。なお、イベント条件合致判定部16は、イベントがレコードrのサブスクリプションの構成要素の1つであるイベント条件に合致しない場合には、アプリケーションへのイベント通知は行わない。
続いて、図17を参照して、本実施の形態にかかるメッセージ転送部17における動作について説明する。図17は、メッセージ転送部17の動作を示すフローチャートである。
メッセージ転送部17は、サブスクリプション転送情報生成部11、イベント転送情報生成部12、サブスクリプション配置制御部14、あるいは、本処理が動作するノードとは別のノードからキーとメッセージを受信する(S181)。メッセージ転送部17は、キーとメッセージを受信すると、受信したキーが、ノードが管理するキー範囲に含まれるかどうかを判定する(S182)。ここでの判定は、メッセージ転送部17を含むノード10内のいずれかに、メモリやハードディスク等の任意の記憶装置を有するようにして、この記憶装置にノード10が管理するキー範囲を示すキー範囲情報を格納して、受信したキーと、キー範囲情報とを比較することによって判定可能としてもよい。この記憶装置は、図1で示した処理対象情報格納部53に相当する。
メッセージ転送部17が、受信したキーがノードの管理するキー範囲に含まれるかどうかを判定する処理の一例について説明する。ノードでは、「(自身の管理するキー範囲の上限値)−(自身の管理するキー範囲の下限値)」が最小となる範囲に、受信したキーが含まれているか否かを判定する。
たとえば、受信したキーが“x:050”であるとする。図2を参照すると、ノードaでは上限値が“x:240”であり下限値が“x:160”であるので、その間が最小となる範囲に“x:050”は含まれない。したがって、ノードaではメッセージ転送部17は、受信したキーを含まない、と判定する。一方、ノードcでは上限値が“x:080”であり下限値が“x:000”であるので、その間が最小となる範囲に“x:050”が含まれる。したがって、ノードcではメッセージ転送部17は、受信したキーを含む、と判定する。
別の例として、受信したキーが“z:050”であるとする。図2を参照すると、ノードaでは上限値が“x:240”であり下限値が“x:160”であるので、その間が最小となる範囲に“z:050”は含まれない。したがって、ノードaではメッセージ転送部17は、受信したキーを含まない、と判定する。一方、ノードeでは上限値が“x:000”であり下限値が“y:200”である。あらかじめ定められた属性名の循環的順序関係において、「x<y<z…<x」であるので、その間が最小となる範囲に“z:050”が含まれる。したがって、ノードcではメッセージ転送部17は、受信したキーを含む、と判定する。この際、メッセージ転送部17は、下限値の生成に用いられた属性名yと上限値の生成に用いられた属性名xの順序関係が、一巡しない範囲における順序関係と一致しない場合、受信したキーが下限値と比較して小さい又は上限値と比較して大きい場合に受信したキーがキー範囲に含まれる判定することにより、上記の判定を実現してもよい。
受信したキーが、ノードが管理するキー範囲に含まれる場合、メッセージ転送部17は、メッセージ判定部13へキーとメッセージを入力する(S183)。受信したキーが、ノードが管理するキー範囲に含まれない場合、メッセージ転送部17は、ネクストホップノードとしてサクセッサが指定されているか否かを判定する(S184)。メッセージ転送部17は、ネクストホップノードとしてサクセッサが指定されている場合には、ネクストホップノードにキーとメッセージを転送する(S186)。一方、ネクストホップノードにサクセッサが指定されていない場合、メッセージ転送部17は、ルーティングテーブルを参照し、転送先のノードを決定する(S185)。そして、メッセージ転送部17は、ネクストホップノードにキーとメッセージを転送する(S186)。
メッセージ転送部17は、ルーティングテーブルを有する。ルーティングテーブルは、キーと、ノードのネットワークアドレスとのペアを管理している。ルーティングテーブルは、例えば、メッセージ転送部17が有する任意の記憶装置に格納される。ルーティングテーブルの生成、メンテナンス方法、ルーティングテーブルを参照してメッセージの転送先のノードを決定する方法は、ルーティングプロトコルに依存する。ルーティングプロトコルの例として、非特許文献2の3.3節に記述される方法が利用されてもよい。ルーティングプロトコルは、任意に決定されてもよく、メッセージ転送部17は、例えば、「(送信するキー)>(ノードが管理するキー範囲の下限値)」となるノードのうち、「(送信するキー)−(ノードが管理するキー範囲の下限値)」が最小となるノードに、キー及びメッセージが到達するように送信してもよい。
続いて、図18を参照して、本実施の形態にかかるイベント配信システム1における動作について説明する。図18は、イベント配信システム1の動作例を示す図である。図18に示すように、例えば、ノードcが[″x:000″,″x:080″)、ノードbが[″x:080″,″x:160″)、ノードaが[″x:160″,″x:240″)、ノードdが[″x:240″,″y:000″)、ノードgが[″y:000″,″y:100″)、ノードfが[″y:100″,″y:200″)、ノードeが[″y:200″,″x:000″)までを管理している。
イベント配信システム1の構成要素であるノードgが、サブスクライバ31からサブスクリプションs(50≦x≦150&150≦y≦250,app1)を受信したと仮定する(S80)。
ノードgは、サブスクリプション転送情報生成部11でサブスクリプションsを構成する属性名xと属性名yから、例えば上述した方法によって属性名xを選択する(S81)。次に、サブスクリプション転送情報生成部11は、属性名xと、その属性値範囲の下限値である50とからキー″x:050″を生成する。サブスクリプション転送情報生成部11は、サブスクライバ31から入力された、サブスクリプションID、サブスクリプション、要求種別(ここでは要求種別が登録要求である場合を例とする)と、選択した属性名″x″とを合わせてメッセージとする。サブスクリプション転送情報生成部11は、キーとメッセージをメッセージ転送部17へ入力する。そして、メッセージ転送部17は、入力されたキー及びメッセージをルーティングプロトコルにしたがって、そのキーを管理するノードに対して送信する。
本実施の形態では、ノードgのメッセージ転送部17から送信されたキー及びメッセージは、0以上のノードのメッセージ転送部17を経由して、最終的に、キー″x:050″を管理するノードcのメッセージ転送部に到達する(S82)。ノードgから送信されたキー及びメッセージは、ノードe、fを経由してノードcに到達するようにしてもよいし、ノードgから直接ノードcに到達するようにしてもよい。ここでは、「(送信するキー)>(ノードが管理するキー範囲の下限値)」となるノードのうち、「(送信するキー)−(ノードが管理するキー範囲の下限値)」が最小となるノードcに、キー及びメッセージが到達する。
ノードcのメッセージ転送部17は、受信したキー″x:050″が、ノードcが管理するキー範囲[″x:000″,″x:080″)に含まれるため、メッセージ判定部13にキーとメッセージを入力する。メッセージ判定部13は、メッセージがサブスクリプションから構成されているため、キーとメッセージをサブスクリプション配置制御部14へ入力する。ここでは要求種別が登録要求である場合を例としているので、サブスクリプション配置制御部14は、サブスクリプションIDとサブスクリプションのペアをサブスクリプション管理部15に登録する(図9のフロー参照)。
また、メッセージに含まれる属性名″x″と、それに対する属性値範囲の上限値150から生成されるキー″x:150″が、ノードcが管理するキー範囲[″x:000″,″x:080″)に含まれない。そのため、サブスクリプション配置制御部14は、サクセッサが管理するキーの下限値(新規キー)″x:080″と、入力されたメッセージを、メッセージ転送部17に入力する(図10のフロー参照)。
ここで、ノードcのサクセッサとして、ノードcが管理するキー範囲[″x:000″,″x:080″)に続くキー範囲[″x:080″,″x:160″)を管理するノードbが設定されている。つまり、メッセージの属性値範囲の上限値150から生成されるキー″x:150″が、ノードcに含まれない場合、メッセージの属性値範囲がノードcの管理するキー範囲に続くキー範囲を管理するノードbに含まれることになる。したがって、ノードcは、メッセージのサブスクリプションがノードbでも登録されるようにするため、ノードbが管理するキー範囲の下限値から生成したキー″x:080″とメッセージを、ノードbに送信する。よって、メッセージ転送部17は、サブスクリプション配置制御部14からネクストホップとしてサクセッサであるノードbが指定される。そして、メッセージ転送部17は、入力されたキー及びメッセージをノードbに送信する。
ノードcのメッセージ転送部17から送信されたキーとメッセージは、ノードbに到達する(S83)。ノードbのメッセージ転送部17は、受信したキー″x:080″が、管理するキー範囲[″x:080″,″x:160″)に含まれるため、メッセージ判定部13にキーとメッセージを入力する。そして、ノードcにおける処理と同様に、メッセージを構成するサブスクリプションIDとサブスクリプションは、該ノードのサブスクリプション管理部15に登録される。また、メッセージに含まれる属性名″x″と、それに対する属性値範囲の上限値150から生成されるキー″x:150″は、ノードbが管理するキー範囲[″x:080″,″x:160″)に含まれる。そのため、サブスクリプション配置制御部14は、メッセージ転送部17にキー及びメッセ−ジの入力は行わない。よって、メッセージの転送は行われない。これらの処理の結果、サブスクリプションsはノードcとノードbに保持されることとなる。
次に、イベント配信システム1の構成要素であるノードaが、パブリッシャ32からイベントe(x=100,y=200)を受信したとする(S84)。イベントは属性名xと属性名yから構成されるので、ノードaのイベント転送情報生成部12は、属性名xに対するキー″x:100″と、属性名yに対するキー″y:200″を生成する。イベント転送情報生成部12は、イベントをメッセージとして、それぞれのキーごとにメッセージ転送部17に入力する。そして、メッセージ転送部17は、入力されたキー及びメッセージをルーティングプロトコルにしたがって、そのキーを管理するノードに対して送信する。
メッセージは、それぞれのキーを管理するノードへ転送される。キー″x:100″と、そのキーと共に送信されたメッセージは、ノードbに到達する(S85)。キー″y:200″と、そのキーと共に送信されたメッセージは、ノードeに到達する(S86)。
キー″x:100″とそのイベントがノードbに到達すると、ノードbのメッセージ転送部17は、受信したキー″x:100″が、管理するキー範囲[″x:080″,″x:160″)に含まれるため、メッセージ判定部13にキーとメッセージを入力する。メッセージ判定部13は、メッセージがイベントから構成されているため、キーとメッセージをイベント条件合致判定部16に入力する。イベント条件合致判定部16は、サブスクリプション管理部15からサブスクリプション管理テーブルを取得する。そして、イベント条件合致判定部16は、サブスクリプション管理テーブルに登録されているサブスクリプションsのイベント条件が「(50≦x≦150)かつ(150≦y≦250)」であり、イベントの属性値が「x=100,y=200」であるため、イベント条件に合致すると判定する。そのため、イベント条件合致判定部16は、アプリケーションapp1にイベントを通知する(図16のフロー参照)。
また、キー″y:200″とそのイベントがノードeに到達すると、ノードeのメッセージ転送部17は、受信したキー″y:200″が、ノードeが管理するキー範囲[″y:200″,″x:000″)に含まれるため、メッセージ判定部13にキーとメッセージを入力する。メッセージ判定部13は、メッセージがイベントから構成されているため、キーとメッセージをイベント条件合致判定部16に入力する。イベント条件合致判定部16は、サブスクリプション管理部15からサブスクリプション管理テーブルを取得する。そして、イベント条件合致判定部16は、イベントの属性値が「x=100,y=200」であるが、サブスクリプションsがサブスクリプション管理テーブルに登録されていないため、イベント条件に合致しないと判定する。そのため、イベント条件合致判定部16は、アプリケーションへのイベントの通知は行わない。
図2、図18で示したイベント配信システム1は、属性名xあるいは属性名yから生成されるキーを分割して、多くのノードに割り当てている。これは、イベント配信システム1に登録されているサブスクリプションで指定されている属性が、属性名x、あるいは、属性名y(両方も含む)のみであることをイベント配信システム1の管理者等が想定しているためである。そして、イベント配信システム1は、属性名xあるいは属性名yの条件を指定しているサブスクリプションが登録されている場合であって属性名xあるいは属性名yを含むイベントが発生した場合に、そのイベントとサブスクリプションとのマッチング処理をする必要がある。イベント配信システム1は、属性名xと属性名yから生成されるキーを分割して、複数のノードに割り当てることで、マッチング処理を分散させ、イベント配信システム1のイベント処理負荷を平準化することができる。
続いて、図20を参照して、それまで指定されたことのなかった属性名zが指定されたサブスクリプションがサブスクライブされたときの、本実施の形態にかかるイベント配信システム1における動作について説明する。
イベント配信システム1の構成要素であるノードgが、サブスクライバ31からサブスクリプションs(50≦z≦150,app1)を受信したとする(S90)。ノードgのサブスクリプション転送情報生成部11は、属性名zと、その属性値範囲の下限値である50とからキー″z:050″を生成する。サブスクリプション転送情報生成部11は、該キーとメッセージをノードgのメッセージ転送部17へ入力する。ここで、該メッセージは、サブスクライバ31から入力された、サブスクリプションID、サブスクリプション、要求種別、属性名″z″を含むデータである(S91)。
次に、ノードgのメッセージ転送部17は、入力されたキー及びメッセージをルーティングプロトコルにしたがって、そのキーを管理するノードに対して送信する(S92)。
キー“z:050”は、「(送信するキー)>(ノードが管理するキー範囲の下限値)」となるノードのうち「(送信するキー)−(ノードが管理するキー範囲の下限値)」が最小となるノードに到達することになる。ここで図2を参照して各ノードが管理するキー範囲の下限値を確認すると、ノードaが管理するキー範囲の下限値は“x:160”である。ノードbが管理するキー範囲の下限値は“x:080”である。ノードcが管理するキー範囲の下限値は“x:000”である。ノードdが管理するキー範囲の下限値は“x:240”である。ノードeが管理するキー範囲の下限値は“y:200”である。ノードfが管理するキー範囲の下限値は“y:100”である。ノードgが管理するキー範囲の下限値は“y:000”である。他方、属性名の順序関係は一巡しない範囲において「x<y<z」である。よって、「(送信するキー)>(ノードが管理するキー範囲の下限値)」となるノードのうち「(送信するキー)−(ノードが管理するキー範囲の下限値)」が最小となるノードはeとなる。
したがって、ノードgのメッセージ転送部17から送信されたキー及びメッセージは、0以上のノードのメッセージ転送部17を経由して、最終的に、キー″z:050″を管理するノードeのメッセージ転送部17に到達し、ノードeで保持される。
次に、イベント配信システム1の構成要素であるノードaが、パブリッシャ32からイベントe(z=100)を受信したとする(S93)。ノードaのイベント転送情報生成部12は、属性名zに対するキー″z:100″を生成する。後は、サブスクリプションの転送の場合と同様に、転送されたイベントは、ノードeに到達する(S94)。
次に、イベント配信システム1が、属性名zが指定されるイベントやサブスクリプションが多くなってくる場合に、属性名zから生成されるキーに対してより多くのリソースを割り当てるように各ノードの管理するキー範囲を変更する場合の動作について図1、図20、図21を用いて説明する。
まず、図20に示すように、ノードeはキー範囲[″y:200″,″x:000″)を管理し、ノードfはキー範囲[″y:100″,″y:200″)を管理しているものと仮定する。
ノードeがサブスクリプションあるいはイベント情報を受信した場合、処理対象判定部52は、該サブスクリプションあるいはイベント情報に含まれる属性名を参照し、一定時間ごとに受信したサブスクリプションあるいはイベント情報の少なくとも一方に含まれる属性名の数をカウントする。そして、該属性名の数が、例えば、予め処理対象情報格納部53に格納されている閾値以上になった場合に、あるいは、増加率が一定の値を超えた場合に、ノードeは、自己が管理するキー範囲の下限値である“y:200”のキーをキー情報生成部51で生成するとともに、変更分キー範囲の情報を生成する。変更分キー範囲をどのように決定するかは、例えば、システムパラメータで与えられる。当該システムパラメータが、例えば、一定時間の受信イベント情報数が閾値以上となった属性名に対する属性値の下限値未満を変更分キー範囲とすることを指定する場合、例えば、図20から図21のようにノードeは、変更分キー範囲を[″y:200″,″z:000″)とし、自己の管理するキー範囲を[″y:200″,″x:000″)から[″z:000″,″x:000″)のように変更すると決定する。なお、該変更分キー範囲は予め管理者が定めても良いし、処理対象情報格納部53がテーブルを参照して決定しても良い。この場合、例えば、処理対象情報格納部53は、ノードが受信したサブスクリプションが指定する属性名の増加率と変更分キー範囲とを対応付けた図示しない変更範囲管理テーブルを有していても良い。あるいは、処理対象情報格納部53は、イベントに含まれる属性名の増加率等と変更分キー範囲とを対応付けた図示しない変更範囲管理テーブルを有していても良い。あるいは、処理対象情報格納部53は、サブスクリプションやイベント情報に含まれる属性名に対応する属性値の範囲と変更分キー範囲とを対応付けた図示しない変更範囲管理テーブルを有していても良い。この場合、変更範囲管理テーブルは、例えば、サブスクリプションが指定する属性名の増加率やイベント情報に含まれる属性名の増加率、あるいは、属性名に対応する属性値の範囲が大きいほど大きくなる変更分キー範囲を管理しても良い。キー情報生成部51は、キー範囲[″y:200″,″z:000″)を生成する。情報転送部54は、該生成したキーと該キー範囲とをサクセッサへ送信する。
サクセッサであるノードが該キーと該キー範囲とを受信すると、処理対象判定部52は、受信したキーが自己の管理するキー範囲の上限値であるか否かを、処理対象情報格納部53に格納されている自己の管理するキー範囲を参照して判定する。処理対象判定部52は、受信したキーが自己の管理するキー範囲の上限値ではないと判定した場合には、そのキーを次のサクセッサへ送信する。一方、受信したキーが自己の管理するキー範囲の上限値である場合には、処理対象情報格納部53は、自己の管理するキー範囲に、受信したキー範囲を加えた新たなキー範囲を自己の管理する新たなキー範囲として格納する。例えば、図20のノードfがキー“y:200”を受信すると、ノードfは、該キーと自己の管理するキー範囲[″y:100″,″y:200″)の上限値とが一致することから、自己の管理するキー範囲[″y:100″,″y:200″)に、受信した変更分キー範囲[″y:200″,″z:000″)を加えた新たなキー範囲[″y:100″,″z:000″)を自己が新たに管理するキー範囲として処理対象情報格納部53が格納する。そして、該ノードは、キー範囲を変更した旨を、受信したキー情報″y:200”および変更分キー範囲[″y:200″,″z:000″)とともに次のサクセッサに送信する。
次のサクセッサであるノードは、該キー範囲を変更した旨の情報と、該キー情報″y:200”と、該変更分キー範囲[″y:200″,″z:000″)とを受信すると、該キー情報″y:200”が自己の管理するキー範囲の下限値であるか否かを判定する。そして、自己の管理するキー範囲の下限値でない場合には、受信したキー範囲を変更した旨の情報、キー情報、変更分キー範囲をさらに次のサクセッサに送信する。一方、受信したキーが自己の管理するキー範囲の下限値である場合には、自己の管理するキー範囲から、受信した変更分キー範囲を減じた範囲を、自己が管理する新たなキー範囲として処理対象情報格納部53が格納する。本実施の形態では、ノードeの管理するキー範囲[″y:200″,″x:000″)の下限値とキー″y:200”とが一致するため、処理対象情報格納部53は、キー範囲を、[″y:200″,″x:000″)から[″y:200″,″z:000″)の範囲を減じた[″z:000″,″x:000″)に変更する。
これにより、イベント配信システム1は、例えば、図20から図21のようにノードが管理するキー範囲を変更することができる。すなわち、ノードeは管理するキー範囲を、[″y:200″,″x:000″)から[″z:000″,″x:000″)のように変更し、ノードfは管理するキー範囲を[″y:100″,″y:200″)から[″y:100″,″z:000″)のように変更することができる。なお、ノードeは、キー範囲を変更する際に、下限値の代わりに上限値をサクセッサに送信することにしても良い。その場合、上記文章中で下限値と上限値とを適宜読み替える。また、この場合、ノードfの代わりにノードcの管理するキー範囲が変更される。なぜなら、ノードcはノードeのキー範囲の上限値を、キー範囲の下限値として管理するノードだからである。また、より一般的には、ノードeは、自己の管理するキー範囲の下限値と上限値の両方をサクセッサに送信しても良い。この場合、ノードeは自己の区間を複数区間に分割し、上述の方法によってノードeの下限値を含む区間をノードfに、ノードeの上限値を含む区間をノードcに割り当てることができる。また、上記例では、ノードeはノードfがキー範囲を変更したことを確認してから、自己の管理するキー範囲を変更しているが、ノードeは、変更分キー範囲をサクセッサに送信する段階で自己の管理するキー範囲を変更しても良い。また、ノードが送信する情報は、サクセッサ以外の他のノードに送信しても良い。例えば、上述のノードeは、変更分キー範囲のみをキー情報生成部51で生成して、プレディセッサであるノードfに送信しても良い。この場合、プレディセッサであるノードfは、自己の管理するキー範囲と受け取った変更分キー範囲とをマージした区間を新たに自己が管理するキー範囲としてもよい。
図22、図23を用いて、このキー範囲の変更の全体像を説明する。図22の内側円は、各ノードの管理する属性名がx、y、zの3つのみであり、それらが循環的順序関係をもっている様子を表している。また、各属性名に対する属性値の範囲はいずれも0から320の間であるとする。図22の外側円は、各ノードが管理するキー範囲を示している。例えば、ノードcが[″x:000″,″x:080″)、ノードbが[″x:080″,″x:160″)、ノードaが[″x:160″,″x:240″)、ノードdが[″x:240″,″y:000″)、ノードgが[″y:000″,″x:100″)、ノードfが[″y:100″,″y:200″)、ノードeが[″y:200″,″x:000″)までを管理している。
図23は、イベント配信システム1が、ノードが管理するキー範囲を変更した様子を表している。例えば、図23は、ノードfの管理する範囲が[″y:100″,″z:000″)、ノードeの管理する範囲が[″z:000″,″x:000″)である様子を表している。
このとき、もともとノードeが管理していたキー範囲は、図22に示すように、属性名yからなるキー範囲200≦y≦320の120(=320−200)の範囲分と、属性名zからなるキー範囲0≦z≦320の320(=320−0)の範囲分であるから、キー範囲全体に対する属性名zからなるキー範囲の割合は、320/(120+320)=8/11である。一方、キー範囲変更後は、図23に示すように、ノードeの管理するキー範囲は属性名zからなるキー範囲0≦z≦320の320(=320−0)の範囲分だけであるから、キー範囲全体に対する属性名zからなるキー範囲の割合は320/320=1となる。このように、属性名zからなるキー範囲の割合が、もともとノードeが管理していたキー範囲に対する属性名zからなるキー範囲の割合よりも大きくなる。このことは、属性名zが指定されるイベントやサブスクリプションが多くなってくる場合に、イベント配信システム1が、ノードが管理するキー範囲のうち属性名zから生成されるキー範囲の割合を増加させたことに相当する。また、イベント配信システム1は、同様にして、ノードeのみならず、より多くのノードが属性zからなるキー範囲を管理するようにキー範囲の割当を変更しても良い。
図24は、ノードeが、もともと管理していたキー範囲[″y:200″,″x:000″)を新たにキー範囲[″z:000″,″z:200″)に変更した様子を示している。また、図24は、これに伴い、ノードfがキー範囲を[″y:100″,″y:200″)から[″y:100″,″z:000″)に変更させ、ノードcがキー範囲を[″x:000″,″x:080″)から[″z:200″,″x:080″)に変更させた様子を示している。ノードeは、上述のとおり、自己の管理していたキー範囲の下限値を含む所定範囲[″y:200″,″z:000″)を他のノードに送信し、それを受信したノードfが、当該範囲を自己の管理するキー範囲に加えることで、キー範囲を[″y:100″,″y:200″)から[″y:100″,″z:000″)に変更させることができる。同様にして、ノードeは、自己の管理していたキー範囲の上限値を含む所定範囲[″z:200″,″x:000″)を他のノードに送信し、それを受信したノードcが、当該範囲を自己の管理するキー範囲に加えることで、キー範囲を[″x:000″,″x:080″)から[″z:200″,″x:080″)に変更させることができる。
このように、イベント配信システム1は、属性名zが指定されるイベントやサブスクリプションが多くなってくる場合に、属性名zから生成されるキーに対してより多くのリソースを割り当てるようなキーの割り当てに変更することで、負荷のバランスをとることができる。
以上に説明したように、本実施の形態は、サブスクリプションやイベントに、それまで指定されたことのなかった属性の条件が指定された場合にも、それまで指定されてきた属性が指定された場合と同じオーダの処理時間で、サブスクリプション及びイベントを転送することができる。つまり、イベント配信システム1は、新たな属性名追加時に、各ノードにおいて行われる属性名を追加するための処理の時間を短縮することができる。
<実施形態2>
次に、本発明の第2の実施の形態について図25を用いて説明する。本実施の形態における情報処理装置5は、処理対象判定部52、処理対象情報格納部53を備える。これらの構成、動作については上述したとおりであるから説明を省略する。
この情報処理装置5によれば、属性名と属性値とを用いて、少なくとも2以上の属性名について予め定められた順序関係に基づいて生成される大小比較可能な形式であるキーの範囲が互いに隣接するように複数に分割された各区間のうちの少なくともひとつ以上の区間である自区間を記憶する自区間記憶手段と、属性名と属性値とから生成されるキーが前記自区間に含まれるか否かを判定する判定手段と、を備える情報処理装置が提供される。
本実施の形態によれば、各ノードにおいて行われる属性名を追加するための処理の時間を短縮する情報処理装置、システム、制御方法およびプログラムを提供することができる。
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
以上に説明した本発明にかかるノードは、上述の実施の形態の機能を実現するプログラムを記憶した記憶媒体を装置に供給し、装置の有するCPU(Central Processing Unit)又はMPU(Micro Processing Unit)等がこのプログラムを実行することによって、構成することが可能である。
また、このプログラムは様々な種類の記憶媒体に格納することが可能であり、通信媒体を介して伝達されることが可能である。ここで、記憶媒体は、例えば、フレキシブルディスク、ハードディスク、磁気ディスク、光磁気ディスク、CD−ROM(Compact Disc Read Only Memory)、DVD(Digital Versatile Disc)、BD(Blu−ray(登録商標)Disc)、ROM(Read Only Memory)カートリッジ、バッテリバックアップ付きRAM(Random Access Memory)、メモリカートリッジ、フラッシュメモリカートリッジ、不揮発性RAMカートリッジを含む。また、通信媒体は、電話回線等の有線通信媒体、マイクロ波回線等の無線通信媒体を含む。また、上述のプログラムは、インターネットを介して伝達することも可能である。
また、CPU又はMPUが上述の実施の形態の機能を実現するプログラムを実行することにより、上述の実施の形態の機能が実現されるだけではなく、このプログラムの指示に基づき、装置上で稼動しているOS(Operating System)もしくはアプリケーションソフトと共同して上述の実施の形態の機能が実現される場合も、発明の実施の形態に含まれる。
さらに、このプログラムの処理の全てもしくは一部が装置に挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットにより行われて上述の実施の形態の機能が実現される場合も、発明の実施の形態に含まれる。
(実施の形態の他の表現)
上述の実施の形態、実施例の一部又は全部は下記のようにも表現できるが、下記のように限定されない。
(付記1)
属性名と属性値とを用いて、少なくとも2以上の属性名について予め定められた順序関係に基づいて生成される大小比較可能な形式であるキーの範囲が互いに隣接するように複数に分割された各区間のうちの少なくともひとつ以上の区間である自区間を記憶する自区間記憶手段と、属性名と属性値とから生成されるキーが前記自区間に含まれるか否かを判定する判定手段と、を備える情報処理装置。
属性名と属性値とを含む情報であるイベント情報を受信する受信手段と、前記属性名のうち、受信した前記イベント情報に含まれる頻度が所定値以上の属性名が存在する場合、前記自区間の分割された区間であって下限または上限を含む区間である端区間を、前記端区間に隣接する区間を記憶する他の情報処理装置へ送信する区間情報転送手段と、他の情報処理装置から自区間に隣接する区間を受信する区間情報受信手段と、前記送信した端区間と前記区間情報受信手段で受信した区間の一方もしくは両方を用いて自区間記憶手段を更新する処理対象情報格納手段と、をさらに備える付記1に記載の情報処理装置。
(付記3)
前記イベント情報を受信した場合に、前記イベント情報に含まれる属性名と属性値とに基づいて、大小比較可能な形式であるキーを生成するキー情報生成手段と、生成された前記キーが前記自区間に含まれる場合には、前記イベント情報を前記第一の処理対象とし、含まれない場合には、前記イベント情報と前記イベント情報から生成された前記キーとを、他の情報処理装置に送信する情報転送手段と、をさらに備え、前記情報転送手段は、他の情報処理装置から前記端区間を受信した場合に、前記上限または下限が前記自区間の上限または下限と一致しない場合には前記端区間を他の情報処理装置に送信し、前記処理対象情報格納手段は、前記受信した区間の上限または下限が前記自区間の上限または下限と一致する場合には前記自区間に前記端区間を加えた区間を前記自区間記憶手段に記憶させる付記2に記載の情報処理装置。
(付記4)
前記キー情報生成手段は、前記属性名と前記属性値の取り得る値の範囲とを含む情報であるサブスクリプション情報を受信した場合に、前記属性名及び前記属性値のいずれか1つの属性名とそれに対応する属性値とから登録キーを生成し、前記処理対象情報格納手段は、前記登録キーが前記自区間に含まれる場合に、前記サブスクリプション情報に含まれる前記属性名及び前記属性値の取り得る値の範囲から生成されるキー範囲をイベント条件として保持し、前記処理対象判定手段は、前記キーが前記自区間に含まれる場合に前記イベント条件を検索する前記第一の処理を実行し、前記イベント条件に前記キーが含まれる場合に前記イベント情報を第二の処理対象とする付記3のいずれかに記載の情報処理装置。
(付記5)
前記情報転送手段は、前記属性名のうち、受信した前記イベント情報または前記サブスクリプション情報に含まれる頻度が所定値以上の属性名が存在する場合、前記自区間を3つの区間に分割し、分割された区間のうち下限を含む第1の区間と、上限を含む第2の区間を他の情報処理装置に送信し、前記処理対象情報格納手段は、前記情報転送手段が送信していない区間を自装置に割り当てる付記3乃至4のいずれかに記載の情報処理装置。
(付記6)
前記情報転送手段は、前記属性名のうち、受信した前記イベント情報または前記サブスクリプション情報に含まれる頻度が所定値以上の属性名が存在する場合、前記自区間を2つの区間に分割し、分割された区間のうち下限または上限を含む一方の区間を他の情報処理装置に送信し、前記処理対象情報格納手段は、前記情報転送手段が送信していない他方の区間を自装置に割り当てる請求項3乃至4のいずれかに記載の情報処理装置。
(付記7)
前記属性名が任意の長さの文字列で表される請求項1乃至6のいずれかに記載の情報処理装置。
(付記8)
前記自区間記憶手段は、自区間の上限及び下限を記憶し、前記判定手段は、前記自区間の上限の生成に用いられた属性名と下限の生成に用いられた属性名との順序関係が前記予め定められた順序関係と一致しない場合、前記生成されるキーが前記下限と比較して小さい又は前記上限と比較して大きい場合に前記生成されるキーが自区間に含まれると判定する、請求項1乃至7のいずれかに記載の情報処理装置。
(付記9)
属性名と属性値とに基づいて生成される大小比較可能な形式であるキーの値の範囲が複数区間に分割された各区間のうち、自装置に割り当てられた区間(自区間)以外の各区間を割り当てられた他の情報処理装置と接続され、前記属性名と前記属性値とを含む情報であるイベント情報を受信した場合、該イベント情報に含まれる前記属性名と前記属性値とから生成される前記キーが前記自区間に含まれる場合に前記イベント情報を第一の処理対象とする処理対象判定手段と、前記属性名のうち、受信した前記イベント情報に含まれる頻度が所定値以上の属性名が存在する場合、前記自区間を2以上の区間に分割し、分割された区間のうち下限または上限を含む区間(端区間)を、前記端区間に隣接する区間を割り当てられ前記端区間を受信すると前記区間に前記端区間を加えた区間を自装置に割り当てる他の情報処理装置に送信する情報転送手段と、前記情報転送手段が送信した端区間以外の少なくとも1つの区間を自装置に割り当てる処理対象情報格納手段と、を備える情報処理装置。
(付記10)
属性名と属性値とを用いて、少なくとも2以上の属性名について予め定められた順序関係に基づいて生成される大小比較可能な形式であるキーの範囲が互いに隣接するように複数に分割された各区間のうちの少なくともひとつ以上の区間である自区間を記憶する自区間記億手段を備える情報処理装置に、属性名と属性値とから生成されるキーが前記自区間に含まれるか否かを判定する判定ステップを実行させる情報処理プログラム。
(付記11)
属性名と属性値とを含む情報であるイベント情報を受信する受信ステップと、前記属性名のうち、受信した前記イベント情報に含まれる頻度が所定値以上の属性名が存在する場合、前記自区間の分割された区間であって下限または上限を含む区間である端区間を、前記端区間に隣接する区間を記憶する他の情報処理装置へ送信する区間情報転送ステップと、他の情報処理装置から自区間に隣接する区間を受信する区間情報受信ステップと、前記送信した端区間と前記区間情報受信ステップにおいて受信した区間の一方もしくは両方を用いて前記自区間記憶手段を更新する処理対象情報格納ステップと、をさらに情報処理装置に実行させる付記10に記載の情報処理プログラム。
(付記12)
前記イベント情報を受信した場合に、前記イベント情報に含まれる属性名と属性値とに基づいて、大小比較可能な形式であるキーを生成するキー情報生成ステップと、生成された前記キーが前記自区間に含まれる場合には、前記イベント情報を前記第一の処理対象とし、含まれない場合には、前記イベント情報と前記イベント情報から生成された前記キーとを、他の情報処理装置に送信する情報転送ステップと、をさらに備え、前記情報転送ステップにおいて、他の情報処理装置から前記端区間を受信した場合に、前記上限または下限が前記自区間の上限または下限と一致しない場合には前記端区間を他の情報処理装置に送信し、前記処理対象情報格納ステップにおいて、前記受信した区間の上限または下限が前記自区間の上限または下限と一致する場合には前記自区間に前記端区間を加えた区間を前記自区間記憶手段に記憶する記憶ステップを情報処理装置に実行させる付記11に記載の情報処理プログラム。
(付記13)
前記キー情報生成ステップにおいて、前記属性名と前記属性値の取り得る値の範囲とを含む情報であるサブスクリプション情報を受信した場合に、前記属性名及び前記属性値のいずれか1つの属性名とそれに対応する属性値とから登録キーを生成し、前記処理対象情報格納ステップにおいて、前記登録キーが前記自区間に含まれる場合に、前記サブスクリプション情報に含まれる前記属性名及び前記属性値の取り得る値の範囲から生成されるキー範囲をイベント条件として保持し、前記処理対象判定ステップにおいて、前記キーが前記自区間に含まれる場合に前記イベント条件を検索する前記第一の処理を実行し、前記イベント条件に前記キーが含まれる場合に前記イベント情報を第二の処理対象とする付記12に記載の情報処理プログラム。
(付記14)
前記情報転送ステップにおいて、前記属性名のうち、受信した前記イベント情報または前記サブスクリプション情報に含まれる頻度が所定値以上の属性名が存在する場合、前記自区間を3つの区間に分割し、分割された区間のうち下限を含む第1の区間と、上限を含む第2の区間を他の情報処理装置に送信し、前記処理対象情報格納ステップにおいて、前記情報転送ステップにおいて送信していない区間を自装置に割り当てる付記12乃至13のいずれかに記載の情報処理プログラム。
(付記15)
前記情報転送ステップにおいて、前記属性名のうち、受信した前記イベント情報または前記サブスクリプション情報に含まれる頻度が所定値以上の属性名が存在する場合、前記自区間を2つの区間に分割し、分割された区間のうち下限または上限を含む一方の区間を他の情報処理装置に送信し、前記処理対象情報格納ステップにおいて、前記情報転送ステップにおいて送信していない他方の区間を自装置に割り当てる付記12乃至13のいずれかに記載の情報処理プログラム。
(付記16)
前記自区間記憶手段は、自区間の上限及び下限を記憶し、前記判定ステップにおいて、前記自区間の上限の生成に用いられた属性名と下限の生成に用いられた属性名との順序関係が前記予め定められた順序関係と一致しない場合、前記生成されるキーが前記下限と比較して小さい又は前記上限と比較して大きい場合に前記生成されるキーが自区間に含まれると判定する、付記10乃至15のいずれかに記載の情報処理プログラム。
(付記17)
属性名と属性値とに基づいて生成される大小比較可能な形式であるキーの値の範囲が複数区間に分割された各区間のうち、自装置に割り当てられた区間(自区間)以外の各区間を割り当てられた他の情報処理装置と接続されたコンピュータに、前記属性名と前記属性値とを含む情報であるイベント情報を受信した場合、該イベント情報に含まれる前記属性名と前記属性値とから生成される前記キーが前記自区間に含まれる場合に前記イベント情報を第一の処理対象とする処理対象判定ステップと、前記属性名のうち、受信した前記イベント情報に含まれる頻度が所定値以上の属性名が存在する場合、前記自区間を2以上の区間に分割し、分割された区間のうち下限または上限を含む区間(端区間)を、前記端区間に隣接する区間を割り当てられ前記端区間を受信すると前記区間に前記端区間を加えた区間を自装置に割り当てる他の情報処理装置に送信する情報転送ステップと、
前記情報転送ステップにおいて送信した端区間以外の少なくとも1つの区間を自装置に割り当てる処理対象情報格納ステップと、を実行させる情報処理プログラム。
(付記18)
属性名と属性値とを用いて、少なくとも2以上の属性名について予め定められた順序関係に基づいて生成される大小比較可能な形式であるキーの範囲が互いに隣接するように複数に分割された各区間のうちの少なくともひとつ以上の区間である自区間を記憶する自区間記億手段を備える情報処理装置が、属性名と属性値とから生成されるキーが前記自区間に含まれるか否かを判定する情報処理方法。
(付記19)
属性名と属性値とを含む情報であるイベント情報を受信し、前記属性名のうち、受信した前記イベント情報に含まれる頻度が所定値以上の属性名が存在する場合、前記自区間の分割された区間であって下限または上限を含む区間である端区間を、前記端区間に隣接する区間を記憶する他の情報処理装置へ送信し、他の情報処理装置から自区間に隣接する区間を受信し、受信した区間の一方もしくは両方を用いて前記自区間記憶手段を更新する付記18に記載の情報処理方法。
(付記20)
前記イベント情報を受信した場合に、前記イベント情報に含まれる属性名と属性値とに基づいて、大小比較可能な形式であるキーを生成し、生成された前記キーが前記自区間に含まれる場合には、前記イベント情報を前記第一の処理対象とし、含まれない場合には、前記イベント情報と前記イベント情報から生成された前記キーとを、他の情報処理装置に送信し、他の情報処理装置から前記端区間を受信した場合に、前記上限または下限が前記自区間の上限または下限と一致しない場合には前記端区間を他の情報処理装置に送信し、前記受信した区間の上限または下限が前記自区間の上限または下限と一致する場合には前記自区間に前記端区間を加えた区間を前記自区間記憶手段に記憶する付記19に記載の情報処理方法。
(付記21)
前記属性名と前記属性値の取り得る値の範囲とを含む情報であるサブスクリプション情報を受信した場合に、前記属性名及び前記属性値のいずれか1つの属性名とそれに対応する属性値とから登録キーを生成し、前記登録キーが前記自区間に含まれる場合に、前記サブスクリプション情報に含まれる前記属性名及び前記属性値の取り得る値の範囲から生成されるキー範囲をイベント条件として保持し、前記キーが前記自区間に含まれる場合に前記イベント条件を検索する前記第一の処理を実行し、前記イベント条件に前記キーが含まれる場合に前記イベント情報を第二の処理対象とする付記20に記載の情報処理プログラム。
(付記22)
前記属性名のうち、受信した前記イベント情報または前記サブスクリプション情報に含まれる頻度が所定値以上の属性名が存在する場合、前記自区間を3つの区間に分割し、分割された区間のうち下限を含む第1の区間と、上限を含む第2の区間を他の情報処理装置に送信し、送信していない区間を自装置に割り当てる付記20乃至21のいずれかに記載の情報処理方法。
(付記23)
前記属性名のうち、受信した前記イベント情報または前記サブスクリプション情報に含まれる頻度が所定値以上の属性名が存在する場合、前記自区間を2つの区間に分割し、分割された区間のうち下限または上限を含む一方の区間を他の情報処理装置に送信し、送信していない他方の区間を自装置に割り当てる付記20乃至21のいずれかに記載の情報処理方法。
(付記24)
前記自区間記憶手段は、自区間の上限及び下限を記憶し、前記自区間の上限の生成に用いられた属性名と下限の生成に用いられた属性名との順序関係が前記予め定められた順序関係と一致しない場合、前記生成されるキーが前記下限と比較して小さい又は前記上限と比較して大きい場合に前記生成されるキーが自区間に含まれると判定する、付記18乃至23のいずれかに記載の情報処理方法。
(付記25)
属性名と属性値とに基づいて生成される大小比較可能な形式であるキーの値の範囲が複数区間に分割された各区間のうち、自装置に割り当てられた区間(自区間)以外の各区間を割り当てられた他の情報処理装置と接続された情報処理装置が、前記属性名と前記属性値とを含む情報であるイベント情報を受信した場合、該イベント情報に含まれる前記属性名と前記属性値とから生成される前記キーが前記自区間に含まれる場合に前記イベント情報を第一の処理対象とし、前記属性名のうち、受信した前記イベント情報に含まれる頻度が所定値以上の属性名が存在する場合、前記自区間を2以上の区間に分割し、分割された区間のうち下限または上限を含む区間(端区間)を、前記端区間に隣接する区間を割り当てられ前記端区間を受信すると前記区間に前記端区間を加えた区間を自装置に割り当てる他の情報処理装置に送信し、前記情報転送手段が送信した端区間以外の少なくとも1つの区間を自装置に割り当てる情報処理装置の制御方法。
(付記26)
付記1から9のいずれかに記載の情報処理装置と、
前記自装置に割り当てられた区間以外の各区間を割り当てられた他の情報処理装置と、
を接続してなる情報処理システム。
実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解しうる様々な変更をすることができる。
この出願は、2010年11月2日に出願された日本出願特願2010−245766を基礎とする優先権を主張し、その開示の全てをここに取り込む。
5 情報処理装置
11 サブスクリプション転送情報生成部
12 イベント転送情報生成部
13 メッセージ判定部
14 サブスクリプション配置制御部
15 サブスクリプション管理部
16 イベント条件合致判定部
17 メッセージ転送部
51 キー情報生成部
52 処理対象判定部
53 処理対象情報格納部
54 情報転送部

Claims (9)

  1. 属性名と属性値とを用いて、少なくとも2以上の属性名について予め定められた順序関係に基づいて生成される大小比較可能な形式であるキーの範囲が互いに隣接するように複数に分割された各区間のうちの少なくともひとつ以上の区間である自区間を記憶する自区間記憶手段と、
    属性名と属性値とから生成されるキーが前記自区間に含まれるか否かを判定する判定手段と、
    属性名と属性値とを含む情報であるイベント情報を受信する受信手段と、
    前記属性名のうち、受信した前記イベント情報に含まれる頻度が所定値以上の属性名が存在する場合、前記自区間の分割された区間であって下限または上限を含む区間である端区間を、前記端区間に隣接する区間を記憶する他の情報処理装置へ送信する区間情報転送手段と、
    他の情報処理装置から自区間に隣接する区間を受信する区間情報受信手段と、
    前記送信した端区間と前記区間情報受信手段で受信した区間の一方もしくは両方を用いて自区間記憶手段を更新する処理対象情報格納手段と、を備える情報処理装置。
  2. 前記イベント情報を受信した場合に、前記イベント情報に含まれる属性名と属性値とに基づいて、大小比較可能な形式であるキーを生成するキー情報生成手段と、
    生成された前記キーが前記自区間に含まれる場合には、前記イベント情報を前記第一の処理対象とし、含まれない場合には、前記イベント情報と前記イベント情報から生成された前記キーとを、他の情報処理装置に送信する情報転送手段と、
    をさらに備え、
    前記情報転送手段は、
    他の情報処理装置から前記端区間を受信した場合に、前記上限または下限が前記自区間の上限または下限と一致しない場合には前記端区間を他の情報処理装置に送信し、
    前記処理対象情報格納手段は、
    前記受信した区間の上限または下限が前記自区間の上限または下限と一致する場合には前記自区間に前記端区間を加えた区間を前記自区間記憶手段に記憶させる請求項1に記載の情報処理装置。
  3. 前記キー情報生成手段は、前記属性名と前記属性値の取り得る値の範囲とを含む情報であるサブスクリプション情報を受信した場合に、前記属性名及び前記属性値のいずれか1つの属性名とそれに対応する属性値とから登録キーを生成し、
    前記処理対象情報格納手段は、前記登録キーが前記自区間に含まれる場合に、前記サブスクリプション情報に含まれる前記属性名及び前記属性値の取り得る値の範囲から生成されるキー範囲をイベント条件として保持し、
    前記処理対象判定手段は、前記キーが前記自区間に含まれる場合に前記イベント条件を検索する前記第一の処理を実行し、前記イベント条件に前記キーが含まれる場合に前記イベント情報を第二の処理対象とする
    請求項2に記載の情報処理装置。
  4. 前記情報転送手段は、前記属性名のうち、受信した前記イベント情報または前記サブスクリプション情報に含まれる頻度が所定値以上の属性名が存在する場合、前記自区間を3つの区間に分割し、分割された区間のうち下限を含む第1の区間と、上限を含む第2の区間を他の情報処理装置に送信し、
    前記処理対象情報格納手段は、前記情報転送手段が送信していない区間を自装置に割り当てる請求項3に記載の情報処理装置。
  5. 前記属性名が任意の長さの文字列で表される請求項1乃至4のいずれかに記載の情報処理装置。
  6. 前記自区間記憶手段は、自区間の上限及び下限を記憶し、前記判定手段は、前記自区間の上限の生成に用いられた属性名と下限の生成に用いられた属性名との順序関係が前記予め定められた順序関係と一致しない場合、前記生成されるキーが前記下限と比較して小さい又は前記上限と比較して大きい場合に前記生成されるキーが自区間に含まれると判定する、請求項1乃至5のいずれかに記載の情報処理装置。
  7. 請求項1から6のいずれかに記載の情報処理装置と、
    前記自装置に割り当てられた区間以外の各区間を割り当てられた他の情報処理装置と、を接続してなる情報処理システム。
  8. 属性名と属性値とを用いて、少なくとも2以上の属性名について予め定められた順序関係に基づいて生成される大小比較可能な形式であるキーの範囲が互いに隣接するように複数に分割された各区間のうちの少なくともひとつ以上の区間である自区間を記憶する自区間記憶手段を備える情報処理装置に、
    属性名と属性値とから生成されるキーが前記自区間に含まれるか否かを判定する判定ステップと、
    属性名と属性値とを含む情報であるイベント情報を受信するステップと、
    前記属性名のうち、受信した前記イベント情報に含まれる頻度が所定値以上の属性名が存在する場合、前記自区間の分割された区間であって下限または上限を含む区間である端区間を、前記端区間に隣接する区間を記憶する他の情報処理装置へ送信するステップと、
    他の情報処理装置から自区間に隣接する区間を受信するステップと、
    前記送信した端区間と前記受信した区間の一方もしくは両方を用いて自区間記憶手段を更新するステップとを実行させる情報処理プログラム。
  9. 属性名と属性値とを用いて、少なくとも2以上の属性名について予め定められた順序関係に基づいて生成される大小比較可能な形式であるキーの範囲が互いに隣接するように複数に分割された各区間のうちの少なくともひとつ以上の区間である自区間を記憶する自区間記憶手段を備える情報処理装置が、
    属性名と属性値とから生成されるキーが前記自区間に含まれるか否かを判定し、
    属性名と属性値とを含む情報であるイベント情報を受信し、
    前記属性名のうち、受信した前記イベント情報に含まれる頻度が所定値以上の属性名が存在する場合、前記自区間の分割された区間であって下限または上限を含む区間である端区間を、前記端区間に隣接する区間を記憶する他の情報処理装置へ送信し、
    他の情報処理装置から自区間に隣接する区間を受信し、
    前記送信した端区間と前記受信した区間の一方もしくは両方を用いて自区間記憶手段を更新する情報処理方法。
JP2012541919A 2010-11-02 2011-11-01 情報処理装置、システム、制御方法およびプログラム Active JP5867407B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012541919A JP5867407B2 (ja) 2010-11-02 2011-11-01 情報処理装置、システム、制御方法およびプログラム

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2010245766 2010-11-02
JP2010245766 2010-11-02
JP2012541919A JP5867407B2 (ja) 2010-11-02 2011-11-01 情報処理装置、システム、制御方法およびプログラム
PCT/JP2011/075646 WO2012060465A1 (ja) 2010-11-02 2011-11-01 情報処理装置、システム、制御方法およびプログラム

Publications (2)

Publication Number Publication Date
JPWO2012060465A1 JPWO2012060465A1 (ja) 2014-05-12
JP5867407B2 true JP5867407B2 (ja) 2016-02-24

Family

ID=46024577

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012541919A Active JP5867407B2 (ja) 2010-11-02 2011-11-01 情報処理装置、システム、制御方法およびプログラム

Country Status (3)

Country Link
US (1) US8973015B2 (ja)
JP (1) JP5867407B2 (ja)
WO (1) WO2012060465A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6380517B2 (ja) 2016-12-15 2018-08-29 オムロン株式会社 制御装置、センサ管理装置、制御方法、センサ管理方法およびプログラム

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007156700A (ja) * 2005-12-02 2007-06-21 Mitsubishi Electric Corp 情報検索方法、情報登録方法およびネットワークサービス情報検索システム
JP2008005449A (ja) * 2006-06-26 2008-01-10 Nippon Telegr & Teleph Corp <Ntt> 分散データの管理方法および管理システム
JP2009020757A (ja) * 2007-07-12 2009-01-29 Toshiba Corp データ登録装置、データ登録方法及びプログラム

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009295127A (ja) * 2008-06-09 2009-12-17 Nippon Telegr & Teleph Corp <Ntt> アクセス方法、アクセス装置及び分散データ管理システム
US9037554B2 (en) * 2009-06-30 2015-05-19 Oracle America, Inc. Bloom bounders for improved computer system performance
US20110153953A1 (en) * 2009-12-23 2011-06-23 Prakash Khemani Systems and methods for managing large cache services in a multi-core system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007156700A (ja) * 2005-12-02 2007-06-21 Mitsubishi Electric Corp 情報検索方法、情報登録方法およびネットワークサービス情報検索システム
JP2008005449A (ja) * 2006-06-26 2008-01-10 Nippon Telegr & Teleph Corp <Ntt> 分散データの管理方法および管理システム
JP2009020757A (ja) * 2007-07-12 2009-01-29 Toshiba Corp データ登録装置、データ登録方法及びプログラム

Also Published As

Publication number Publication date
JPWO2012060465A1 (ja) 2014-05-12
US8973015B2 (en) 2015-03-03
US20130219414A1 (en) 2013-08-22
WO2012060465A1 (ja) 2012-05-10

Similar Documents

Publication Publication Date Title
US10545914B2 (en) Distributed object storage
JP5625998B2 (ja) 情報処理システム
JP4696089B2 (ja) 分散ストレージシステム
RU2400806C2 (ru) Организация стыковки запросов на ресурс с соответствующими ресурсами
JP6534402B2 (ja) データ品質例外を処理するための方法、コンピュータ・プログラム、および例外エンジン
US9641598B1 (en) Contextually unique identifier generation service
US20090154476A1 (en) Overlay network system which constructs and maintains an overlay network
JP5724880B2 (ja) 情報処理システム、制御方法およびプログラム
WO2022267175A1 (zh) 信息处理方法、装置、计算机设备及存储介质
JP2016116184A (ja) 網監視装置および仮想ネットワーク管理方法
JPWO2018142700A1 (ja) 制御装置、制御方法、及びプログラム
US10673713B2 (en) Communication control device, communication device, and computer program product for dynamic group management
JP2019070967A (ja) 情報収集システム、情報収集方法、及び情報収集プログラム
JP5765441B2 (ja) 情報処理装置、データ管理方法およびプログラム
JP5867407B2 (ja) 情報処理装置、システム、制御方法およびプログラム
JP5949561B2 (ja) 情報処理装置、情報処理システム、情報処理方法および情報処理プログラム
CN114415971B (zh) 数据处理方法以及装置
JP6127900B2 (ja) パケット処理装置、パケット処理方法、パケット処理プログラム
JP2019101801A (ja) インタフェース集約装置及びインタフェース管理方法
US11362937B2 (en) Location-aware routing for east-west data traffic
JP2021027389A (ja) 通信プログラム、通信方法および通信装置
WO2013027784A1 (ja) データ処理装置、データ分散処理システム、データ処理方法およびプログラム記憶媒体
JP2006268588A (ja) クライアントサーバシステムおよびクライアントサーバシステムのデータ処理方法
EP3582457B1 (en) Communication device and communication method
CN116827940A (zh) 一种数据处理方法、装置、设备及存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20141017

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150929

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151102

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20151208

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20151221

R150 Certificate of patent or registration of utility model

Ref document number: 5867407

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150