(57)【要約】【課題】  イベント情報を柔軟に保持すること。【解決手段】  複合イベント処理装置１１は、複合イベント検出部１１１と、受信イベント履歴管理部１１２と、仮想記憶管理部１１３とを含む。複合イベント検出部は、複合イベント条件式を保持し、受信イベントとの合致処理と、受信イベント履歴管理部が用意するＡＰＩの呼び出しを行い、受信イベント履歴管理部は、受信イベントの保持、読み出し、置換を自ノードの記憶領域又は地ノードの記憶領域に対して行う。また、他ノードにある仮想記憶管理部は、受信イベント履歴管理部に対してイベントを保持し、読み出し、置換する処理を提供し、受信イベント履歴管理部から呼び出された場合にイベントを保持し、読み出し、置換する処理を実行する。【選択図】図２
2011008614.tif 000002
【特許請求の範囲】
【請求項１】
イベント情報の配信パスになる複数のノードを含むイベント配信ネットワークと、前記イベント配信ネットワークに接続される端末装置とからなる複合イベント配信システムであって、
前記ノードの少なくとも一つは、
前記端末装置から複合イベント条件式の要素に含まれるイベントを受信した場合、前記受信したイベントを保持し、読み出し、又は置換する第１のアプリケーションインタフェースを呼び出す複合イベント検出部と、前記複合イベント検出部に対し、前記第１のアプリケーションインタフェースを提供するとともに、前記受信したイベントを自ノード内に確保された記憶領域に保持し、読み出し、又は置換するか、前記配信パスの前段に位置する他ノードに確保される記憶領域に保持し、読み出し、又は置換する第２のアプリケーションインタフェース呼び出す受信イベント履歴管理部とを備え、
前記他ノードは、
前記受信イベント履歴管理部に対し、前記第２のアプリケーションインタフェースを提供するとともに、前記受信イベント履歴管理部からの呼び出しに応じて、指定されたイベントを保持する前記記憶領域の確保を行う仮想記憶管理部を備え、
前記受信イベント履歴管理部は、
前記他ノードに確保された記憶領域を用いて前記受信したイベントの保持し、読み出し、又は置換を行う
ことを特徴とする複合イベント配信システム。
【請求項２】
前記イベント配信ネットワークを、前記受信イベントの配信パスが定義されたルーティングテーブルを持つオーバレイノードを含むオーバレイネットワーク上に構築し、
前記受信イベント履歴管理部は、
前記他ノードの仮想記憶管理部が提供する第２のアプリケーションインタフェースを呼び出し、前記オーバレイネットワークを介して受信したイベントを保持し、読み出し、又は置換することを特徴とする請求項１記載の複合イベント配信システム。
【請求項３】
前記受信イベント履歴管理部は、
前記他ノードの仮想記憶管理部に転送されたイベントを保持し、読み出し、置換する際に、前記オーバレイノードにあるルーティンクテーブルの配信パスを参照し、前記複合イベントの送信元となるオーバレイネットワークノードの仮想記憶管理部が管理する記憶領域を対象に、前記受信したイベントを保持し、読み出し、又は置換することを特徴とする請求項２記載の複合イベント配信システム。
【請求項４】
イベント情報の配信パスになる複数のノードを含むイベント配信ネットワークに接続される複合イベント処理装置であって、
受信したイベントが複合イベント条件式の要素に含まれる場合、前記受信したイベントを保持し、読み出し、又は置換する第１のアプリケーションインタフェースを呼び出す複合イベント検出部と、
前記複合イベント検出部に対し、前記第１のアプリケーションインタフェースを提供するとともに、前記受信したイベントを自ノード内に確保された記憶領域に保持し、読み出し、又は置換するか、前記配信パスの前段に位置する他ノードに確保される記憶領域に保持し、読み出し、又は置換する第２のアプリケーションインタフェース呼び出す受信イベント履歴管理部と、
前記受信イベント履歴管理部に対し、前記第２のアプリケーションインタフェースを提供するとともに、前記受信イベント履歴管理部からの呼び出しに応じて、指定されたイベントを保持する前記記憶領域の確保を行う仮想記憶管理部と
を備えたことを特徴とする複合イベント処理装置。
【請求項５】
イベント情報の配信パスになる複数のノードを含むイベント配信ネットワークと、前記イベント配信ネットワークに接続される端末装置とからなる複合イベント配信システムにおける複合イベント処理方法であって、
前記端末装置から複合イベント条件式の要素に含まれるイベントを受信した場合、前記受信したイベントを保持し、読み出し、又は置換する第１のアプリケーションインタフェースを呼び出す第１のステップと、
前記呼び出しに基づき提供される前記第１のアプリケーションインタフェースに基づき、前記受信したイベントを自ノード内に確保された記憶領域に保持し、読み出し、又は置換するか、前記配信パスの前段に位置する他ノードに確保される記憶領域に保持し、読み出し、又は置換する第２のアプリケーションインタフェース呼び出す第２のステップと、
前記呼び出しに基づき前記第２のアプリケーションインタフェースを提供するとともに、前記呼び出しに応じて、前記他ノードに、指定されたイベントを保持する前記記憶領域の確保を行う第３のステップと、
前記提供された第２のアプリケーションインタフェースに基づき、前記他ノードに確保された記憶領域を用いて前記受信したイベントの保持し、読み出し、又は置換を行う第４のステップと
を有することを特徴とする複合イベント処理方法。
【請求項６】
前記イベント配信システムが、前記イベント配信ネットワークを、前記受信イベントの配信パスが定義されたルーティングテーブルを有するオーバレイノードを含むオーバレイネットワーク上に構築したイベント配信システムであり、
前記第２のステップは、
前記他ノードが提供するアプリケーションインタフェースを呼び出し、前記オーバレイネットワークを介して受信したイベントを保持し、読み出し、又は置換することを特徴とする請求項５記載の複合イベント検出方法。
【請求項７】
前記第２のステップは、
前記他ノードに転送されたイベントを保持し、読み出し、置換する際に、前記オーバレイノードにあるルーティングテーブルの配信パスを参照し、前記受信したイベントの送信元となるオーバレイネットワークノードが管理する記憶領域を対象に、前記受信イベントを保持し、読み出し、又は置換することを特徴とする請求項６記載の複合イベント処理方法。
【請求項８】
コンピュータ上で実行され、イベント情報の配信パスになる複数のノードを含むイベント配信ネットワークに接続される複合イベント処理装置の複合イベント処理プログラムであって、
前記コンピュータに、
受信したイベントが複合イベント条件式の要素に含まれる場合、前記受信したイベントを保持し、読み出し、又は置換する第１のアプリケーションインタフェースを呼び出す複合イベント検出処理と、
前記第１のアプリケーションインタフェースを提供するとともに、前記受信したイベントを自ノード内に確保された記憶領域に保持し、読み出し、又は置換するか、前記配信パスの前段に位置する他ノードに確保される記憶領域に保持し、読み出し、又は置換する第２のアプリケーションインタフェース呼び出す受信イベント履歴処理と、
前記第２のアプリケーションインタフェースを提供するとともに、前記呼び出しに応じて、指定されたイベントを保持する前記記憶領域の確保を行う仮想記憶管理処理と
を実行させることを特徴とする複合イベント処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ある観測対象の状態変化が発生した時に、その状態変化を情報化するとともに、その情報の配信を希望する受信者へ状態変化を通知する複合イベント配信システム、複合イベント処理装置、複合イベント処理方法、及び複合イベント処理プログラムに関する。
【背景技術】
【０００２】
近年、アプリケーションはリアルタイム性が求められようになり、これまでのようにＤＢＭＳ（Ｄａｔａ  Ｂａｓｅ  Ｍａｎａｇｅｍｅｎｔ  Ｓｙｓｔｅｍ）に蓄えられた大量のデータから、ユーザの意思や決められた時刻に必要なデータを問い合わせるといった構造のアプレケーションではなく、データが生じた時点でその内容を検査し、必要なデータのみを取得して処理するアプリケーションが求められている。
【０００３】
この時々刻々と生じるデータの中から必要なデータが見つかることをイベントが発生したという。そして、これらのイベントは、単一で意味のあるものもあるが、複雑なアプリケーションの中では複数のイベントが同時に起こること、又はあるイベントが別のイベントの後に起こるといった複数のイベントの組み合わせに意味のあることが多い。以下に説明する複合イベント処理とは、このように複数のイベントの組み合わせ自体を一つのイベントとして処理を行うことをいう。
【０００４】
イベント検出の際に使用されるストリーミングデータのＸＰａｔｈクエリであるＸＳＱ（例えば、非特許文献１参照）において、複合イベントを検出するための条件式はオートマトンによって表現される。例えば、図８に示されるように、イベントＡが発生し、イベントＢが発生したという順序表現である。
【０００５】
図８に示す複合イベント検出器によれば、初期状態がＳ０にあり、最初にイベントＡを受信すると、そのイベントＡを保持した上で状態Ｓ１に遷移する。しかし、イベントＢを受信した場合、状態Ｓ０を維持する。状態Ｓ１では、イベントＡを受信すると、状態遷移が発生しない。なぜなら、状態Ｓ１は、既にイベントＡの受信を検出した状態を示すからである。しかし、イベントＢを受信すると、終了状態であるＳ２へ遷移する。その結果、保持してあるイベントＡと、受信したイベントＢとを組み合わせることで複合イベント（Ａ；Ｂ）を検出する。
【０００６】
また、上述した複合イベント処理装置あるいはシステムにおいて、メモリ資源を有効活用するために、イベント通知をチャンネルという概念で行なう方法（例えば、特許文献１参照）、システムを階層構造で定義した場合に、上位ノードが隣接した階層でなければ冗長なノードを設け隣接関係にしてイベント格納領域の無駄な空きをなくする方法も知られている（例えば、特許文献２参照）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００３−３１６６１０号公報
【特許文献２】特開１１−２５９３１０号公報
【非特許文献】
【０００８】
【非特許文献１】ＸＰａｔｈ  Ｑｕｅｒｉｅｓ  ｏｎ  Ｓｔｒｅａｍｉｎｇ  Ｄａｔａ．Ｆｅｎｇ  Ｐｅｎｇ  ａｎｄ  Ｓｕｄａｒｓｈａｎ  Ｓ．Ｃｈａｗａｔｈｅ．Ｉｎ  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  ＡＣＭ  ＳＩＧＭＯＤ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｃｏｎｆｅｒｅｃｅ  Ｍａｎａｇｅｍｅｎｔ  ｏｆ  Ｄａｔａ．ｊｕｎｅ９−１２，２００３．Ｓａｎ  Ｄｉｅｇｏ，Ｃａｌｉｆｏｒｎｉａ
【発明の概要】
【発明が解決しようとする課題】
【０００９】
ところで、上述した複合イベント処理装置では、１ノードあたりの記憶容量、例えば、メモリやストレージ容量を事前に設計することは難しく、このため、イベント情報を柔軟に保持することが望まれていた。
【００１０】
その理由は、メモリ使用量は、登録されたサブクリブション数によって変化し、また発生周期が長いイベントを使って、複合イベント検出を行う場合、先に発生したイベント情報が、複合イベント式を満足するまで登録されてしまい、その結果、記憶容量を圧迫するからである。
【００１１】
（発明の目的）
本発明の目的は、イベント情報を柔軟に保持可能な、複合イベント配信システム、複合イベント処理装置、複合イベント処理方法、及び複合イベント処理プログラムを提供することにある。
【課題を解決するための手段】
【００１２】
本発明の第１の複合イベント配信システムは、イベント情報の配信パスになる複数のノードを含むイベント配信ネットワークと、イベント配信ネットワークに接続される端末装置とからなる複合イベント配信システムであって、ノードの少なくとも一つは、端末装置から複合イベント条件式の要素に含まれるイベントを受信した場合、受信したイベントを保持し、読み出し、又は置換する第１のアプリケーションインタフェースを呼び出す複合イベント検出部と、複合イベント検出部に対し、第１のアプリケーションインタフェースを提供するとともに、受信したイベントを自ノード内に確保された記憶領域に保持し、読み出し、又は置換するか、配信パスの前段に位置する他ノードに確保される記憶領域に保持し、読み出し、又は置換する第２のアプリケーションインタフェース呼び出す受信イベント履歴管理部とを備え、他ノードは、受信イベント履歴管理部に対し、第２のアプリケーションインタフェースを提供するとともに、受信イベント履歴管理部からの呼び出しに応じて、指定されたイベントを保持する記憶領域の確保を行う仮想記憶管理部を備え、受信イベント履歴管理部は、他ノードに確保された記憶領域を用いて受信したイベントの保持、読み出し、又は置換を行う。
【００１３】
本発明の第２の複合イベント処理装置は、イベント情報の配信パスになる複数のノードを含むイベント配信ネットワークに接続される複合イベント処理装置であって、受信したイベントが複合イベント条件式の要素に含まれる場合、受信したイベントを保持し、読み出し、又は置換する第１のアプリケーションインタフェースを呼び出す複合イベント検出部と、複合イベント検出部に対し、第１のアプリケーションインタフェースを提供するとともに、受信したイベントを自ノード内に確保された記憶領域に保持し、読み出し、又は置換するか、配信パスの前段に位置する他ノードに確保される記憶領域に保持し、読み出し、又は置換する第２のアプリケーションインタフェース呼び出す受信イベント履歴管理部と、受信イベント履歴管理部に対し、第２のアプリケーションインタフェースを提供するとともに、受信イベント履歴管理部からの呼び出しに応じて、指定されたイベントを保持する記憶領域の確保を行う仮想記憶管理部とを含む。
【００１４】
本発明の第３の複合イベント処理方法は、イベント情報の配信パスになる複数のノードを含むイベント配信ネットワークと、イベント配信ネットワークに接続される端末装置とからなる複合イベント配信システムにおける複合イベント処理方法であって、端末装置から複合イベント条件式の要素に含まれるイベントを受信した場合、受信したイベントを保持し、読み出し、又は置換する第１のアプリケーションインタフェースを呼び出す第１のステップと、呼び出しに基づき提供される第１のアプリケーションインタフェースに基づき、受信したイベントを自ノード内に確保された記憶領域に保持し、読み出し、又は置換するか、配信パスの前段に位置する他ノードに確保される記憶領域に保持し、読み出し、又は置換する第２のアプリケーションインタフェース呼び出す第２のステップと、呼び出しに基づき第２のアプリケーションインタフェースを提供するとともに、呼び出しに応じて、他ノードに、指定されたイベントを保持する記憶領域の確保を行う第３のステップと、提供された第２のアプリケーションインタフェースに基づき、他ノードに確保された記憶領域を用いて受信したイベントの保持、読み出し、又は置換を行う第４のステップとを有する。
【００１５】
本発明の第４の複合イベント処理プログラムは、コンピュータ上で実行され、イベント情報の配信パスになる複数のノードを含むイベント配信ネットワークに接続される複合イベント処理装置の複合イベント処理プログラムであって、コンピュータに、受信したイベントが複合イベント条件式の要素に含まれる場合、受信したイベントを保持し、読み出し、又は置換する第１のアプリケーションインタフェースを呼び出す複合イベント検出処理と、第１のアプリケーションインタフェースを提供するとともに、受信したイベントを自ノード内に確保された記憶領域に保持し、読み出し、又は置換するか、配信パスの前段に位置する他ノードに確保される記憶領域に保持し、読み出し、又は置換する第２のアプリケーションインタフェース呼び出す受信イベント履歴処理と、第２のアプリケーションインタフェースを提供するとともに、呼び出しに応じて、指定されたイベントを保持する記憶領域の確保を行う仮想記憶管理処理と、を実行させる。
【発明の効果】
【００１６】
本発明によれば、イベント情報を柔軟に保持可能な、複合イベント配信システム、複合イベント処理装置、複合イベント処理方法、及び複合イベント処理プログラムを提供することができる。
【００１７】
その理由は、イベント処理装置が、受信したイベントを自ノード内に確保された記憶領域に保持し、読み出し、又は置換するか、配信パスの前段に位置する他ノードに確保される記憶領域に保持し、読み出し、又は置換するからである。
【図面の簡単な説明】
【００１８】
【図１】本発明の実施の形態による複合イベント配信システムのシステム構成の一例を示す図である。
【図２】本発明の実施の形態による複合イベント処理装置の構成を示すブロック図である。
【図３】本発明の実施の形態による複合イベント処理装置の動作を模式的に示した図である。
【図４】本発明の実施の形態による複合イベント処理装置の動作を示すフローチャートである。
【図５】本発明の実施の形態による複合イベント配信システムをオーバレイネットワーク上に構築した場合のシステム構成の一例を示す図である。
【図６】本発明の実施の形態による複合イベント配信システムの動作を示すシーケンス図である。
【図７】本発明の実施の形態による複合イベント配信システムの動作を複合イベント処理装置間で模式的に示した図である。
【図８】従来の複合イベント処理装置による複合イベントの状態遷移を模式的に示した図である。
【発明を実施するための形態】
【００１９】
次に、本発明の実施の形態について図面を参照して詳細に説明する。
【００２０】
（第１の実施の形態）
図１は、本発明の第１の実施の形態による複合イベント配信システム１の構成を示すブロック図である。
【００２１】
ここでは、バブリッシュ／サブスクライブ通信方式による複合イベント配信システム１が例示されている。図１を参照すると、本発明の第１の実施の形態による複合配信システム１は、イベント配信ネットワーク１０と、それに接続された端末群で構成される。イベント配信ネットワーク１０は、イベント情報をルーティングするブローカノードＢ１、Ｂ２、およびランデブーノードＲを含む。イベント配信ネットワーク１０は、例えば、端末群を裾とし、ランデブーノードＲを頂点としたマルチキャストツリー状のネットワークである。端末群は、イベント情報（ｓ１、ｓ２）および広告情報（ａ１、ａ２）を発信するパブリッシャノードＰ１、Ｐ２、およびイベント情報（ｓ１、ｓ２）を受信するサブスクライバノードＳ１、Ｓ２を含む。
【００２２】
パブリッシャノードＰ１、Ｐ２、およびサブスクライバノードＳ１、Ｓ２は、例えば、インターネットに接続される端末上で動作するアブリケーションプログラムである。端末としては、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）やインターネット接続環境（Ｗｅｂブラウザ）内蔵の携帯電話、あるいはセンネットワークとする。なお、パブリッシャノードＰ１、Ｐ２は、ＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）を用いてイベント配信ネットワーク１０を構成するブローカノードＢ１、Ｂ３に接続する。なお、ＴＣＰ／ＩＰに限らず、ＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）やＨＴＴＰ（Ｈｙｐｅｒ  Ｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）でもよい。
【００２３】
例えば、イベントを発信しようとするパブリッシャノードＰ１は、最初にイベントの広告を行う。図１に示されるように、この広告処理は、パブリッシャノートＰ１が広告情報ａ１を、ランデブーノードＲへ送信することで実行される。ブローカノードＢ１は、パプリッシャノードＰ１から広告情報を受信したときに、広告用のルーティングテーブルを作成する。すなわち、送信元（パブリッシャノードＰ１）−転送先（ランデブーノードＲ）という設定を作成する。ここで、作成したイベント配信パスのルートＲｔ１（パブリッシャノードＰ１）−ブローカノードＢ１）−（ランデブーノードＲ）は、パブリッシャノードＰ１がイベント情報ｐ１を発信する場合に使用される。
【００２４】
イベントを発信しようとするパプリッシャノードＰ２も同様の処理、つまり、広告情報ａ２をランデブーノードＲへ広告する。この広告情報ａ２は、ブローカノードＢ２においてランデブーノードＲへの送信が終端されている。これは広告情報ａ１と広告情報ａ２が既に、（ブローカノードＢ１）−（ランデブーノードＲ）への配信ルートを広告していることから、広告情報ａ２のためのブローカノードＢ１からランデブーノードＲへの配信ルートは、広告情報ａ１で設定した配信ルートが利用される。
【００２５】
一方、広告されたイベントを受信しようとするサブスクライバノードＳ１は、イベントを受信するために要求情報ｓ１をランデブーノードＲへ送信する。この要求情報ｓ１は、図１のルートＲｔ２（サブスクライバノードＳ１）−（ブローカノードＢ３）−（ブローカノードＢ１）を通ってランデブーノードＲへ到達する。また、この要求情報ｓ１は、ブローカノードＢ２へも転送されている。これは、イベント情報ｐ１を広告しようとしている広告情報ａ２とイベント情報ｐ１を受信使用としている要求情報ｓ１の条件とが一致したことで発生している。
【００２６】
より詳細に説明すると、この要求情報ｓ１が転送される経路上にあるブローカノードＢ１では、広告情報ａ１をランデブーノードＲへ転送する際に構築したルーティングテーブルを参照する。この参照において、広告しようとしているイベントと受信しようとするイベントの条件が一致すれば、要求情報Ｓ１は、広告情報ａ１で構築したルートを逆に辿って転送される。つまり、図１の例では、要求情報ｓ１は、ブローカノードＢ１からブローカノードＢ２へ転送されている。図１に記載は無いが、この処理に基づき、広告情報ａ２で広告されたイベントは、パブリッシャノードＰ２において状態変化が発生したときに、イベント情報ｐ２として、（パブリッシャノードＰ２）−（ブローカノードＢ２）−（ブローカノードＢ１）−（サブスクライバノードＳ１）という配信ルートを通って配信される。
【００２７】
上述したイベント配信ネットワーク１０を構成する任意のノードに本発明の複合イベント処理装置１１が接続され、本発明の複合イベント配信システム１０が構築される。以下、図２を参照しながら本発明の第１の実施形態による複合イベント処理装置１１について説明する。
【００２８】
図２を参照すると、複合イベント処理装置１１は、主制御部１１０と、複合イベント検出部１１１と、受信イベント履歴管理部１１２と、仮想記憶管理部１１３と、記憶部１１４とを含む。
【００２９】
複合イベント検出部１１１は、複合イベントを検出するための条件式を保持し、到着するイベントに対して、条件式との一致判定を行う。この一致判定は、上述したＸＳＱ等の技術が適用可能である。そしてその条件式に含まれるイベントが到着した場合に、受信イベント履歴管理部１１２が提供するＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）を呼び出す。
【００３０】
受信イベント履歴管理部１１２は、到着したイベントの記憶、読み出し、書き換え処理を行う。その処理を実行するためのＡＰＩとして、Ｅｎｑｕｅｕｅ（），Ｄｅｑｕｅｕ（），Ｒｅｐｌａｃｅ（）を複合イベント検出部１１１に提供する。Ｅｎｑｕｅｕｅ（）は、自ノードが管理する記憶領域で、指示されたイベントの保持を行うためのＡＰＩである。また、Ｄｅｑｕｅｕｅ（）は、指示された条件に一致するイベントを、自ノードが管理する記憶部１１４（記憶領域）から読み出すためのＡＰＩである。また、Ｒｅｐｌａｃｅ（）は、自ノードが管理する記憶部１１４に記憶されたイベントを到着したイベントで置換するＡＰＩである。
【００３１】
受信イベント履歴管理部１１２はまた、自ノードの記憶部１１４（記憶領域）、及び隣接するノードに確保される仮想記憶領域に保持された個々の種別のイベント数を管理する。
【００３２】
仮想記憶管理部１１３は、受信イベント履歴管理部１１２が管理する記憶領域とは別に確保された記憶領域を管理する。その処理を実行するためのＡＰＩとして、Ｖｅｎｑｕｅｕｅ（），Ｖｄｅｑｕｅｕｅ（），Ｖｒｅｐｌａｃｅ（）を受信イベント履歴管理部１１２に提供する。Ｖｅｎｑｕｅｕｅ（）は、自ノードが管理する記憶領域で、指示されたイベントの保持を行うためのＡＰＩである。Ｖｄｅｑｕｅｕｅ（）は、指示された条件に一致するイベントを、自ノードの管理する記憶領域から読み出すためのＡＰＩである。Ｖｒｅｐｌａｃｅ（）は、自ノードが管理する記憶領域で、記憶されたイベントを、到着したイベントで置換するＡＰＩである。
【００３３】
なお、主制御部１１０は、上述した複合イベント検出部１１１、受信イベント履歴管理部１１２、仮想記憶管理部１１３を用い、（１）受信したイベントが複合イベント条件式の要素に含まれる場合、前記受信したイベントを保持し、読み出し、又は置換する第１のアプリケーションインタフェース（Ｅｎｑｕｅｕｅ（），Ｄｅｑｕｅｕ（），Ｒｅｐｌａｃｅ（））を呼び出し、（２）第１のアプリケーションインタフェースを提供するとともに、受信したイベントを自ノード内に確保された記憶領域に保持し、読み出し、又は置換するか、配信パスの前段に位置する他ノードに確保される記憶領域に保持し、読み出し、又は置換する第２のアプリケーションインタフェース（Ｖｅｎｑｕｅｕｅ（），Ｖｄｅｑｕｅｕｅ（），Ｖｒｅｐｌａｃｅ（））を呼び出し、（３）第２のアプリケーションインタフェースを提供するとともに、呼び出しに応じて、指定されたイベントを保持する記憶領域の確保を行うためのシーケンス制御を司る。また、記憶部１１４には、上述した受信イベントの他に、後述するルーティングテーブルが格納される。
【００３４】
上述した複合イベント処理装置１１は、単体で複合イベント検出部１１１と、受信イベント履歴管理部１１２と、仮想記憶管理部１１３とを含むが、複合イベント配信システム１を構築するにあたり、図３に示されるように、少なくとも２つの複合イベント処理装置１１、１２を用いて運用される。ここでは、複合イベント処理装置１１では、受信イベント履歴管理部１１１と、複合イベント検出部１１２が、複合イベント処理装置１２では、仮想記憶管理部１２３が連携して動作することにより複合イベントを検出する。なお、複合イベント検出部１１１は、図８を引用して説明したＸＳＱを含む複数のイベント検出器によって構成される。
【００３５】
（第１の実施の形態の動作の説明）
図３では、複合イベント検出装置１１に、複合イベント処理装置１２経由でイベントＡとイベントＢが入力されている。ここでは、順序型の複合イベント条件式Ａ；Ｂ（Ａが発生し、次にＢが発生する）というモデルを用いる。
【００３６】
複合イベント（Ａ；Ｂ）は、複合イベント検出部１１１の複合イベント検出器で検出される。つまり、複合イベント（Ａ；Ｂ）は、複合イベント処理装置１１がイベントＡを受信し、次にイベントＢを受信したときに検出される。図４に、本発明の第１の実施の形態による複合イベント処理装置１１の動作がフローチャートで示されている。
【００３７】
図４を参照すると、複合イベント検出装置１１で受信されたイベントＡは（ステップＳ４０１“ＹＥＳ”）、複合イベント検出部１１１で条件式との一致判定が行われる（ステップＳ４０２）。実際には、イベントＡが、複合イベント検出器の最初の入力となる。この時、複合イベント検出器は初期状態にあるが、イベントＡが入力されたことから状態遷移を起こしてイベントＡを保持する処理を行う。その結果、複合イベント検出部１１１が、受信イベント履歴管理部１１２が提供するＥｎｑｕｅｕｅ（）を呼び出す（ステップＳ４０３）。
【００３８】
複合イベント検出部１１１によりイベント呼び出された受信イベント履歴管理部１１２は、自ノード内に空き記憶領域がある場合（ステップＳ４０４“ＹＥＳ”）、受信したイベントＡを自ノードで保持する（ステップＳ４０５）。一方、自ノード内に空き記憶領域が残っていない場合、受信イベント履歴管理部１１２は、Ｖｅｎｑｕｅｕｅ（）を用いて（ステップＳ４０６）、複合イベント処理装置１２の仮想記憶管理部１２３に新たな記憶領域を確保させ、イベントＡ３００を保持させる（ステップＳ４０７）。
【００３９】
次に、新たにイベントＡが到来した場合、複合イベント検出器１１１ａの状態が変化しないため、同様のシーケンスが繰り返し実行され、複合イベント検出装置１１が受信したイベントＡが、複合イベント検出装置１１、または複合イベント検出装置１２に保持されていく。
【００４０】
次に、複合イベント処理装置１１がイベントＢを受信したとする（ステップＳ３０８“ＹＥＳ”）。この場合、複合イベント検出部１１１の複合イベント検出器は、状態遷移を起こして終了状態へと遷移する。そこで、複合イベント検出器は、複合イベント生成のために、保持したイベントＡを読み出す必要がある。そのため、複合イベント検出部１１１は、受信イベント履歴管理部１１２が提供するＤｅｑｕｅｕｅ（）を呼び出す（ステップＳ４０９）。Ｄｅｑｕｅｕｅ（）によって呼び出された受信イベント履歴管理部１１２は、自ノード内にイベントＡが保持されていれば（ステップＳ４１０“ＹＥＳ”）、そのイベントＡを読み出し、複合イベント検出部１１１へ転送する（ステップＳ４１１）。
【００４１】
一方、複合イベント処理装置１１内にイベントＡが保持されておらず、複合イベント処理装置１２上の仮想記憶管理部１２３にイベントＡが保持されている場合（ステップＳ４１０“ＮＯ”）、受信イベント履歴管理部１１２は、Ｖｄｅｑｕｅｕｅ（）を用いて（ステップＳ４１２）、複合イベント処理装置１２の仮想記憶管理部１１３からイベントＡを読み出し、複合イベント検出部１１１へ転送する（ステップＳ４１３）。このことにより、複合イベント処理装置１１で順序型の複合イベント（Ａ；Ｂ）が検出される。
【００４２】
（第１の実施の形態による効果）
本実施の形態による複合イベント処理装置１では、自ノードの記憶容量が不足すれば、前段に位置するノードに記憶領域を確保し、さらに、前段のノードの記憶容量が不足すれば、さらにその前段に位置するノードに記憶領域を確保する動作を繰り返すことで、柔軟な記憶領域の確保が可能になる。ここで、新たに記憶領域を確保するノードは、各イベントの配信パスにおいて、複合イベント処理装置１１の前段に位置するノードに実装された複合イベント処理装置１２が選択される。これによって、複合イベント処理装置１１は、他の複合イベント処理装置１２との間で確保した記憶領域を共有することが可能になる。
【００４３】
なお、図２の複合イベント処理装置１１が有する機能は、全てをソフトウェアによって実現しても、あるいはその少なくとも一部をハードウェアで実現してもよい。例えば、複合イベント検出部１１１が、受信したイベントが複合イベント条件式の要素に含まれる場合、受信したイベントを保持し、読み出し、又は置換する第１のアプリケーションインタフェースを呼び出すデータ処理、受信イベント履歴管理部１１２が、複合イベント検出部１１１に対し、第１のアプリケーションインタフェースを提供するとともに、受信したイベントを自ノード内に確保された記憶領域に保持し、読み出し、又は置換するか、配信パスの前段に位置する他ノードに確保される記憶領域に保持し、読み出し、又は置換する第２のアプリケーションインタフェース呼び出すデータ処理、仮想記憶管理部１２３が、受信イベント履歴管理部１１２に対し、第２のアプリケーションインタフェースを提供するとともに、受信イベント履歴管理部１１２からの呼び出しに応じて、指定されたイベントを保持する記憶領域の確保を行うデータ処理は、１または複数のプログラムによりコンピュータ上で実現してもよく、また、その少なくとも一部をハードウェアで実現してもよい。
【００４４】
（第２の実施の形態）
【００４５】
以下に説明する第２の実施の形態では、ＤＨＴ（Ｄｉｓｔｒｉｂｕｔｅｄ  Ｈａｓｈ  Ｔａｂｌｅ）を用いたオーバレイネットワーク１００上に、上述したスベント配信ネットワーク１０を構築したモデルを使用して説明する。オーバレイネットワーク１００は、例えば、ＰａｓｔｒｙやＣｈｏｒｄ等の技術で構成される周知の技術である。
【００４６】
図５を参照すると、オーバレイネットワーク１００は、オーバレイネットワークノード５０〜５４で構成され、図１に示すパブリッシュ／サブスクライブ通信方式におけるサブスクライブノード５５がオーバレイネットワークノード５４に接続されている。このうち、オーバレイネットワークノード５０と、５１には、図３に示した複合イベント検出装置１１、１２が同一の装置として、例えばコンピュータ上のソフトウェア（イベント処理プログラム）として、アドオン実装されているものとする。
【００４７】
（第２の実施の形態の動作の説明）
以下、図６に示す動作シーケンス図を参照しながら第２の実施の形態に係る複合イベント配信システム１の動作について説明するが、第１の実施の形態同様、複合イベントを検出するための条件式として、順序型の複合イベント（Ａ；Ｂ）の検出を例示して説明を行う。
【００４８】
まず、複合イベントの条件式（Ａ；Ｂ）は、サブスクライブノード５５により生成され（ステップＳ６０１）、オーバレイネットワークノード５４、５３、５０の経路で登録される（ステップＳ６０２）。
【００４９】
ここで、複合イベントを構成する一方のイベントＡは、オーバレイネットワークノード５１からオーバレイネットワークノード５０へ転送されてきている（ステップＳ６０３）。また、他方のイベントＢは、オーバレイネットワークノード５２から５０へ転送されてきている（ステップＳ６１０）。このように、イベントＡがオーバレイネットワークノード５０（複合イベント処理装置１１）に到来し、次に、イペントＢがオーバレイネットワークノード５０（複合イベント処理装置１１）に到来した場合に複合イベント（Ａ；Ｂ）が検出される。
【００５０】
図７に、オーバレイネットワークノード５０と５１との接続関係が模式的に示されている。オーバレイネットワークノード５０には、図３に示す複合イベント処理装置１１が、オーバレイネットワークノード５１には複合イベント検出装置１２がイベント処理プログラムとして実装されていることは上述したとおりである。つまり、オーバレイネットワークノード５０は、複合イベント処理装置１１として、複合イベント検出部１１１と受信イベント履歴管理部１１２とを含む。また、複合イベント検出部１１１は、周知のオートマトン型のＸＳＱ検出器で構成される。なお、オーバレイネットワークノード５１は、複合イベント処理装置１２として仮想記憶管理部１２３を含む。
【００５１】
上記構成において、オーバレイネットワークノード５０が受信したイベントＡは、複合イベント処理装置１１に転送され、複合イベント検出部１１で複合イベント条件式との合致処理が行われる。ここでは、複合イベント条件式（Ａ；Ｂ）が、複合イベント検出部１１１に保持されているため、複合イベント検出部１１１は、受信イベント履歴管理部１１２が提供するＥｎｑｕｅｕｅ（）を呼び出す（ステップＳ６０４）。
【００５２】
ここで、呼び出された受信イベント履歴管理部１１２は、自ノードで有する記憶部１１４に空き記憶領域がある場合（ステップＳ６０５“ＹＥＳ”）、受信したイベントＡを受信イベント履歴管理部１１２で保持する（ステップＳ６０６）。一方、自ノード内に空き記憶容量の空きが無い場合（ステップＳ６０５“ＮＯ”）、Ｖｅｎｑｕｅｕｅ（）を用い、イベントＡの配信パスとして前段に位置するオーバレイネットワークノード５１上の複合イベント検出装置１２（仮想記憶管理部１２３）に、新たな記憶領域の確保を行わせ、受信したイベントＡを保持させる（ステプＳ６０７〜６０９）。
【００５３】
ここで、オーバレイネットワーク１００中にオーバレイネットワークノード５１〜５４が存在する中で、オーバレイネットワーク５１が選ばれる理由は、イベントＡのルーティング経路が、「オーバレイネットワークノード５１→オーバレイネットワークノード５０」に設定されているからである。つまり、オーバレイネットワークノード５０の受信イベント履歴管理部１１２は、ステップＳ６０８でＡＰＩであるＶｅｎｑｕｅｕｅ（）を呼び出す前に、自身が有するルーティングテーブル５００を参照することによってイベントＡの配信経路を判定している（ステップＳ６０７）。最後に、Ｖｅｎｑｕｅｕｅ（）によって呼び出された仮想記憶管理部１２３は、転送されたイベントＡのための記憶領域を確保し、取得したイベントＡを保持する。
【００５４】
この状況において、新たにイベントＡが到来した場合も同様のシーケンスが繰り返される。つまり、新たなイベントＡは、受信イベント経歴管理部１１２、または仮想記憶管理部１２３に保持されていく。
【００５５】
次に、オーバレイネットワークノード５２からイベントＢが到着し、これをオーバレイネットワークノード５０で受信したとする（ステップＳ６１０）。このとき、複合イベント検出部１１１は、既にイベントＡが到着した状態に遷移している。そのため、複合イベント検出部１１１は、Ｄｅｑｕｅｕｅ（）を用いて受信イベント履歴管理部１１２の読み出しを行う。Ｄｅｑｕｅｕｅ（）によって呼び出された受信イベント履歴管理部１１２は、自ノードの記憶領域にイベントＡが保持されているか否かを判定し（ステップＳ６１１）、保持されている場合（ステップＳ６１１“ＹＥＳ”）、イベントＡを読み出し、複合イベント検出部１１１へ転送する（ステップＳ６１２）。
【００５６】
一方、受信イベント履歴管理部１１２内にイベントＡが保持されておらず、仮想記憶管理部１２３が管理する仮想記憶領域にイベントＡが保持されている場合（ステップＳ６１１“ＮＯ”）、受信イベント履歴管理部１１２は、Ｖｄｒｑｕｅｕｅ（）を用いて（ステップＳ６１３）、仮想記憶管理部１２３上の仮想記憶領域からイベントＡを読み出し、複合イベント検出部１１２へ転送する（ステップＳ６１４）。以上のようにして複合イベント検出装置１１、１２がオーバレイネットワーク１００上で動作する。
【００５７】
（第２の実施の形態による効果）
本実施の形態による複合イベント配信システム１では、柔軟なイベント保持機能が提供されることにより、長周期のイベントを活用した状態監視を行うことができる。例えば、オーバレイネットワーク１００全体の状態変化を、複合イベント配信システム１に反映させ、複合イベント検出装置１１、１２によって、多様な複合イベント条件式に対応したイベント情報を生成することも可能である。本実施の形態による複合イベント配信システム１によれば、これまでの集中サーバの形態とは異なり、分散配置された記憶領域を有効に活用することが可能となり、このことにより、ストレージ容量の事前設計の難易度を軽減することができる。
【００５８】
以上好ましい実施の形態と実施例をあげて本発明を説明したが、本発明は必ずしも、上述実施の形態及び実施例に限定されるものでなく、その技術的思想の範囲内において様々に変形して実施することができる。
【符号の説明】
【００５９】
１：複合イベント配信システム
１０：イベント配信ネットワーク
１１、１２：複合イベント処理装置
５０〜５５：オーバレイノード
５６：サブスクライブ端末
１００：オーバレイネットワーク
１１０：主制御部
１１１：複合イベント検出部
１１２：複合イベント履歴管理部
１１３、１２３：仮想記憶管理部
５００：ルーティングテーブル
【図１】
2011008614.tif 000003
【図２】
2011008614.tif 000004
【図３】
2011008614.tif 000005
【図４】
2011008614.tif 000006
【図５】
2011008614.tif 000007
【図６】
2011008614.tif 000008
【図７】
2011008614.tif 000009
【図８】
2011008614.tif 000010