説明

分散処理制御装置、分散処理制御方法及びそのためのプログラム

【課題】 イベントデータの発生頻度やイベント条件の更新頻度などが異なる、それぞれのユースケースに適した分散処理装置特定方法を選択することが困難である。
【解決手段】 与えられた引数に対して特定のキー空間のキー値を返す装置特定関数を複数保持し、装置特定関数それぞれについて、複数の特定の引数に対するキー値の分散を算出し、算出した前記分散に基づいて前記装置特定関数の分散度を算出し、第1のデータブロックの入力頻度と第1のデータブロックが特定の第1のデータブロックであるか否かを判定する条件の情報を含む第2のデータブロックの入力頻度との比と、分散度と、に基づいて複数の装置特定関数の内のいずれか1つを選択する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、分散処理制御装置、分散処理制御方法及びそのためのプログラムに関し、特に複数の分散処理装置がイベントデータを処理するイベント処理システムの分散処理制御装置、分散処理制御方法及びそのためのプログラムに関する。
【背景技術】
【0002】
分散処理に関し、さまざまな関連技術が知られている。
【0003】
例えば、特許文献1は、分散データベース管理システムの一例を開示する。その分散データベース管理システムは、水平垂直分散を組みあわせて、複数のデータベース管理装置がデータを分散配置する。各データベース管理装置は、データを格納するべきデータベース管理装置を、ハッシュ関数を用いて特定する。
【0004】
そのハッシュ関数は、特定のデータベース管理装置のハッシュ関数演算部で算出され、他のデータベース管理装置に配布される。ハッシュ関数演算部は、統計情報を用いて、今後入力される断片レコードのキー値の集合を均一に分散するようなハッシュ関数を決定する。ここで、統計情報は、既に入力された断片レコードの、値のヒストグラムなどである。
【0005】
ハッシュ関数の決定方法については、SHA-1(Secure Hash Algorithm 1)、MD5(Message Digest 5)などが知られている。
【0006】
また、非特許文献1は、複数のノードでデータを管理する場合の負荷分散方法の一例を開示する。その負荷分散方法は、予め定められた値の範囲を分散処理装置数に分割し、分割した値の範囲と各分散処理装置とを一対一に対応付ける。その対応付けに基づいて、各分散処理装置は、データを転送すべき分散処理装置を特定する。
【0007】
その分散処理装置により構成されるイベント処理システムについて説明する。
【0008】
そのイベント処理システムは、複数の分散処理装置と各分散処理装置を互いに接続するLAN(Local Area Network)ケーブルなどの伝送媒体で構成される。例えば、そのイベント処理システムは、位置情報や時間情報など連続した値を扱う場合、非特許文献1の負荷分散方法を用いる。
【0009】
そのイベント処理システムの入力は、イベントデータとイベント条件である。イベントデータは、イベント処理システムの外部システムで刻一刻と生成され、イベント処理システム上に構築されたアプリケーションで処理されるデータである。イベントデータには、そのイベントデータが生成された時間や、そのイベントデータが生成された場所などの動的に変化する状況情報の値が、記述されている。
【0010】
イベント条件は、イベント処理システムの外部システムから指定される、あるイベントデータが特定のイベントデータであるか否かを判定する条件である。具体的には、イベント条件は、上述のイベントデータに記述されている状況情報の範囲を指定する値である。
【0011】
そのイベント処理システムは、イベントデータを受信した際に、そのイベント処理システム内のある特定の分散処理装置において、イベントデータとイベント条件とが合致しているか否かを判定する。ここで、特定の分散処理装置は、前述の対応付けをされた値の範囲に、受信したイベントデータの値を含む、分散処理装置である。
【0012】
各分散処理装置は、イベントデータやイベント条件を受信すると、イベントデータに記述された値、或いはイベント条件で指定された値に基づいて、そのイベントデータ或いはそのイベント条件を合致判定処理する先の、分散処理装置を特定する。尚、イベントデータやイベント条件を受信した分散処理装置と合致判定処理する先の分散処理装置とが同じ場合もある。
【先行技術文献】
【特許文献】
【0013】
【特許文献1】特開2006−350741号公報
【非特許文献】
【0014】
【非特許文献1】Ashwin R. Bharambe, Sanjay Rao, Srinivasan Seshan, “Mercury: Supporting Scalable Multi-Attribute Range Queries”, In Proc. of 1st Workshop on Network and System Support for Games(NetGames2002) ,pp.3-9, 2002.
【発明の概要】
【発明が解決しようとする課題】
【0015】
しかしながら、上述した文献に記載された技術においては、イベントデータの発生頻度やイベント条件の更新頻度などが異なる、それぞれのユースケースに適した分散処理装置特定方法を選択することが困難であるという問題点がある。
【0016】
その理由は、ユースケースに基づいて分散処理装置特定方法を評価する手段がないためである。
【0017】
上述の問題点を具体的に説明する。
【0018】
例えば、特許文献1のデータベース管理装置は、複数の断片レコードが複数のデータベース管理装置に常に均一に格納されるようにするために、断片レコードのキー値の集合を均一に分布するハッシュ値にする、ハッシュ関数を決定する。即ち、そのデータベース管理装置は、複数の断片レコードがどのようなユースケースで発生するかに係わらず、その複数の断片レコードを均一に分布させるような分散処理装置特定方法を、常に選択するという問題点がある。
【0019】
また、非特許文献1の負荷分散方法は、システム管理者が、固有の評価基準に基づいて、任意に分散処理装置特定方法を選択する。即ち、その負荷分散方法は、必ずしも、ユースケースに適していない分散処理装置特定方法であるとは限らないという問題点がある。
【0020】
ここで、選択された分散処理装置特定方法がユースケースに適していないことによる問題について説明する。
【0021】
その問題は、例えば、イベントデータの発生頻度が低いにも拘らず、処理の分散が必要以上に行われる問題である。即ち、処理を分散させすぎる分散処理装置特定方法が選択されると、イベント条件を配置する先の分散処理装置数が不必要に増大する。そして、その分、イベント条件の更新に対する即応性が悪化する。
【0022】
また、その問題は、イベントデータの発生頻度が高いにも拘らず、処理の分散が不十分であるという問題である。この場合、イベント条件の更新に対する即応性は、保たれる。しかし、処理を十分に分散させない分散処理装置特定方法が選択されると、イベントデータを処理する先の分散処理装置の負荷が高くなる。そして、処理性能が悪化する問題である。
【0023】
次に、上述の非特許文献1の負荷分散方法を用いたイベント処理システムについて、前述の問題点を具体的に説明する。
【0024】
まず、非特許文献1の負荷分散方法を用いたイベント処理システムの、基本動作を説明する。
そのイベント処理システムは、予め定められた時間範囲をいくつかの時間範囲に分割すると共に、その分割した時間範囲を各分散処理装置に割り当てる。
【0025】
そして、外部システムからイベントデータを受信した際、そのイベント処理システムは、複数の分散処理装置の中から処理する先の分散処理装置を1つ特定する。続けて、特定された分散処理装置は、その受信したイベントデータに対する処理を行う。こうして処理を分散することで、そのイベント処理システムは、各分散処理装置あたりの負荷を軽減している。
【0026】
そのイベント処理システムのいずれかの第1の分散処理装置は、外部システムからイベントデータを受信すると、そのイベントデータを処理する先のいずれかの第2の分散処理装置を特定する。ここで、第1の分散処理装置は、そのイベントデータに記述されている時間を、割り当てられている時間範囲に含む分散処理装置を、第2の分散処理装置として特定する。次に、第1の分散処理装置は、そのイベントデータを第2の分散処理装置へ配送する。
【0027】
第2の分散処理装置は、配送されたイベントデータをイベントデータ処理手段で処理する。尚、第2の分散処理装置は、第1の分散処理装置であってもよい。この場合、第1の分散処理装置は、そのイベントデータを自身のイベントデータ処理手段で処理する。
【0028】
また、そのイベント処理システムのいずれかの第1の分散処理装置は、外部システムからイベント条件を受信すると、そのイベント条件を処理する先のいずれかの第2の分散処理装置を特定する。ここで、第1の分散処理装置は、そのイベント条件で指定されている時間範囲にオーバーラップする時間範囲が割り当てられている分散処理装置を、第2の分散処理装置として特定する。次に、第1の分散処理装置は、そのイベント条件を第2の分散処理装置へ配送する。
【0029】
第2の分散処理装置は、配送されたイベント条件を保持する。尚、第2の分散処理装置は、第1の分散処理装置であってもよい。この場合、第1の分散処理装置は、そのイベント条件を自身で保持する。
【0030】
分散処理装置のイベントデータ処理手段は、配送されたイベントデータが、保持しているイベント条件に合致しているか否かの判定(合致判定処理)を行う。
【0031】
例えば、イベント処理システムが、4台の分散処理装置で構成されているとする。 そのイベント処理システムは、4台の分散処理装置それぞれを、0時から6時間ごとに均等に割り当てる。例えば、“2011年2月28日9:00から2011年2月28日12:00”と指定したイベント条件が、イベント処理システムに入力された場合、イベント処理システム内のある第1の分散処理装置は、そのイベント条件を受信する。次に第1の分散処理装置は、6時から12時を割り当てられた第2の分散処理装置にイベント条件を送信する。
【0032】
第2の分散処理装置は、送信されたイベント条件を保持する。
【0033】
次に、時間情報に“2011年2月28日10:30”と記述されたイベントデータが、イベント処理システムに入力された場合、イベント処理システム内のある第1の分散処理装置は、そのイベントデータを受信する。次に、第1の分散処理装置は、6時から12時を割り当てられた第2の分散処理装置にイベントデータを送信する。
【0034】
第2の分散処理装置は、受信したイベントデータと保持しているイベント条件との合致判定処理を行う。例えば、イベントデータ(時間情報が“2011年2月28日10:30”)は、イベント条件(時間情報が“2011年2月28日9:00から2011年2月28日12:00”)に、合致する。
【0035】
次に、イベントデータの発生頻度が低いユースケースにおいて、処理の分散が必要以上に行われる分散処理装置特定方法が選択されることにより、イベント条件の更新(登録、削除、変更)の即応性が悪化する場合の例を、説明する。
【0036】
そのイベント処理システムは、定められた時間範囲をより細かく分割し、隣り合った時間範囲を別の分散処理装置に割り当てることで、処理の分散を大きくできる。なぜならば、定められた時間範囲をより細かく分割することは、ある時間範囲内に発生したイベントデータが配送される先の、分散処理装置を増加させることになるからである。
【0037】
例えば、イベント処理システムは、各分散処理装置を、前述の6時間ごとではなく、1時間ごとに均等に割り当てる。この場合、イベント処理システムは、4台の分散処理装置それぞれを、0時から順に、1時間ごとの時間範囲を順に割り当てる。つまり、イベント処理システムは、全ての分散処理装置それぞれを、4時までの時間範囲に割り当てる。更に、イベント処理システムは、4時以降は、再度1台目の分散処理装置から順に1時間の時間範囲を割り当てる。
【0038】
例えば、6時から12時に発生するイベントデータは、前述の6時間ごとの例では1台の分散処理装置で処理されていた。しかし、この例では、定められた時間範囲を1時間ごとに分割したことによって、そのイベントデータは、4台の分散処理装置で処理される。従って、この1時間ごとの例では、前述の6時間後との例に比べて、処理の分散がより大きい。
【0039】
しかし、例えば“2011年2月28日9:00から2011年2月28日12:00”と指定したイベント条件は、“9:00から“9:59、“10:00から“10:59、“11:00から“11:59、“12:00から“12:59が割り当てられた4台の分散処理装置で保持される。各分散処理装置で保持されるイベント条件は、同期を取って更新される必要がある。従って、4台の分散処理装置でイベント条件を保持することは、例えば2台の分散処理装置でイベント条件を保持することに比べて、更新時の即応性が悪化する。
【0040】
次に、イベントデータの発生頻度が高いユースケースにおいて、処理の分散が不十分な分散処理装置特定方法が選択されイベントデータを処理する先の分散処理装置の負荷が高くなり、処理性能が悪化する場合の例を、説明する。
【0041】
イベント処理システムは、定められた時間範囲をより粗く分割し、隣り合った時間範囲を同じ分散処理装置に割り当てることで、イベント条件を保持する先の分散処理装置を集約できる。なぜならば、定められた時間範囲をより粗く分割することは、ある時間範囲を指定したイベント条件が配送される先の、分散処理装置が減少することになるからである。しかし、イベントデータを処理する先の分散処理装置数も減少し、それらの分散処理装置の負荷が高くなり、処理性能が悪化する。
【0042】
上述のように、時間情報のように連続する値を、その値の順に従って扱う非特許文献1の負荷分散方法を適用したイベント処理システムは、イベントデータやイベント条件がどの程度分散されるかを評価する指標を得ることができない。そのため、そのイベント処理システムは、ユースケースに適した分散処理装置特定方法を選択することができない。
[目的]
【0043】
本発明の目的は、上述した問題点を解決する分散処理制御装置、分散処理制御方法及びそのためのプログラムを提供することにある。
【課題を解決するための手段】
【0044】
本発明の分散処理装置は、与えられた引数に対して特定のキー空間のキー値を返す装置特定関数を複数保持する装置特定関数保持手段と、前記装置特定関数それぞれについて、複数の特定の前記引数に対する前記キー値の分散を算出し、算出した前記分散に基づいて前記装置特定関数の分散度を算出し、出力する装置特定関数分散度算出手段と、第1のデータブロックの入力頻度と前記第1のデータブロックが特定の前記第1のデータブロックであるか否かを判定する条件の情報を含む第2のデータブロックの入力頻度との比と、前記分散度と、に基づいて複数の前記装置特定関数の内のいずれか1つを選択し、選択した前記装置特定関数を出力する装置特定関数決定手段と、を含む。
【0045】
本発明の分散処理装置方法は、コンピュータが、与えられた引数に対して特定のキー空間のキー値を返す装置特定関数を複数保持し、前記装置特定関数それぞれについて、複数の特定の前記引数に対する前記キー値の分散を算出し、算出した前記分散に基づいて前記装置特定関数の分散度を算出し、第1のデータブロックの入力頻度と前記第1のデータブロックが特定の前記第1のデータブロックであるか否かを判定する条件の情報を含む第2のデータブロックの入力頻度との比と、前記分散度と、に基づいて複数の前記装置特定関数の内のいずれか1つを選択し、選択した前記装置特定関数を出力する。
【0046】
本発明のプログラムは、与えられた引数に対して特定のキー空間のキー値を返す装置特定関数を複数保持する処理と、前記装置特定関数それぞれについて、複数の特定の前記引数に対する前記キー値の分散を算出し、算出した前記分散に基づいて前記装置特定関数の分散度を算出する処理と、第1のデータブロックの入力頻度と前記第1のデータブロックが特定の前記第1のデータブロックであるか否かを判定する条件の情報を含む第2のデータブロックの入力頻度との比と、前記分散度と、に基づいて複数の前記装置特定関数の内のいずれか1つを選択する処理と、選択した前記装置特定関数を出力する処理とを、コンピュータに実行させる。
【発明の効果】
【0047】
本発明は、イベントデータの発生頻度やイベント条件の更新頻度などが異なる、それぞれのユースケースに適した分散処理装置特定方法を選択することを可能にするという効果がある。
【図面の簡単な説明】
【0048】
【図1】図1は、本発明の第1の実施形態の分散処理装置の構成を示すブロック図である。
【図2】図2は、本発明の第1の実施形態の分散処理装置を含むイベント処理システムの構成を示すブロック図である。
【図3】図3は、本発明の第1の実施形態における装置特定関数の一例である。
【図4】図4は、本発明の第1の実施形態における分散処理装置とその周辺装置のハードウェア構成を示す図である。
【図5】図5は、本発明の第1の実施形態における分散処理装置の動作を示すフローチャートである。
【図6】図6は、本発明の第1の実施形態における分散度保持テーブルの一例を示す図である。
【図7】図7は、本発明の第1の実施形態における“h(l)”の算出結果の一例である。
【図8】図8は、本発明の第2の実施形態の分散処理装置の構成を示すブロック図である。
【図9】図9は、本発明の第3の実施形態の分散処理装置の構成を示すブロック図である。
【発明を実施するための形態】
【0049】
次に、本発明の実施形態について図面を参照して詳細に説明する。
[第1の実施の形態]
図1は、本発明の第1の実施形態の分散処理装置100の構成を示すブロック図である。
【0050】
図1を参照すると、本実施形態に係る分散処理装置100は、装置特定関数保持部110と装置特定関数分散度算出部120と装置特定関数決定部130とイベントデータ配信先装置特定部140とイベント条件配置先装置特定部150と合致判定処理部160とを含む。
【0051】
図2は、分散処理装置100を含むイベント処理システム500の構成を示すブロック図である。
【0052】
図2を参照すると、イベント処理システム500は、ネットワーク590を介して互いに接続された分散処理装置100、分散処理装置101、分散処理装置102及び分散処理装置103を含む。分散処理装置の台数は、本実施形態の例に係わらず任意の台数であってよい。以後、分散処理装置101、分散処理装置102及び分散処理装置103を総称して、分散処理装置101−103とも表記する。また、分散処理装置100及び分散処理装置101−103を総称して、分散処理装置100−103と表記する。
【0053】
尚、分散処理装置101−103それぞれは、少なくともイベントデータ配信先装置特定部140及びイベント条件配置先装置特定部150及び合致判定処理部160を含む。
【0054】
また、分散処理装置101−103の内の任意のものは、分散処理装置100と同じ構成であってもよい。そして、分散処理装置100と同じ構成を含む分散処理装置101−103は、以下に説明する分散処理装置100と同様の動作を実行してよい。
【0055】
また、イベント処理システム500は、分散処理装置100に接続された装置特定関数入力装置510、初期情報入力装置520、イベントデータ入力装置530、イベント条件入力装置540及び通知情報受信装置550を含む。
【0056】
尚、装置特定関数入力装置510、初期情報入力装置520、イベントデータ入力装置530、イベント条件入力装置540及び通知情報受信装置550の任意のものは、ネットワーク590に接続されてよい。そして、分散処理装置100−103は、ネットワーク590に接続された装置特定関数入力装置510、初期情報入力装置520、イベントデータ入力装置530、イベント条件入力装置540及び通知情報受信装置550と接続されてよい。
【0057】
装置特定関数入力装置510は、分散処理装置100に、装置特定関数(詳細は後述)を入力する。
【0058】
初期情報入力装置520は、分散処理装置100−103に、初期情報(詳細は後述)を入力する。
【0059】
イベントデータ入力装置530は、分散処理装置100−103に、イベントデータ(第1のデータブロックとも呼ばれる)を入力する。ここで、イベントデータは、そのイベントデータが生成された時間や、そのイベントデータが生成された場所などの動的に変化する、状況情報の値を含む。
【0060】
イベント条件入力装置540は、分散処理装置100−103に、イベント条件(第2のデータブロックとも呼ばれる)を入力する。ここで、イベント条件は、あるイベントデータが特定のイベントデータであるか否かを判定する条件として、イベントデータに記述されている状況情報の範囲を指定する値を含む。
【0061】
通知情報受信装置550は、分散処理装置100から、合致判定の結果(詳細は後述)を受け取る。
【0062】
次に、分散処理装置100−103について説明する。
【0063】
各分散処理装置100−103それぞれは、少なくとも起動時に、各分散処理装置100−103に割り当てられる分担キーを取得する。例えば、各分散処理装置100−103それぞれは、その分担キーの値を自律的に算出する。また、図示しない手段及び予め定められた分散処理装置100−103のいずれかが、その分担キーの値を算出し、他の分散処理装置100−103に通知するようにしてもよい。また、その分担キーは、例えば、初期情報入力装置520が入力する初期情報に含まれるようにしてもよい。
【0064】
ここで、分担キーは、例えば、“0”から“15”までの整数の16個である。
【0065】
この場合、例えば、分散処理装置100は分担キーの“0”〜“3”を、分散処理装置101は分担キーの“4”〜“7”を、分散処理装置102は分担キーの“8”〜“11”を、分散処理装置102は分担キーの“12”〜“15”を、割り当てられる。
【0066】
尚、分担キーは、上記以外の任意の連続する整数(例えば、“0”〜“23”、“0”〜“59”)であってよい。
【0067】
また、各分散処理装置100−103それぞれは、イベント処理システム500において実行する複数の処理それぞれについて、分担キーのいずれかに対応するキー値を算出する。ここで、複数の処理は、例えば、“0:00”から“23:59”までに受け取るイベントデータ及びイベント条件に対する処理である。以後、これらの複数の処理を総称して、イベント処理とも呼ぶ。
【0068】
具体的には、分散処理装置100−103それぞれは、受信したイベントデータやイベント条件のキー値を算出する際に、装置特定関数(詳細は、後述する)“f(ν)”を使用する。
【0069】
この装置特定関数“f(ν)”は、引数“ν”から、キー値を算出する関数である。ここで、引数“ν”は、イベントデータやイベント条件に記述されている値、またはその値を予め定められた手順で変換した値である。予め定められた手順は、例えば、24時間制の時刻(例えば、“15時”)を、90分単位で16分割した値(例えば、“15時”に対して、“10”)に変換する手順である。
【0070】
この装置特定関数“f(ν)”は、最小値の“0”及び最大値の“fmax(例えば、“15”)”を満たす整数値(いずれかの分担キーに対応するキー値)を返す関数である。
【0071】
尚、“fmax”は、イベント処理システム500がイベント処理を割り当てるキー空間における、キー値の最大値である。例えば、分担キーが“0”〜“23”の場合、“fmax”は、“23”とすることが望ましい。また、例えば、分担キーが“0”〜“59”の場合、)“fmax”は、“59”とすることが望ましい。
【0072】
また、この“fmax”は、例えば、分散処理装置台数より十分大きな値(例えば、分散処理装置台数の数倍)を用いる。
【0073】
次に、イベント処理システム500の各分散処理装置100−103それぞれは、算出したキー値に基づいて、受け取ったイベントデータ及びイベント条件を分散処理装置100−103のいずれかに、配送する。即ち、イベント処理システム500は、算出したキー値に基づいて、分散処理装置100−103のいずれかにイベント処理を割り当てる。
【0074】
具体的には、分散処理装置100−103は、受け取ったイベントデータから算出したキー値が、自身に割り当てられた分担キーに対応する場合、そのイベントデータの合致判定を行う。また、分散処理装置100−103は、受け取ったイベント条件から算出したキー値が、自身に割り当てられた分担キーに対応する場合、そのイベント条件の保持を行う。
【0075】
また、分散処理装置100−103は、受け取ったイベントデータ及びイベント条件から算出したキー値が、自身に割り当てられた分担キーに対応しない場合、その算出したキー値に基づいて、受信したイベントデータやイベント条件を配送する分散処理装置100−103を特定する。即ち、分散処理装置100−103は、算出したキー値に対応する分担キーを割り当てられている分散処理装置100−103を特定する。
【0076】
そして、分散処理装置100−103は、特定した分散処理装置100−103に受信したイベントデータ及びイベント条件を配送する。
【0077】
分散処理装置100は、複数の装置特定関数の内から、使用する装置特定関数を決定する。
【0078】
また、イベント処理システム500に分散処理装置100と同様の動作を行わない分散処理装置101−103が含まれている場合、分散処理装置100は、その分散処理装置101−103に、決定した特定装置関数を配布するようにしてよい。
【0079】
次に、分散処理装置100−103の各構成要素について、詳細に説明する。尚、図1に示す構成要素は、ハードウェア単位の構成要素ではなく、機能単位の構成要素を示している。
【0080】
装置特定関数保持部110は、装置特定関数入力装置510から装置特定関数を受け取り、保持する。
【0081】
図3は、装置特定関数保持部110に保持された装置特定関数の一例である。装置特定関数保持部110は、関数番号と装置特定関数との組を1以上保持する。
【0082】
装置特定関数分散度算出部120は、装置特定関数それぞれの分散度を算出し、算出結果を保持する。装置特定関数の分散度とは、その装置特定関数に従って分散処理を行った際の分散の大きさを示す値である。例えば、装置特定関数“f0(ν)”の分散度が装置特定関数“f1(ν)”の分散度より大きい場合、装置特定関数“f0(ν)”は、装置特定関数“f1(ν)”に比べて、より多くの分散処理装置にイベント条件を配置する。分散度の算出については後述する。
【0083】
装置特定関数決定部130は、装置特定関数を1つ決定する。上述したように、装置特定関数は、分散処理装置100−103がイベントデータ入力装置530からイベントデータを受け取った場合、それを配信する先の分散処理装置100−103を特定するためのキー値を算出する関数である。また、装置特定関数は、分散処理装置100−103がイベント条件入力装置540からイベント条件を受け取った場合、それらを配信する先の分散処理装置100−103を特定するためのキー値を算出する関数である。
【0084】
具体的には、装置特定関数決定部130は、起動時に外部のシステムから入力される初期情報と、各装置特定関数の分散度とに基づいて、装置特定関数保持部110に格納されている装置特定関数の内の1つを選択する。続けて、装置特定関数決定部130は、選択した装置特定関数をイベントデータ配信先装置特定部140及びイベント条件配置先装置特定部150へ通知する。尚、装置特定関数決定部130は、分散処理装置101−103のイベントデータ配信先装置特定部140及びイベント条件配置先装置特定部150へも、選択した装置特定関数を通知するようにしてもよい。
【0085】
初期情報は、イベント処理システム500に対するイベントデータの入力頻度であるイベント入力頻度“e”とイベント条件の更新頻度であるイベント条件更新頻度“r”との比を含む。また、初期情報は、“fmax”及びイベント処理システム500に含まれる分散処理装置数“U”、を含む。
【0086】
イベントデータ配信先装置特定部140は、イベント処理システム500の外部システムからイベントデータを受信した際に、そのイベントデータに記述された値(例えば、イベント発生時刻の“9:56”)を取得する。続けて、イベントデータ配信先装置特定部140は、取得した値に基づいて装置特定関数の引数とする値“ν”(例えば、“2”)を決定する。続けて、イベントデータ配信先装置特定部140は、その決定した値を引数として装置特定関数を用いてキー値を算出する。更に、イベントデータ配信先装置特定部140は、算出したキー値に対応する分担キーを割り当てられた分散処理装置100−103を特定する。続けて、イベントデータ配信先装置特定部140は、特定した分散処理装置100−103へイベントデータを配送する。尚、イベントデータ配信先装置特定部140は、そのイベントデータに記述された値そのもの(例えば、イベント発生時刻の“9:56”が記述されている場合、その時間の部分の“9”)を、装置特定関数の引数とする値“ν”として決定してもよい。
【0087】
イベント条件配置先装置特定部150は、イベント処理システム500の外部システムからイベント条件を受信した際に、そのイベント条件で指定された値の範囲の(例えば、“9:00−13:00”)を取得する。続けて、イベント条件配置先装置特定部150は、取得した値の範囲に基づいて、装置特定関数の引数とする値の範囲“[νrl,νrh](“νrl”から“νrh”まで)”(例えば、“[2,4](“2”から“4”まで、即ち、“2”、“3”及び“4”)”)を決定する。続けて、イベント条件配置先装置特定部150は、その決定した値の範囲に含まれる装置特定関数の引数となりえる各値を引数として装置特定関数を用いてキー値を算出する。更に、イベント条件配置先装置特定部150は、算出した各キー値に対応する各分担キーを割り当てられた分散処理装置100−103を特定する。続けて、イベント条件配置先装置特定部150は、特定した分散処理装置100−103の全てに対して、イベント条件を配送する。尚、イベントデータ配信先装置特定部140は、そのイベント条件で指定された値の範囲そのもの(例えば、“9:00−13:00”が記述されている場合、その時間の部分の“[9,13]”)の範囲に含まれる装置特定関数の引数となりえる各値を引数として決定してもよい。
【0088】
尚、特定した分散処理装置100−103へイベントデータ及びイベント条件を配送する手段は、例えば、DNS(Domain Name System)を用いる。
【0089】
合致判定処理部160は、配送されたイベント条件を保持する。また、合致判定処理部160は、配送されたイベントデータが、保持しているイベント条件に合致しているか否かの判定(合致判定処理)を行う。
【0090】
以上が、分散処理装置100の機能単位の各構成要素についての説明である。
【0091】
次に、分散処理装置100のハードウェア単位の構成要素について説明する。
【0092】
図4は、本実施形態における分散処理装置100とその周辺装置のハードウェア構成を示す図である。図4に示されるように、分散処理装置100は、CPU(Central Processing Unit)1070、記憶部1071、記憶装置1072、入力部1073、出力部1074及び通信部1075を含む。
【0093】
CPU1070は、オペレーティングシステム(不図示)を動作させて、本実施形態に係る分散処理装置100の全体の動作を制御する。また、CPU1070は、例えば記憶装置1072に装着された不揮発性の記録媒体(不図示)から、記憶部1071にプログラムやデータを読み込む。そして、CPU1070は、読み込んだプログラムに従って、また読み込んだデータに基づいて、図1に示す装置特定関数保持部110、装置特定関数分散度算出部120、装置特定関数決定部130、イベントデータ配信先装置特定部140、イベント条件配置先装置特定部150及び合致判定処理部160として各種の処理を実行する。
【0094】
尚、CPU1070は、通信網(不図示)に接続されている外部コンピュータ(不図示)から、記憶部1071にプログラムやデータをダウンロードするようにしてもよい。
【0095】
記憶部1071は、プログラムやデータを記憶する。
【0096】
記憶装置1072は、例えば、光ディスク、フレキシブルディスク、磁気光ディスク、外付けハードディスク及び半導体メモリであって、不揮発性の記憶媒体を含む。記憶装置1072は、プログラムをコンピュータ読み取り可能に記録する。また、記憶装置1072は、データをコンピュータ読み取り可能に記録してもよい。
【0097】
入力部1073は、装置特定関数入力装置510、初期情報入力装置520、イベントデータ入力装置530及びイベント条件入力装置540とのインタフェースを実現する。入力装置1073は、装置特定関数保持部110、装置特定関数分散度算出部120、装置特定関数決定部130、イベントデータ配信先装置特定部140、イベント条件配置先装置特定部150の一部として含まれる。
【0098】
出力部1074は、例えば通知情報受信装置550とのインタフェースを実現する。出力部1074は、合致判定処理部160の一部として含まれる。
【0099】
通信部1075は、ネットワーク590とのインタフェースを実現する。通信部1075は、装置特定関数決定部130、イベントデータ配信先装置特定部140、イベント条件配置先装置特定部150及び合致判定処理部160の一部として含まれる。
【0100】
以上が、分散処理装置100のハードウェア単位の各構成要素についての説明である。
【0101】
以上説明したように、図1に示す機能単位のブロックは、図4に示すハードウェア構成によって実現される。但し、分散処理装置100が備える各部の実現手段は、上記に限定されない。すなわち、分散処理装置100は、物理的に結合した一つの装置により実現されてもよいし、物理的に分離した2つ以上の装置を有線または無線で接続し、これら複数の装置により実現されてもよい。
【0102】
また、前述のプログラムを記録した記録媒体(または記憶媒体)が分散処理装置100に供給され、分散処理装置100は、記録媒体に格納されたプログラムを読み込み、実行してもよい。すなわち、本実施形態は、分散処理装置100が実行するプログラムを、一時的にまたは非一時的に、記憶する記録媒体の実施形態を含む。
【0103】
次に、図面を参照して、分散処理装置100の動作を説明する。
図5は、分散処理装置100の動作を示すフローチャートである。分散処理装置100は、例えば、分散処理装置100自身が起動されたことを契機に装置特定関数を選択する動作を開始する。
【0104】
分散処理装置100は、初期情報入力装置520から初期情報を受け取り、受け取った初期情報を、例えば図4に示す記憶部1071に格納する(S610)。
【0105】
装置特定関数保持部110は、装置特定関数入力装置510から装置特定関数を受け取り、保持する(S612)。
【0106】
次に、装置特定関数分散度算出部120は、特定の値を引数として、装置特定関数が返す値(以後、キー値と呼ぶ)を算出する(S620)。ここで、特定の値は、装置特定関数の引数となりうる値の範囲の“Vmin〜Vmax”に含まれる値のうち、連続した“p”個の、“ν”から“νp−1”の値である。尚、“Vmin〜Vmax”は、装置特定関数分散度算出部120に予め与えられている。また、“Vmin〜Vmax”は、初期情報に含まれ、分散処理装置100の起動時に、初期情報入力装置520から入力されるようにしてもよい。
【0107】
ここで、この引数となりうる値が、時間情報のような無限に続くような値である場合、“Vmin〜Vmax”は、実際に扱うことが可能な、ある一定の範囲を繰り返す値である。
【0108】
例えば、この引数となりうる値が時間情報である場合、“Vmin〜Vmax”は、ある一定の範囲(例えば、1日(“00:00”から“23:59”まで)を、例えば“0”〜“15”で繰り返す。即ち、“Vmin”=“0”は、“00:00”から“1:29”までの時刻に対応する引数である。また、“1”は、“1:30”から“2:59”までの時刻に対応する引数である。同様にして、“Vmax”=“15”は、“22:30”から“23:59”までの時刻に対応する引数である。
【0109】
ここで、上述の時間情報は、イベントデータに含まれる、入力される順番に対応して単調増加する環境情報とも呼ばれる。また、上述の引数の“0”〜“15”は、その環境情報に基づいて決定された連続する値である。
【0110】
“Vmin〜Vmax”が“0〜15”である場合、装置特定関数分散度算出部120は、“0〜15”に含まれる値のうち、連続した“p(例えば、“4”)”個のある値“ν(例えば、2)”から“νp−1(例えば、“5”)”までのそれぞれの値を引数として、装置特定関数が返す値(以後、キー値と呼ぶ)を求める。
【0111】
次に、装置特定関数分散度算出部120は、S622からS628の処理により、算出したキー値の分散を算出する。
【0112】
但し、本実施形態における分散は、一般的な数学で用いられる分散とは求め方が異なる。なぜならば、本実施形態のキー値は、最小値の“0”、最大値の“fmax”を満たす整数値を循環しているとみなすことができ、“0”(“fmin”)と“fmax”との差を、“1”として算出するためである。
【0113】
ここで、キー値(装置特定関数が返す値)を、整数値の“0”〜“fmax”を循環する値である、とみなすことができる理由について説明する。
【0114】
前述のように、本実施形態の分散処理装置100は、キー値(装置特定関数から返された値(“0”から“fmax”)を分散処理装置数で分割し、分割された各範囲と各分散処理装置100−103とを紐付ける。
【0115】
例えば、分散処理装置数が“4”であるとし、各分散処理装置(例えば、分散処理装置100−103)に紐付く範囲が等間隔(“(fmax+1)/4”)であるとする。ここで、“fmax+1”は、キー値の個数である。
【0116】
この場合、キー値(例えば、“f”と呼ぶ)に“(fmax+1)/4”だけ加算し、“fmax+1”で除した剰余した値“{f+(fmax+1)/4}mod(fmax+1)”は、異なる分散処理装置100−103が管理する、隣の範囲の値である。この関係は、キー値に拘らず成り立つ。つまり、キー値の“f(ν)”は、式1に示すように、“0”(“fmin”)と“fmax”とを循環しているとみなすことができる。
【0117】
【数1】

【0118】
図5に戻り、次に、装置特定関数分散度算出部120は、キー値を小さいほうから順に並べ、式2に示すように、“g(0)”から“g(p−1)”までの数列を作成する(S622)。
【0119】
【数2】

【0120】
例えば“2”から“5”までのそれぞれを、引数の値として求めたキー値が、“15”、“5”、“6”及び“14”であった場合、“g(0)、g(1)、g(2)、g(3)=g(p−1)”は、“5、6、14、15”である。
【0121】
次に、装置特定関数分散度算出部120は、求めた“g(y)”と“g(y+1)”との差が最大である“y”の特定値“M”(“M:=arg max(|g(y+1)−g(y)|)” 但し、“0≦y<p−1”)を求める(S624)。
【0122】
例えば、“g(0)、g(1)、g(2)、g(3)”が“5、6、14、15”である場合、“M”となる“y”は、“2”である。
【0123】
次に、装置特定関数分散度算出部120は、式3に示すように、平均値“AVE(f)”を算出する(S626)。尚、本実施形態のキー値は、最小値の“0”、最大値の“fmax”を満たす整数値(キー空間)を循環しているとみなすことができる。装置特定関数分散度算出部120は、式3を用いて、平均値を算出する。この平均値は、“g(y+1)”同士が近い側に位置するように算出された平均値であり、キー空間の近距離側の平均値とも呼ばれる。
【0124】
【数3】

【0125】
例えば、“g(0)、g(1)、g(2)、g(3)”が“5、6、14、15”である場合、式3により求めた平均値“AVE(f)”は、“18”である。
【0126】
次に、装置特定関数分散度算出部120は、式4に示すように、分散“σ2”を算出し、保持する(S628)。
【0127】
【数4】

【0128】
例えば、“g(0)、g(1)、g(2)、g(3)”が“5、6、14、15”である場合、式4により求めた分散“σ”は、“12.5”である。
【0129】
次に、装置特定関数分散度算出部120は、上式から求めた分散“σ”を用いて、分散の平均である分散度“s”を算出し、保持する(S630)。
【0130】
ここで、分散度“s”について説明する。
【0131】
例えば、“p”を“4”とした場合、連続する4個の引数“ν〜νp−1”は、“0〜3”、“1〜4”、“2〜5”、“3〜6”、・・・及び“15〜2(15、0、1、2)”の16組である。
【0132】
分散度“s”は、これらの“ν〜νp−1”それぞれについて、上述のようにして求めた分散の“(σ”の平均である。ここで、“q”は、“1”から引数の数(ここでは、“16”)までの整数値、即ち、何個目の引数から連続するp個の引数を取るかを示す値である。
【0133】
例えば、“p”を“4”とした場合、分散度“s”は、“14.375”である。
【0134】
次に、“p”がどのような値を取るかについて説明する。
【0135】
例えば、装置特定関数の引数となりうる値の範囲“Vmin〜Vmax”に含まれる値が“N”個あるとすると、“Vmin〜Vmax”に含まれる値から、連続した任意の“p”個の値の“ν〜νp−1”を取る場合の“p”は、N通り(1〜N)となる。即ち、“p”が“1”の場合、引数は“ν”であり、“p”が“2”の場合、引数は“ν〜ν”であり、“p”が“3”の場合、引数は“ν〜ν”である。以後も同様で、例えば“p”が“N”の場合、引数は“ν〜νN−1”である。
【0136】
このN通りのそれぞれの場合における分散の“(σ”の平均それぞれは、このN通りの各場合の、分散の平均である分散度“s”である。
【0137】
装置特定関数分散度算出部120は、“p”が“1”から“N”までの各場合の分散の平均“s,s,・・・s”を求める。
【0138】
図6は、装置特定関数分散度算出部120が分散度を保持する分散度保持テーブル610の一例を示す図である。図6に示すように、分散度保持テーブル610は、“f0(ν)”、“f1(ν)”、“f2(ν)”及び“f3(ν)”それぞれの分散度(“s”〜“s16”)を含む。
【0139】
次に、装置特定関数決定部130は、S640からS644の処理により、装置特定関数分散度算出部120が保持している分散度と初期情報とに基づいて、装置特定関数を一意に決定する。
【0140】
初期情報は、上述したように、イベント処理システム500に対するイベント入力頻度“e”とイベント条件更新頻度“r”との比、“fmax”及びイベント処理システム500に含まれる分散処理装置数“U”を含む。
【0141】
まず、装置特定関数決定部130は、イベント入力頻度“e”とイベント条件更新頻度“r”との比から、比の値“p=e/r”を算出する(S640)。
【0142】
次に、装置特定関数決定部130は、分散度の“s”と、上記の“p”と、を比較し、差が最も小さい装置特定関数を選択する(S642)。
【0143】
尚、この処理は、元々近い(隣接する)イベントデータが、適切に離れた分担キーを割り当てられた分散処理装置100−103に配送されるような装置特定関数を選択する処理である。
【0144】
まず、分散の平均の“s”は、連続する2つのイベントデータが装置特定関数による変換後のキー空間でどれだけ離れているかを示す。即ち、隣接するイベントデータの配送先を特定するキー値は、“s”が大きければ大きいほど、遠くに分散する。
【0145】
一方、“p”は、イベント条件の更新に対して、イベントデータの発生がどのぐらい多いかを示す。イベントデータの発生が多ければ多いほど(“p”が大きければ大きいほど)、大きく分散するほうがよい。即ち、“p”は、適切な分散の大きさを示す値である。
【0146】
従って、分散の平均の“s”と“p”との差が最も小さくなる装置特定関数を選択することは、元々近い(隣接する)イベントデータが、適切に離れた分担キーを割り当てられた分散処理装置100−103に配送されるような装置特定関数を選択することである。
【0147】
次に、装置特定関数決定部130は、“s”と“p”との差が最も小さくなる装置特定関数が複数ある場合、“s”(引数が3個の場合の分散度)以降がより小さい装置特定関数を選択する(S644)。
【0148】
尚、この処理は、元々広い範囲を指定するイベント条件が、より少ない分散処理装置100−103に配送されるような装置特定関数を選択する処理である。
【0149】
例えば、分散の平均の“s”は、イベント条件に含まれる範囲(9個の引数で特定される範囲)の指定が、装置特定関数による変換後のキー空間でどれだけ離れているかを示す。例えば分散の平均の“s”が小さい装置特定関数は、“s”が大きい装置特定関数に比べて、分散が小さい。
【0150】
従って、S642で選択された装置特定関数の内から、“s”以降がより小さい装置特定関数を選択することは、元々広い範囲を指定するイベント条件が、より少ない分散処理装置100−103に配送されるような装置特定関数を選択することである。
【0151】
具体的には、装置特定関数決定部130は、分散度に基づいて、分散処理装置数の“U”を用いて、S642で選択した装置特定関数のうち、式5に示す条件を満たす“l”が最も小さい装置特定関数を選択する。式5に示す条件を満たす“l”が最も小さい装置特定関数は、予め定められた閾値以下の分散度“s”が、2以上で最も少ない数の引数において出現する装置特定関数である。
【0152】
【数5】

【0153】
更に、“l”が最も小さい装置特定関数が複数ある場合、装置特定関数決定部130は、その“s”が最も小さい装置特定関数を選択する。また、“s”が最も小さい装置特定関数が複数ある場合は、装置特定関数決定部130は、“sl+1”が最も小さい装置特定関数を選択する。装置特定関数決定部130は、この動作を、全ての“s”が同じであると判定するまで継続する。全ての“s”が同じであると判定した場合、装置特定関数決定部130は、予められた基準(例えば、装置特定関数保持部110における格納順)に従って、装置特定関数を選択する。
【0154】
次に、装置特定関数決定部130は、選択した装置特定関数を、分散処理装置100−103のイベントデータ配信先装置特定部140及びイベント条件配置先装置特定部150へ通知する(S646)。
【0155】
次に、具体的な数値を示して、分散処理装置100の動作の例を説明する。
【0156】
装置特定関数保持部110は、装置特定関数入力装置510から、式6〜式9に示すような装置特定関数の“f0(ν)”、“f1(ν)”、“f2(ν)”及び“f3(ν)”を取得し、それらを保持する。尚、式6〜式9において、
“ν=16・h/24 (hは、時刻“時:分:秒”の内の“時”)”である。
【0157】
【数6】

【0158】
【数7】

【0159】
【数8】

【0160】
【数9】

【0161】
装置特定関数分散度算出部120は、装置特定関数ごとに分散度を算出し、例えば、図6に示すように分散度保持テーブル610に保持する。
【0162】
装置特定関数決定部130は、記憶部1071から、イベントデータ入力頻度“e”とイベント条件更新頻度“r”との比“e:r=157:16”、及び分散処理装置数“U”の“4”を取得する。
【0163】
装置特定関数決定部130は、取得した情報に基づいて、“p=e/r=9.8125”を算出する。装置特定関数決定部130は、算出した“p”と、分散度保持テーブル610に保持されている分散度から求めた“s”の値と、が近い装置特定関数を選択する。ここでは、4つ装置特定関数のうち、“f0(ν)”の“s(13.375)”と“f1(ν)”の“s(6.25)”とは、“p”との差が等しい。従って、装置特定関数決定部130は、“f0(ν)”と“f1(ν)”とを選択する。
【0164】
次に、装置特定関数決定部130は、“f0(ν)”と“f1(ν)”とについて、各“s2”について、式10の値を算出し、式5を満たす“l”を決定する。
【0165】
【数10】

【0166】
図7は、装置特定関数決定部130の図示しない記憶手段に保持された、“h(l)”の算出結果の一例である。図7に示すように、“h0(l)”及び“h1(l)”それぞれは、“f0(ν)”及び“f1(ν)”それぞれに対応する式10の値である。
【0167】
図7に示す算出結果の場合、装置特定関数決定部130は、式5を満たす値の“l”として、“f0(ν)”について“4”を、“f1(ν)”について“4”を、決定する。
【0168】
次に、装置特定関数決定部130は、“l”が“4”である式10の値が小さいほうの“f0(ν)”を選択する。
【0169】
次に、装置特定関数決定部130は、選択した装置特定関数“f0(ν)”をイベントデータ配信先装置特定部140及びイベント条件配置先装置特定部150へ通知する。
【0170】
以上が、分散処理装置100における装置特定関数の選択と通知の動作の説明である。
【0171】
次に上述のようにして通知された装置特定関数を用いて、イベント処理システム500がイベント条件及びイベントデータを受け取った場合の動作について説明する。
【0172】
以下の説明において、イベント処理システム500は、4台の分散処理装置100−103を含むものとする。また、キー値の最大値“fmax”は“15”であるものとする。
【0173】
前述したように、4台の分散処理装置100−103それぞれは、割り当てられた分担キーと紐付けられている。そして、イベントデータ配信先装置特定部140は、イベントデータに基づいて算出したキー値と各分散処理装置100−103に紐付けられている分担キーとを比較することによって、イベントデータを配布する先の分散処理装置100−103を特定する。同様に、イベント条件配置先装置特定部150は、イベント条件に基づいて算出したキー値と各分散処理装置100−103に紐付けられている分担キーとを比較することによって、イベント条件を配布する先の分散処理装置100−103を特定する。
【0174】
ここでは、4台の分散処理装置100−103それぞれは、分担キー“0〜3”、“4〜7”、“8〜11”及び“12〜15”それぞれと紐付けられている。従って、イベントデータ配信先装置特定部140及びイベント条件配置先装置特定部150それぞれは、キー値が“0”〜“3”ならば分散処理装置100、キー値が“4”〜“7”ならば分散処理装置101、キー値が“8”〜“11”ならば分散処理装置102、キー値が“12”〜“15”ならば分散処理装置103を特定する。
【0175】
まず、イベント条件入力装置540により、イベント処理システム500へイベント条件が入力された場合を説明する。
分散処理装置100−103の内のいずれかが、入力されたイベント条件(例えば、“2011年2月28日9:00から2011年2月28日13:00”)を受け取る。
【0176】
次に、そのイベント条件を受け取った分散処理装置100−103のイベント条件配置先装置特定部150は、“2011年2月28日9:00から2011年2月28日13:00”に基づいて、引数となる値を決定する。この場合、そのイベント条件配置先装置特定部150は、“00:00”から“23:59”までを16分割して、“0”から“16”に変換した値を取得する。即ち、そのイベント条件配置先装置特定部150は、“9:00”から“10:29”までについて“6”を、“10:30”から“11:59”までについて“7”を、“12:00”から“13:00”までについて“8”を、引数となる値として決定する。
【0177】
尚、イベント条件配置先装置特定部150は、“00:00”から“23:59”までを24分割して、“0”から“23”に変換した値を取得するようにしてもよい。この場合、そのイベント条件配置先装置特定部150は、“9:00”から“9:59”までについて“9”を、“10:00”から“10:59”までについて“10”を、以後も同様に、引数となる値として決定する。
【0178】
次に、そのイベント条件配置先装置特定部150は、取得した値の“6”、“7”及び“8”それぞれを引数とし、装置特定関数の“f0(ν)”を使用してキー値の“f0(6)”、“f0(7)”及び“f0(8)”を算出する。この場合、“f0(6)”、“f0(7)”及び“f0(8)”は、“13”、“4”、“12”である。
【0179】
次に、そのイベント条件配置先装置特定部150は、“f0(6)”、“f0(7)”、“f0(8)”(“13”、“4”、“12”)から、そのイベント条件を配送する先の分散処理装置として分散処理装置101及び分散処理装置103を特定する。
【0180】
次に、そのイベント条件配置先装置特定部150は、特定した分散処理装置101及び分散処理装置103にそのイベント条件を配送する。分散処理装置101及び分散処理装置103は、配送されたイベント条件を保持する。
【0181】
以上が、イベント条件入力装置540から、イベント処理システム500へイベント条件が入力された場合の説明である。
【0182】
次に、イベントデータ入力装置530により、イベント処理システム500へイベントデータが入力された場合を説明する。
【0183】
分散処理装置100−103の内のいずれかが、入力されたイベントデータ(例えば、時間情報が“2011年2月28日10:29”)を受け取る。
【0184】
次に、そのイベント条件を受け取った分散処理装置100−103のイベントデータ配信先装置特定部140は、“2011年2月28日10:29”に対応する、引数となる値を決定する。そのイベントデータ配信先装置特定部140は、“00:00”から“23:59”までを16分割して、“0”から“16”に変換した値を取得する。即ち、そのイベントデータ配信先装置特定部140は、“10:29”について“6”を、引数になる値として決定する。
【0185】
尚、イベント条件配置先装置特定部150が“00:00”から“23:59”までを24分割して“0”から“23”に変換した値を取得するようにした場合、イベントデータ配信先装置特定部140は、同様に、“00:00”から“23:59”までを24分割して“0”から“23”に変換した値を取得する。即ち、この場合、そのイベントデータ配信先装置特定部140は、“10:29”について“10”を、引数になる値として決定する。
【0186】
次に、そのイベントデータ配信先装置特定部140は、決定した値の“6”を引数として、装置特定関数の“f0(ν)”を使用してキー値の“f0(6)”である“13”を算出する。
【0187】
次に、そのイベントデータ配信先装置特定部140は、キー値の“13”に基づいて、そのイベントデータを配送する先の分散処理装置103を特定する。
【0188】
次に、そのイベントデータ配信先装置特定部140は、特定した分散処理装置103にそのイベントデータを配送する。分散処理装置103は、配送されたイベントデータの合致判定処理を行う。
【0189】
同様に、分散処理装置100−103の内のいずれかが、入力されたイベントデータ(例えば、時間情報が“2011年2月28日11:30”)を受け取る。
【0190】
次に、そのイベント条件を受け取った分散処理装置100−103のイベントデータ配信先装置特定部140は、“2011年2月28日11:30”に対応する、引数となる値“7”を決定する。
【0191】
次に、そのイベントデータ配信先装置特定部140は、キー値の“f0(7)”である“4”を算出し、算出したキー値の“4”に基づいて、そのイベントデータを配送する先の分散処理装置101を特定する。
【0192】
次に、そのイベントデータ配信先装置特定部140は、特定した分散処理装置101にそのイベントデータを配送する。分散処理装置101は、配送されたイベントデータの合致判定処理を行う。
【0193】
以上が、イベントデータ入力装置530から、イベント処理システム500へイベントデータが入力された場合の説明である。
【0194】
以上説明したように、装置特定関数が“f0(ν)”の場合、イベント処理システム500は、4時間の範囲指定をしたイベント条件を2台の分散処理装置で保持する。そして、イベント処理システム500は、連続する1.5時間の範囲ごとに発生したイベントデータを2台の分散処理装置で処理する。
【0195】
これに対して、非特許文献1の負荷分散方法を用いるイベント処理システムは、例えば“2011年2月28日9:00から2011年2月28日13:00”と指定するイベント条件を、6:00から11:59までと12:00から18:00までとを割り当てられた2台の分散処理で保持する。
【0196】
そして、例えば時間情報それぞれが“2011年2月28日10:29”及び“2011年2月28日11:30”(イベント条件で指定された時間の、最初の3時間に含まれる)の2つのイベントデータは同じ分散処理装置が処理する。即ち、これらのイベントデータの処理は、分散されない。
【0197】
また、装置特定関数決定部130において、ステップS644に示す動作を行わず、装置特定関数の“f1(ν)”のほうが選択された場合、イベント条件配置先装置特定部150は、以下のように動作する。その同じイベント条件を受け取ったイベント条件配置先装置特定部150は、同じく“6”、“7”及び“8”それぞれを引数として、装置特定関数の“f1(ν)”を使用してキー値の“f0(6)”(“14”)、“f0(7)”(“3”)及び“f0(8)”(“8”)を得る。
【0198】
次に、そのイベント条件配置先装置特定部150は、“f0(6)”、“f0(7)”、“f0(8)”(“14”、“3”、“8”)から、そのイベント条件を配送する先の分散処理装置として分散処理装置100、分散処理装置102及び分散処理装置103を特定する。
【0199】
次に、そのイベント条件配置先装置特定部150は、特定した分散処理装置100、分散処理装置102及び分散処理装置103に、そのイベント条件を配送する。
【0200】
従って、このような場合、イベント条件を保持する先の分散処理装置100−103が冗長となる場合がある。
【0201】
また、上述の実施形態の分散処理装置100は、よりイベントデータの入力頻度が高い場合、より処理を分散させるような装置特定関数を選択する。
【0202】
例えば、初期情報として、イベントデータの入力頻度“e”とイベント条件の更新頻度“r”との比を“e:r=144:16”とすると、分散処理装置100は、装置特定関数“f1(ν)”を選択する。
【0203】
この場合、装置特定関数“f0(ν)”を選択した場合に比べ、イベント条件を保持する先の分散処理装置数は増加する。しかし、同時にイベントデータの処理は、より多くの分散処理装置に分散される。
【0204】
逆に、上述の実施形態の分散処理装置100は、よりイベント条件の更新頻度が高い場合、よりイベント条件を集約させるような装置特定関数を選択する。
例えば、初期情報として、イベントデータの入力頻度“e”とイベント条件の更新頻度“r”との比を“e:r=156:32”とすると、分散処理装置100は、装置特定関数“f2(ν)”を選択する。
【0205】
この場合、装置特定関数“f0(ν)”を選択した場合に比べ、イベントデータの処理は、より少ない分散処理装置に集約される。しかし、同時にイベント条件を保持する先の分散処理装置数は減少する。
【0206】
上述した本実施形態における第1の効果は、各ユースケースにおけるイベント条件の更新頻度に対するイベントデータの発生頻度の割合の、高さに適応して、イベントデータの処理を各分散処理装置へ分散させる装置特定関数を選択することが可能になる点である。
【0207】
その理由は、以下のような構成を含むからである。即ち、第1に装置特定関数分散度算出部120が、装置特定関数ごとの、連続する引数の数ごとの、分散の平均である分散度を算出する。第2に、装置特定関数決定部130が連続する2つの引数の対応するキー値の分散度と、イベントデータ入力頻度“e”及びイベント条件更新頻度“r”の比とが最も近い、装置特定関数を選択する。
【0208】
上述した本実施形態における第2の効果は、連続する2つの引数の分散の平均と、イベントデータ入力頻度“e”及びイベント条件更新頻度“r”の比とが最も近い、装置特定関数が複数ある場合、イベント条件をより少ない分散処理装置に配置するようにさせる装置特定関数を選択することが可能になる点である。
【0209】
その理由は、装置特定関数決定部130が、上述の複数の装置特定関数の内、連続する3つ以上の引数の分散の平均が相対的に小さい、装置特定関数を選択するようにしたからである。
【0210】
上述のように、分散処理装置100は、イベントデータの発生頻度やイベント条件の更新頻度などが異なる、それぞれのユースケースに適応して、イベントデータ及びイベント条件を配送する先の分散処理装置を決定する装置特定関数を選択する。
【0211】
即ち、本実施形態は、イベントデータの発生頻度やイベント条件の更新頻度などが異なる、それぞれのユースケースに適した分散処理装置特定方法を選択することを可能にするという効果がある。
[第2の実施形態]
次に、本発明の第2の実施形態について図面を参照して詳細に説明する。以下、本実施形態の説明が不明確にならない範囲で、前述の説明と重複する内容については説明を省略する。
【0212】
図8は、本発明の第2の実施形態に係る分散処理装置200の構成を示すブロック図である。図8を参照すると、本実施形態における分散処理装置200は、第1の実施形態の分散処理装置100比べて、入力頻度観測部270を更に含む。
【0213】
入力頻度観測部270は、イベントデータの入力回数とイベント条件の入力回数とからイベントデータの発生頻度とイベント条件の更新頻度との比を算出し、この算出した比を例えば記憶装置1072に記録する。そして、分散処理装置200は、装置特定関数の選択する処理において、この記録した比を初期情報(イベント入力頻度“e”とイベント条件更新頻度“r”との比)として使用する。
【0214】
入力頻度観測部270は、イベントデータ用のカウンタと、イベント条件用のカウンタを含む。そして、入力頻度観測部270は、それぞれのカウンタのカウント値に基づいて、単位時間当たりのイベントデータの発生頻度及びイベント条件の更新頻度を算出する。例えば、入力頻度観測部270は、分散処理装置200に対してイベントデータが1秒間に100回入力された場合、イベントデータの発生頻度が100回/秒であることを算出する。
【0215】
そして、入力頻度観測部270は、イベントデータの発生頻度とイベント条件の更新頻度との比を算出する。
【0216】
分散処理装置200の入力頻度観測部270は、他の分散処理装置からイベントデータ及びイベント条件それぞれの入力頻度を取得する手段を有していてもよい。この場合、入力頻度観測部270は、分散処理装置200における入力頻度と他の分散処理装置における入力頻度とを合算し、イベントデータの発生頻度とイベント条件の更新頻度との比を算出するようにしてもよい。
【0217】
上述した本実施形態における効果は、第1の実施形態の効果に加え、装置特定関数の特定において使用する、イベントデータ入力頻度“e”とイベント条件更新頻度“r”との比を、現実のユースケースに即して得ることを可能にする点である。
【0218】
その理由は、入力頻度観測部270が、分散処理装置200に入力されるイベントデータとイベント条件との入力回数を測定し、測定した入力回数に基づいて、イベントデータ入力頻度“e”とイベント条件更新頻度“r”との比を算出するようにしたからである。
【0219】
例えば、第1の実施形態において、イベント処理システム500の運用を開始したところ、初期情報として入力したイベントデータ発生頻度とイベント条件の更新頻度の比が、実際の入力頻度と大きく異なっている場合がある。このような場合、ユースケースに適していない装置特定関数を使用している可能性がある。
【0220】
これに対し、本実施形態は、入力頻度観測部270が算出したイベントデータ入力頻度“e”とイベント条件更新頻度“r”との比に基づいて、ユースケースに適した装置特定関数を選択することができる。
[第3の実施形態]
次に、本発明の第3の実施形態について図面を参照して詳細に説明する。以下、本実施形態の説明が不明確にならない範囲で、前述の説明と重複する内容については説明を省略する。
【0221】
図9は、本発明の第3の実施形態の分散処理装置300の構成を示すブロック図である。
【0222】
図9を参照すると、本実施形態に係る分散処理装置300は、装置特定関数保持部110と装置特定関数分散度算出部120と装置特定関数決定部130とを含む。
【0223】
装置特定関数保持部110は、与えられた引数に対して特定のキー空間のキー値を返す装置特定関数を複数保持する。
【0224】
装置特定関数分散度算出部120は、装置特定関数保持部110が保持する装置特定関数それぞれについて、複数の特定の引数に対するキー値の分散を算出する。続けて、装置特定関数分散度算出部120は、算出した分散に基づいて、それらの装置特定関数の分散度を算出し、出力する。
【0225】
装置特定関数決定部130は、イベントデータの入力頻度とイベント条件の入力頻度との比とから、比の値を算出する。続けて、装置特定関数決定部130は、それらの装置特定関数の内から、算出した比の値と、装置特定関数分散度算出部120が算出した分散度とに基づいて、いずれか1つの装置特定関数を選択し、出力する。
【0226】
上述した本実施形態における効果は、イベントデータの発生頻度やイベント条件の更新頻度などが異なる、それぞれのユースケースに適した分散処理装置特定方法を選択することを可能にする点である。
【0227】
その理由は、装置特定関数分散度算出部120が各装置特定関数の分散度を算出し、装置特定関数決定部130が、イベントデータの入力頻度とイベント条件の入力頻度との比と、各装置特定関数の分散度とに基づいて、それらの装置特定関数の内のいずれか1つを選択するようにしたからである。
【0228】
以上、各実施形態及び実施例を参照して本発明を説明したが、本発明は上記実施形態及び実施例に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解しえるさまざまな変更をすることができる。
【0229】
以上の各実施形態で説明した各構成要素は、必ずしも個々に独立した存在である必要はない。例えば、各構成要素は、複数の構成要素が1個のモジュールとして実現されたり、1つの構成要素が複数のモジュールで実現されたりしてもよい。また、各構成要素は、ある構成要素が他の構成要素の一部であったり、ある構成要素の一部と他の構成要素の一部とが重複していたり、といったような構成であってもよい。
【0230】
以上説明した各実施形態における各構成要素及び各構成要素を実現するモジュールは、必要に応じ可能であれば、ハードウェア的に実現されても良いし、コンピュータ及びプログラムで実現されても良いし、ハードウェア的なモジュールとコンピュータ及びプログラムとの混在により実現されても良い。プログラムは、磁気ディスクや半導体メモリなど、不揮発性のコンピュータ可読記録媒体に記録されて提供され、コンピュータの立ち上げ時などにコンピュータに読み取られる。この読み取られたプログラムは、そのコンピュータの動作を制御することにより、そのコンピュータを前述した各実施形態における構成要素として機能させる。
【0231】
また、以上説明した各実施形態では、複数の動作をフローチャートの形式で順番に記載してあるが、その記載の順番は複数の動作を実行する順番を限定するものではない。このため、各実施形態を実施するときには、その複数の動作の順番は内容的に支障しない範囲で変更することができる。
【0232】
更に、以上説明した各実施形態では、複数の動作は個々に相違するタイミングで実行されることに限定されない。例えば、ある動作の実行中に他の動作が発生したり、ある動作と他の動作との実行タイミングが部分的に乃至全部において重複していたりしていてもよい。
【0233】
更に、以上説明した各実施形態では、ある動作が他の動作の契機になるように記載しているが、その記載はある動作と他の動作の全ての関係を限定するものではない。このため、各実施形態を実施するときには、その複数の動作の関係は内容的に支障のない範囲で変更することができる。また各構成要素の各動作の具体的な記載は、各構成要素の各動作を限定するものではない。このため、各構成要素の具体的な各動作は、各実施形態を実施する上で機能的、性能的、その他の特性に対して支障をきたさない範囲内で変更されて良い。
【符号の説明】
【0234】
100 分散処理装置
101 分散処理装置
102 分散処理装置
103 分散処理装置
110 装置特定関数保持部
120 装置特定関数分散度算出部
130 装置特定関数決定部
140 イベントデータ配信先装置特定部
150 イベント条件配置先装置特定部
160 合致判定処理部
200 分散処理装置
270 入力頻度観測部
500 イベント処理システム
510 装置特定関数入力装置
520 初期情報入力装置
530 イベントデータ入力装置
540 イベント条件入力装置
550 通知情報受信装置
590 ネットワーク
610 分散度保持テーブル
1070 CPU
1071 記憶部
1072 記憶装置
1073 入力部
1073 入力装置
1074 出力部
1075 通信部

【特許請求の範囲】
【請求項1】
与えられた引数に対して特定のキー空間のキー値を返す装置特定関数を複数保持する装置特定関数保持手段と、
前記装置特定関数それぞれについて、複数の特定の前記引数に対する前記キー値の分散を算出し、算出した前記分散に基づいて前記装置特定関数の分散度を算出し、出力する装置特定関数分散度算出手段と、
第1のデータブロックの入力頻度と前記第1のデータブロックが特定の前記第1のデータブロックであるか否かを判定する条件の情報を含む第2のデータブロックの入力頻度との比と、前記分散度と、に基づいて複数の前記装置特定関数の内のいずれか1つを選択し、選択した前記装置特定関数を出力する装置特定関数決定手段と、
を含む分散処理装置。
【請求項2】
前記装置特定関数は、周期関数であって、前記キー値は特定のキー空間を循環し、
前記装置特定関数分散度算出部は、前記複数の特定の前記引数に対する複数の前記キー値について、前記キー空間の近距離側の平均値を算出し、前記平均値に基づいて前記複数の前記キー値の分散を算出する
ことを特徴とする請求項1記載の分散処理装置。
【請求項3】
前記装置特定関数決定部は、前記第1のデータブロックの入力頻度と前記第2のデータブロックの入力頻度との比の値と、隣接した前記引数に対応する前記キー値の分散度とが最も近い前記装置特定関数を選択し、
前記選択した装置特定関数が複数である場合、予め定められた閾値以下の前記引数に対する前記キー値の分散度が、2以上で最も少ない数の前記引数において出現する前記装置特定関数を選択する
ことを特徴とする請求項1または2記載の分散処理装置。
【請求項4】
前記第1のデータブロックの入力と前記第2のデータブロックの入力とを監視し、
前記第1のデータブロックの入力頻度と前記第2のデータブロックの入力頻度との比を算出し、出力する入力頻度観測部を含む
ことを特徴とする請求項1乃至3のいずれか一項に記載の分散処理装置。
【請求項5】
(元の請求項4:第1データブロックがイベントデータ)
前記第1のデータブロックは、入力される順番に対応して単調増加または単調減少する環境情報を含み、
前記装置特定関数分散度算出手段は、前記環境情報に基づいて決定した連続する値を前記複数の特定の前記引数とする、
ことを特徴とする請求項1乃至4のいずれか一項に記載の分散処理装置。
【請求項6】
コンピュータが、
与えられた引数に対して特定のキー空間のキー値を返す装置特定関数を複数保持し、
前記装置特定関数それぞれについて、複数の特定の前記引数に対する前記キー値の分散を算出し、算出した前記分散に基づいて前記装置特定関数の分散度を算出し、
第1のデータブロックの入力頻度と前記第1のデータブロックが特定の前記第1のデータブロックであるか否かを判定する条件の情報を含む第2のデータブロックの入力頻度との比と、前記分散度と、に基づいて複数の前記装置特定関数の内のいずれか1つを選択し、
選択した前記装置特定関数を出力する、
分散処理装置方法。
【請求項7】
前記装置特定関数は、周期関数であって、前記キー値は特定のキー空間を循環し、
前記コンピュータは、前記複数の前記キー値の前記分散を、前記複数の特定の前記引数に対する複数の前記キー値について、前記キー空間の近距離側の平均値を算出し、前記平均値に基づいて算出する
ことを特徴とする請求項6記載の分散処理方法。
【請求項8】
前記コンピュータは、
前記第1のデータブロックの入力頻度と前記第2のデータブロックの入力頻度との比の値と、隣接した前記引数に対応する前記キー値の分散度とが最も近い前記装置特定関数を選択し、
前記選択した装置特定関数が複数である場合、予め定められた閾値以下の前記引数に対する前記キー値の分散度が、2以上で最も少ない数の前記引数において出現する前記装置特定関数を選択する
ことを特徴とする請求項6または7記載の分散処理方法。
【請求項9】
与えられた引数に対して特定のキー空間のキー値を返す装置特定関数を複数保持する処理と、
前記装置特定関数それぞれについて、複数の特定の前記引数に対する前記キー値の分散を算出し、算出した前記分散に基づいて前記装置特定関数の分散度を算出する処理と、
第1のデータブロックの入力頻度と前記第1のデータブロックが特定の前記第1のデータブロックであるか否かを判定する条件の情報を含む第2のデータブロックの入力頻度との比と、前記分散度と、に基づいて複数の前記装置特定関数の内のいずれか1つを選択する処理と、
選択した前記装置特定関数を出力する処理とを、
コンピュータに実行させるプログラム。
【請求項10】
複数の分散処理装置を含み、
前記分散処理装置の内の少なくとも1つは、請求項1乃至5のいずれか1項に記載の前記分散処理装置である分散処理システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2013−101446(P2013−101446A)
【公開日】平成25年5月23日(2013.5.23)
【国際特許分類】
【出願番号】特願2011−244113(P2011−244113)
【出願日】平成23年11月8日(2011.11.8)
【出願人】(000004237)日本電気株式会社 (19,353)