特許第5864583号(P5864583)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ オラクル・インターナショナル・コーポレイションの特許一覧

特許5864583複合イベント処理におけるパラメータ化されたクエリ/ビューへのサポート
<>
  • 特許5864583-複合イベント処理におけるパラメータ化されたクエリ/ビューへのサポート 図000009
  • 特許5864583-複合イベント処理におけるパラメータ化されたクエリ/ビューへのサポート 図000010
  • 特許5864583-複合イベント処理におけるパラメータ化されたクエリ/ビューへのサポート 図000011
  • 特許5864583-複合イベント処理におけるパラメータ化されたクエリ/ビューへのサポート 図000012
  • 特許5864583-複合イベント処理におけるパラメータ化されたクエリ/ビューへのサポート 図000013
  • 特許5864583-複合イベント処理におけるパラメータ化されたクエリ/ビューへのサポート 図000014
  • 特許5864583-複合イベント処理におけるパラメータ化されたクエリ/ビューへのサポート 図000015
  • 特許5864583-複合イベント処理におけるパラメータ化されたクエリ/ビューへのサポート 図000016
  • 特許5864583-複合イベント処理におけるパラメータ化されたクエリ/ビューへのサポート 図000017
  • 特許5864583-複合イベント処理におけるパラメータ化されたクエリ/ビューへのサポート 図000018
  • 特許5864583-複合イベント処理におけるパラメータ化されたクエリ/ビューへのサポート 図000019
  • 特許5864583-複合イベント処理におけるパラメータ化されたクエリ/ビューへのサポート 図000020
  • 特許5864583-複合イベント処理におけるパラメータ化されたクエリ/ビューへのサポート 図000021
  • 特許5864583-複合イベント処理におけるパラメータ化されたクエリ/ビューへのサポート 図000022
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5864583
(24)【登録日】2016年1月8日
(45)【発行日】2016年2月17日
(54)【発明の名称】複合イベント処理におけるパラメータ化されたクエリ/ビューへのサポート
(51)【国際特許分類】
   G06F 17/30 20060101AFI20160204BHJP
【FI】
   G06F17/30 330A
【請求項の数】10
【全頁数】34
(21)【出願番号】特願2013-529376(P2013-529376)
(86)(22)【出願日】2011年9月16日
(65)【公表番号】特表2013-540308(P2013-540308A)
(43)【公表日】2013年10月31日
(86)【国際出願番号】US2011052019
(87)【国際公開番号】WO2012037511
(87)【国際公開日】20120322
【審査請求日】2014年7月30日
(31)【優先権主張番号】13/193,377
(32)【優先日】2011年7月28日
(33)【優先権主張国】US
(31)【優先権主張番号】61/384,182
(32)【優先日】2010年9月17日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】特許業務法人深見特許事務所
(72)【発明者】
【氏名】ジェーン,パルル
(72)【発明者】
【氏名】シュクラ,ビクラム
(72)【発明者】
【氏名】スリニバサン,アナンド
(72)【発明者】
【氏名】デ・カストロ・アルベス,アレクサンダー
(72)【発明者】
【氏名】シャオ,エリック
【審査官】 田中 秀樹
(56)【参考文献】
【文献】 米国特許出願公開第2008/0195577(US,A1)
【文献】 米国特許第05802523(US,A)
【文献】 米国特許出願公開第2002/0023211(US,A1)
【文献】 米国特許出願公開第2008/0301125(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/30
(57)【特許請求の範囲】
【請求項1】
複合イベント処理(CEP)内でパラメータ化されたクエリを設定するためのシステムであって、
メモリと、
前記メモリに結合されたプロセッサとを備え、
前記メモリは、命令セットを内部に格納させており、前記命令セットは、前記プロセッサによって実行されると、前記プロセッサに、
1つ以上のバインド変数を含むクエリテンプレートを設定させ、
前記1つ以上のバインド変数に対応するパラメータセットを設定させ、
前記1つ以上のバインド変数の位置を判断するために前記クエリテンプレートを解析させ、
設定された前記パラメータセットをスキャンして、どの前記パラメータセットが前記1つ以上のバインド変数にバインドされるのかを判断させ、
前記パラメータセットにバインドされると判断された前記1つ以上のバインド変数をバインドさせ、
前記クエリテンプレートに、タイプを有しない前記1つ以上のバインド変数に基づきユーザの述語を挿入させ、
バインドされた前記1つ以上のバインド変数を対応する前記パラメータセットに置換させ
イベントストリームを処理するためのパラメータ化されたクエリ内で生じるプレースホルダを判断させ、
ランタイム時に、判断された前記プレースホルダを、前記パラメータセットに対応するパラメータ値に置換させ、
前記バインド変数の置換と前記プレースホルダの置換に基づき、1以上の変数が異なる複数のクエリを生成させる、システム。
【請求項2】
前記命令セットは、前記プロセッサによってさらに実行されると、前記プロセッサに、前記1つ以上のバインド変数の前記判断された位置のマップを構築させ、
前記1つ以上のバインド変数を対応する前記パラメータセットに置換させることは、前記1つ以上のバインド変数の前記判断された位置のマップを用いて、バインドされた前記パラメータセットを前記クエリテンプレート内に置くことをさらに含み、
前記1つ以上のバインド変数に対応する前記パラメータセットを設定することは、静的または動的に実行される、請求項1に記載のCEP内でパラメータ化されたクエリを設定するためのシステム。
【請求項3】
前記1つ以上のバインド変数に対応する前記パラメータセットを設定することは、前記クエリテンプレートの展開時にコンフィグファイルを用いることで静的に実行される、請求項2に記載のCEP内でパラメータ化されたクエリを設定するためのシステム。
【請求項4】
前記1つ以上のバインド変数に対応する前記パラメータセットを設定することは、モジュールマネージメントソリューションを用いることで動的に実行され、
コンフィグファイルは、アプリケーションアソシエーション、プロセッサアソシエーション、クエリルール、前記クエリテンプレート、前記パラメータセット、または前記バインディングのうち、1つ以上のものを含む、請求項2に記載のCEP内でパラメータ化されたクエリを設定するためのシステム。
【請求項5】
前記命令セットは、前記プロセッサによってさらに実行されると、前記プロセッサに、
前記1つ以上のバインド変数が置換された前記パラメータセットを含む前記クエリテンプレートに基づいて、新しいクエリのインスタンスを生成させ、
ランタイムシステムのために新しい前記パラメータセットを用いて前記新しいクエリのインスタンスを生成させ、
前記新しいクエリをCEPサーバに注入させ、
前記新しいクエリに基づいて、クエリ実行計画を構築させ、
継続クエリとしてランタイム環境に前記クエリ実行計画を追加させ、
前記継続クエリを実行させる、請求項1に記載のCEP内でパラメータ化されたクエリを設定するためのシステム。
【請求項6】
前記命令セットは、前記プロセッサによってさらに実行されると、前記プロセッサに、
多数のパラメータセットが同じバインド変数に対応しているということを判断させ、
同じ前記バインド変数に対応している前記多数のパラメータセットの各々について、独立した新しいクエリのインスタンスを生成させる、請求項1に記載のCEP内でパラメータ化されたクエリを設定するためのシステム。
【請求項7】
前記命令セットは、前記プロセッサによってさらに実行されると、前記プロセッサに、
前記パラメータセットをストリングに変換させ、
前記パラメータセットの前記ストリングを確認して前記パラメータセットのフォームを判断させ、
前記パラメータセットの判断されたタイプと対応するバインド変数のタイプとを比較させ、
対応する前記バインド変数および前記パラメータセットの前記タイプは、INT、FLOAT、LONG、BIGDECIMAL、DOUBLE、およびSTRINGのうち、1つ以上のものを含み、
前記プロセッサに、さらに、
前記対応するバインド変数の前記タイプにマッチする前記パラメータセットの判断された前記タイプに応じて、前記パラメータセットを検証させる、請求項1に記載のCEP内でパラメータ化されたクエリを設定するためのシステム。
【請求項8】
前記命令セットは、前記プロセッサによってさらに実行されると、前記プロセッサに、
新しいパラメータセットがバインディングのために指定されていることを判断させ、
新しいパラメータセットで指定される前に、パラメータセットを用いてインスタンスが生成されたクエリを特定させ、
新しいパラメータセットで指定される前に、パラメータセットを用いてインスタンスが生成された前記クエリを削除させる、請求項1に記載のCEP内でパラメータ化されたクエリを設定するためのシステム。
【請求項9】
前記命令セットは、前記プロセッサによってさらに実行されると、前記プロセッサに、
前記クエリを生成させ、
前記イベントストリームを処理させ、
前記システムは、CQLエンジンを含むCEPサーバをさらに備え、
前記CQLエンジンは、複数のCEPアプリケーションのインスタンスを生成し、
前記CEPサーバと通信するビジュアライザをさらに備え、
前記ビジュアライザは、処理された前記イベントストリームからの結果情報を表示するように構成されている、請求項に記載のCEP内でパラメータ化されたクエリを設定するためのシステム。
【請求項10】
コンピュータに、複合イベント処理(CEP)内でパラメータ化されたクエリを設定する方法を実行させるためのプログラムであって、
前記方法は、
1つ以上のバインド変数を含むクエリテンプレートを設定し、
前記1つ以上のバインド変数に対応するパラメータセットを設定し、
前記1つ以上のバインド変数の位置を判断するために前記クエリテンプレートを解析し、
設定された前記パラメータセットをスキャンして、どの前記パラメータセットが前記1つ以上のバインド変数にバインドされるのかを判断し、
前記パラメータセットにバインドされると判断された前記1つ以上のバインド変数をバインドし、
前記クエリテンプレートに、タイプを有しない前記1つ以上のバインド変数に基づきユーザの述語を挿入し、
バインドされた前記1つ以上のバインド変数を対応する前記パラメータセットに置換し、
イベントストリームを処理するためのパラメータ化されたクエリ内で生じるプレースホルダを判断し、
ランタイム時に、判断された前記プレースホルダを、前記パラメータセットに対応するパラメータ値に置換し、
前記バインド変数の置換と前記プレースホルダの置換に基づき、1以上の変数が異なる複数のクエリを生成させる、プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
相互参照
本PCT出願は、2011年7月28日に出願された米国特許出願番号第13/193,377号の優先権を主張し、この米国特許出願番号第13/193,377号は、「複合イベント処理におけるパラメータ化されたクエリ/ビューへのサポート("SUPPORT FOR PARAMETERIZED QUERY/VIEW IN COMPLEX EVENT PROCESSING")」と題された、2010年9月17日に出願された同時係属米国仮特許出願番号第61/384,182号からの優先権を主張する。同時係属米国仮特許出願番号第61/384,182号は、すべての目的のために、あたかも全文において述べられたかのように、引用により本明細書に援用される。
【0002】
背景
本発明に係る実施形態は、データ処理システムに関し、より特定的には、時間の意味論(temporal semantics)を有するストリーミングデータに関するシステムおよびアプリケーションに関する。
【背景技術】
【0003】
概して、複合イベント処理(Complex Event Processing:CEP)は、分散型メッセージベースのシステム、データベース、およびアプリケーションからリアルタイムに情報を集計するアプローチであり、さもなければ注目されずに終わってしまうであろうパターンおよび傾向を識別するためのルールを動的に適用する。これにより、企業は、非常に複雑な、分散型の、異種IT環境の全域にわたって、一見関係のないイベントによって表わされる例外および機会を識別し、また予測さえもすることが可能となる。CEPは、ニアリアルタイムで高速ストリーミングデータにおけるパターンを相互に関連付け、集計し、強化し、そして検知するために利用されてもよい。
【0004】
さらに、継続的クエリ言語(Continuous Query Language:CQL)ステートメントは、イベントを含むイベントストリームを処理するために利用される。イベントストリームは、データ部を参照するタプル(tuple)を含んだ、一連の<tuple,timestamp>対と考えられ得る。ストリームは、複数のタプルを有し得るし、タイムスタンプは、イベントストリーム内のタプルについて順序を定義し得る。Oracle(登録商標)Complex Event Processing(OCEP)は、そのようなイベントストリームを処理するために利用される。
【0005】
さらに、CEPアプリケーションは、複数のクエリおよびビューを有することができ、そして、これらはプロセッサによって実行される。あらゆる現実世界のアプリケーションは、範囲パラメータのように、ある値が異なるのみである何百ものクエリおよびビューから構成されていてもよい。ベースクエリまたはベースビューにおけるわずかな変化が、何百もの従属クエリおよび従属ビューに影響を及ぼすことになるため、そのようなシナリオにおいては、何百ものクエリおよびビューを維持することは悪夢になり得る。
【0006】
ある形式のパラメータ化またはワイルドカードプレースホルダ(wildcard placeholder)機能の利用は、アプリケーション開発者が、基準が少し異なるだけで類似するクエリおよびビューを書く際の手助けとなる。一実施形態では、ユーザは、ランタイム時の値でバインドされ得るワイルドカードプレースホルダを置くことができる。パラメータ化されたクエリまたはビューは、異なる値で利用され得るテンプレートとして見なされ得る。これにより、ユーザは、バインディング(binding)において設定される異なる値についてマルチプルCQLステートメントを内部で生成可能なシングルCQLステートメントを書くことができる。たとえば、
【0007】
【数1】
【0008】
上述したクエリは、プロジェクトリストの一定値またはWHERE条件の一定値のいずれが異なるということに留意すべきである。そのようなクエリが何百も存在する場合には、どんなビジネスユーザであってもそのような何百ものクエリおよびビューを書かなくてはならないかもしれない。したがって、これらおよび他の理由で、技術の向上が必要とされている。
【発明の概要】
【課題を解決するための手段】
【0009】
概要
本発明に係る実施形態は、あらゆる種類の型(type)検査などもせずに、CEPストリング置換を利用して、バインド変数について設定されるパラメータセットにバインド変数を置き換えることを含む。これは、バインド変数でも型検査などを通過する必要があるという点で標準データベースとは異なる。結果として、CEPコンテキスト内でのバインド変数は、より柔軟で、より強力な解決手段を提供し、当該バインド変数によりユーザは任意の述語を挿入することができる。したがって、CEP環境内でのバインド変数は型がなくてもよい。
【0010】
本発明は、複合イベント処理(CEP)内でパラメータ化されたクエリを設定する方法を含む。方法は、1つ以上のバインド変数を含むクエリテンプレートを設定するステップと、1つ以上のバインド変数に対応するパラメータセットを設定するステップと、1つ以上のバインド変数の位置を判断するためにクエリテンプレートを解析するステップとを含む。方法は、さらに、設定されたパラメータセットをスキャンして、どのパラメータセットが1つ以上のバインド変数にバインドされるのかを判断するステップと、パラメータセットにバインドされると判断された1つ以上のバインド変数をバインドするステップと、バインドされた1つ以上のバインド変数を対応するパラメータセットに置換するステップとを含む。
【0011】
方法は、さらに、1つ以上のバインド変数の当該判断された位置のマップを構築するステップを含む。1つ以上のバインド変数を対応するパラメータセットに置換するステップは、1つ以上のバインド変数の当該判断された位置のマップを用いて、バインドされたパラメータセットをクエリテンプレート内に置くステップを含む。1つ以上のバインド変数に対応するパラメータセットを設定するステップは、静的または動的に実行される。
【0012】
さらに他の実施形態では、1つ以上のバインド変数に対応するパラメータセットを設定するステップは、クエリテンプレートの展開時にコンフィグファイルを用いることで静的に実行され、1つ以上のバインド変数に対応するパラメータセットを設定するステップは、モジュールマネージメントソリューションを用いることで動的に実行される。コンフィグファイルは、アプリケーションアソシエーション(application association)、プロセッサアソシエーション(processor association)、クエリルール、クエリテンプレート、パラメータセット、またはバインディングのうち、1つ以上のものを含む。
【0013】
方法は、さらに、1つ以上のバインド変数が置換されたパラメータセットを含むクエリテンプレートに基づいて新しいクエリのインスタンスを生成するステップと、新しいクエリのインスタンスを生成するステップと、新しいクエリをCEPサーバに注入するステップとを含む。方法は、さらに、新しいクエリに基づいてクエリ実行計画を構築するステップと、継続クエリとしてランタイム環境にクエリ実行計画を追加するステップと、継続クエリを実行するステップとを含む。
【0014】
方法は、さらに、多数のパラメータセットが同じバインド変数に対応しているということを判断するステップと、同じバインド変数に対応している多数のパラメータセットの各々について、独立した新しいクエリのインスタンスを生成するステップとを含む。
【0015】
他の実施形態では、複合イベント処理(CEP)内でパラメータ化されたクエリを設定するためのシステムが説明される。システムは、メモリと、メモリに結合されたプロセッサとを含む。メモリは、命令セットを内部に格納させており、命令セットは、プロセッサによって実行されると、プロセッサに、イベントストリームを処理するためのパラメータ化されたクエリ内で生じるプレースホルダを判断させ、プレースホルダのためのパラメータを判断させ、プレースホルダをパラメータに置き換えることでパラメータ化されたクエリからクエリを生成させ、当該クエリを生成させ、イベントストリームを処理させる。
【0016】
システムは、さらに、CQLエンジンを含むCEPサーバを含む。CQLエンジンは、CEPアプリケーションのインスタンスを生成する。システムは、CEPサーバと通信するビジュアライザ(visualizer)をも含む。ビジュアライザは、処理されたイベントストリームからの結果情報を表示するように構成されている。
【0017】
さらに他の実施形態では、コンピュータ可読媒体が説明される。コンピュータ可読媒体は、1つ以上のバインド変数を含むクエリテンプレートを設定するための命令と、1つ以上のバインド変数に対応するパラメータセットを設定するための命令と、1つ以上のバインド変数の位置を判断するためにクエリテンプレートを解析するための命令とを含む。コンピュータ可読媒体は、さらに、設定されたパラメータセットをスキャンしてどのパラメータセットが1つ以上のバインド変数にバインドされるのかを判断するための命令と、パラメータセットにバインドされると判断された1つ以上のバインド変数をバインドするための命令と、バインドされた1つ以上のバインド変数を対応するパラメータセットに置換するための命令とを含む。
【0018】
コンピュータ可読媒体は、さらに、新しいパラメータセットがバインディングのために指定されていることを判断するための命令と、新しいパラメータセットで指定される前に、パラメータセットを用いてインスタンスが生成されたクエリを特定するための命令と、新しいパラメータセットで指定される前に、パラメータセットを用いてインスタンスが生成されたクエリを削除するための命令と、ランタイムシステムのために新しいパラメータセットを用いてクエリのインスタンスを生成するための命令とを含む。
【0019】
コンピュータ可読媒体は、さらに、パラメータセットをストリングに変換するための命令と、パラメータセットのストリングを確認してパラメータセットのフォームを判断するための命令と、パラメータセットの判断されたタイプと対応するバインド変数のタイプとを比較するための命令と、対応するバインド変数のタイプにマッチするパラメータセットの判断されたタイプに応じて、パラメータセットを検証するための命令とを含む。対応するバインド変数およびパラメータセットのタイプは、INT,FLOAT,LONG,BIGDECIMAL,DOUBLE,およびSTRINGのうち、1つ以上のものを含んでもよい。
【図面の簡単な説明】
【0020】
図1】本発明の実施形態に従うイベント処理サーバのブロック図である。
図2A】本発明の実施形態に従うCEPにおいてパラメータ化されたクエリを実行するためのフロー図である。
図2B】本発明の実施形態に従うCEPにおいてパラメータ化されたクエリを実行するためのフロー図である。
図2C】本発明の実施形態に従うCEPにおいてパラメータ化されたクエリを実行するためのフロー図である。
図3】本発明の実施形態に従うCEPにおいてパラメータ化されたクエリを実行するためのフロー図である。
図4A】本発明の実施形態に従うCEPにおけるパラメータ化されたクエリのブロック図である。
図4B】本発明の実施形態に従うCEPにおけるパラメータ化されたクエリのブロック図である。
図4C】本発明の実施形態に従うCEPにおけるパラメータ化されたクエリのブロック図である。
図4D】本発明の実施形態に従うCEPにおけるパラメータ化されたクエリのブロック図である。
図5A】本発明の実施形態に従うCEPにおいてパラメータ化されたクエリを実行するためのブロック図である。
図5B】本発明の実施形態に従うCEPにおいてパラメータ化されたクエリを実行するためのブロック図である。
図6】本発明の実施形態に従うCEPにおいてパラメータ化されたクエリを実行するためのユーザインターフェイスである。
図7】本発明の実施形態に従って利用され得るシステム環境の簡略ブロック図である。
図8】本発明の実施形態に従って利用され得るコンピュータシステムの簡略ブロック図である。
【発明を実施するための形態】
【0021】
詳細な説明
以下の記載では、説明を目的として、本発明のさまざまな実施形態の理解のために多くの詳細が説明される。しかしながら、ある実施形態が、これらの詳細の一部なしに実行され得るということは当業者にとっては明らかであろう。
【0022】
本発明のある局面は、いくつかの特定の値が異なるCEPにおいてクエリおよび/またはビューを書くための簡易な方法をユーザに提供するパラメータ化アプローチを含む。たとえば、上述したクエリは、テンプレートとして機能することができ、後に、バインディングのための可能値を設定することができる単一のパラメータ化されたクエリを有することができる。当該バインディングは、内部で多数のクエリおよびビューを生成してもよい。
【0023】
以下のクエリ:
【0024】
【数2】
【0025】
では、:1と:2とはプレースホルダとして機能する。異なる値が展開時またはランタイム時にこれらのプレースホルダにバインドされ得る。さらに、そのようなクエリを処理するように構成されたプロセッサ構成要素に関連付けられたコンフィグファイルは、次のように記載されてもよい:
【0026】
【数3】
【0027】
上記の例では、MarketQuery CQLクエリは、2つのプレースホルダを含む。1つは、SELECT節の中に、もう1つはWHERE節の中に含まれる。この実施形態では、これらのプレースホルダのための値は、コンフィグファイル自体にも含まれる(または、これらのプレースホルダのための値はランタイム中に設定されてもよい)。<binding id="MarketQuery">要素は、ランタイム時にMarketQueryに引き継がれるパラメータセットのリストを指定している。各々のパラメータセットは、単一の<params>要素で指定される。パラメータ化されたクエリ内には2つのプレースホルダが存在しているので、各々の<params>要素が、コンマで分離された2つの値を指定する。
【0028】
ランタイム時に、プレースホルダが対応するパラメータ値に置き換えられた後、前にパラメータ化されたクエリが事実上次の3つのクエリに分解される:
【0029】
【数4】
【0030】
さらに、本発明に係るある局面は、パラメータセットを操作するためにJava(登録商標)MBean API'sを利用することを含む。一実施形態では、パラメータ化されたクエリおよびビューは、展開時またはランタイム時にクライアントから追加され得る。さらに、Java(登録商標)Management Extensions(JMX)アーキテクチャベースのMBean APIsが、パラメータ化されたクエリまたはビューに対応するバインディングにアクセスするために、または当該バインディングを修正するために設定されてもよい。クライアントは、同じことをするためにMBean APIsを呼び出すこともできる。一実施形態では、次のMBean APIsがそのようなバインディングをサポートするために設定されてもよい:
【0031】
【数5】
【0032】
したがって、本発明に係る実施形態によると、ユーザは、展開時またはランタイム時に異なるバインディングにバインドされ得る単一のパラメータ化されたクエリテンプレートまたはビューテンプレートを書くことができる。ユーザは、内部で新しいクエリを生成し、それを実行する新しいバインディングを設定することができる。このクエリおよびビューのテンプレートバージョンは、いくつかの定数だけが異なるクエリを追加および/または削除するための効果的な方法を提供する。さらに、クエリおよびビューのそのようなパラメータ化またはテンプレートスタイルは、何百ものクエリを動的に修正/追加/削除するための非常にユーザフレンドリな方法を提供する。それは、CQLクエリを書くためのユーザフレンドリな方法を提供し、同様の多くのルールを作る際の使いやすさを提供し、そのようなルールの簡易な管理方法を提供する。
【0033】
本発明のさらに他の局面では、イベントストリームを処理するためのパラメータ化されたクエリ内に存在するプレースホルダを判断するための技術を提供する。次に、プレースホルダのためのパラメータが判断されてもよい。これは、展開時(たとえば、上述したようにコンフィグファイル内で指定される)またはランタイム中に提供されてもよい。次に、プレースホルダをパラメータに置換することによって、クエリが、パラメータ化されたクエリから生成されてもよい。プレースホルダのためのパラメータセットが多数存在する場合には、多数のクエリが単一のパラメータ化されたクエリから生成されてもよい。次に、置換から生成されたクエリは、クエリに関する実行可能な命令を生成するように構成されているCQLエンジンに設定されてもよい。次に、実行可能な命令が、イベントストリームを処理するために実行されてもよい。
【0034】
次に図1を参照すると、本発明に係る実施形態を具体化し得るシステム100の簡略ブロック図が示されている。図1に示されているように、システム100は、イベント処理サーバ102を含み、イベント処理サーバ102は、1つ以上の入力データまたはイベントストリーム104,106,および108を処理するように構成されている。ストリーム104,106,および108は、各種ソースから受信されてもよく、その各種ソースは、データベース、ファイル、メッセージサービス、さまざまなアプリケーション、さまざまな種類のセンサのような装置(たとえば、RFIDセンサ、温度センサなど)、ティッカー(ticker)などを含む。サーバ102は、プッシュ型機構、またはプル型機構または他の機構を介してストリームを受信してもよい。
【0035】
データまたはイベントストリームは、リアルタイムな一連のイベントである。多数のイベントがストリーム内で受信されてもよい。したがって、データストリームはバインドされていないデータセットのストリームとして考えることができる。一実施形態では、データストリームは、一連の<tuple, timestamp>対である。タプルとはストリームのデータ部のことを言う。タプルは、テーブルのロー(row)と同様なものとして考えられてもよい。ストリーム内のタプルは、スキーマを有する。ストリームは、多数のタプルを含み得る。タイムスタンプは、データストリーム内のタプルについて順序を定義する。データストリーム内のタイムスタンプは、アプリケーションの時間の概念を反映し得る。たとえば、タイムスタンプは、イベントストリームを受信するシステム上のアプリケーションによってセットされ得る。受信システムは、たとえば、イベントストリームの構成と、タイムスタンプとしてアプリケーション時間またはシステム時間を利用するために用いられる機構とを定義するために用いられるCREATE STREAM DDLにおいて指定された場合には、アプリケーションによって構成されるように受信時にイベントをタイムスタンプしてもよい。他の実施形態では、タプルと関連付けられたタイムスタンプは、データイベントを送るアプリケーションの時間に対応していてもよい。タイムスタンプは、ストリームのスキーマの一部である。ストリーム内には1または多数のタプルが同じタイムスタンプで存在し得る。ストリーム内のタプルは、一連のイベントとして見ることができ、したがって、データストリームは、イベントストリームとも呼ばれる。そのため、イベントストリームは、各々が関連付けられたタイムスタンプに一連のイベントを含むと考えることができる。たとえば、イベントストリームは、センサから読み取られた10度、15度、20度などのような一連の温度と、関連付けられたタイムスタンプとを含んでいてもよい。このアプリケーションの目的のために、“タプル”および“イベント”という用語は互換的に使用されている。
【0036】
システム100は、イベントストリームを処理するように構成されたイベント処理サーバ102を含む。イベント処理サーバ102は、1つ以上のイベントストリームを受信してもよい。図1に示すように、イベント処理サーバ102は、ストリーム104、106、および108を受信する。各々のイベントストリームは、1つ以上のイベントを含む。ストリーム内のイベントは、特定の時点で順にサーバ102によって受信される。サーバ102は、入力ストリーム上でさまざまな種類の処理を実行するように構成されている。本発明に係る実施形態に従うと、サーバ102は、サーバ102によって受信されたイベントストリーム内のイベントに基づいて、入力イベントストリーム内のパターンを検知するように構成されている。一実施形態では、サーバ102は、サーバ102がイベントを受信するときに分析されているストリームのイベント上でバックトラッキング処理を実行せずに、パターンマッチングを実行する。パターンマッチングは、入力ストリームに適用されるある種類の継続クエリを利用して実行されてもよい。サーバ102は、また、入力イベントストリーム上および他の操作上で他の継続クエリを実行するなど、入力ストリーム上で他の種類の処理を実行してもよい。イベント処理サーバの例としては、Oracle(登録商標)社のOracle Complex Event Processorがある。あるいは、MATCH_RECOGNIZEも、パターンマッチングを実行するために用いられてもよい。
【0037】
図1に示された実施形態では、サーバ102は、パターンマッチングモジュール110を含み、パターンマッチングモジュール110は、1つ以上のイベントストリームのためのパターンマッチングに関連する処理を実行するように構成されている。図1に示すように、パターンマッチングモジュール110は、パターン入力インターフェイス112、クラステクニックデタミネータ(class-technique determinator)113、オートマトンジェネレータ(automaton generator)114、およびマッチャー(matcher)116を含む。パターン入力インターフェイス112は、イベントストリーム内でマッチさせる対象のパターンを指定する情報を受信するためのインターフェイスを提供する。パターン入力インターフェイス112は、マッチさせる対象の1つ以上のパターンを指定する情報を入力可能にするグラフィカル・ユーザ・インターフェイス、マッチさせる対象のパターンを指定するためのコマンドラインインターフェイス、または他のインターフェイスを提供してもよい。マッチさせる対象のパターンは、サーバ102のユーザによって指定されてもよい。マッチさせる対象のパターンを特定する情報は、他のソースから受信されてもよく、たとえば、他の構成要素もしくはイベント処理サーバ102のモジュール、または、他のシステムもしくはアプリケーションから受信されてもよい。
【0038】
一実施形態では、マッチさせる対象のパターンは、正規表現を用いて指定される。正規表現は、マッチさせる対象のパターンを表す記号のストリング(相関名または相関変数とも称される)である。正規表現は、1つ以上の記号を用いて構築され、1つ以上の演算子を利用してもよい。演算子の例としては、連結(concatenation)演算子(たとえば、正規表現における記号間での“AND”演算子は、記号間のAND関係を示すために用いられてもよい)、代替演算子(たとえば、縦棒'|'は、記号に関するOR条件を示す正規表現において記号を分離してもよい)、1つ以上の限定記号、グループ化演算子(たとえば、丸括弧で示される)などを含むがこれらに限定されない。限定記号の例としては、限定記号が関連付けられる記号の0以上のオカレンス(occurrence)を意味するアスタリスク'*'、限定記号が関連付けられる記号の1以上のオカレンスを意味するプラス記号'+'、限定記号が関連付けられる記号の0または1のオカレンスを意味するクエスチョンマーク'?'、リラクタント(reluctant)限定記号などを含む。正規表現のための関連付けられたシンタックスを含む、利用され得る演算子および限定記号の例は、Fred Zemkeらによる“Pattern Matching in Sequence of Rows (12)”、ISO/IEC JTCi/SC32 WG3:URC-nnn、2007年7月31日付けANSI NCITS H2-2006-nnnにおいて提供および記載されている。その全内容は、すべての目的のために、引用により本明細書に援用される。
【0039】
従来、正規表現は、主に、ストリング内のパターンを見つけるために利用されてきた。本発明に係る実施形態では、正規表現力は、イベント処理サーバ102で受信されるイベントストリーム内のパターンにマッチさせるために利用される。正規表現は、マッチさせる対象のパターンを特定するための単純、かつ簡潔、かつ柔軟性のある方法を提供する。図1に示される実施形態では、イベント処理サーバ102は、1以上のイベントストリーム内でマッチさせる対象の正規表現を指定するパターン情報118を受信してもよい。一実施形態では、パターンは、パターンマッチングモジュール110のパターン入力インターフェイス112を用いて指定されてもよい。
【0040】
パターン情報118は、異なる言語を用いて設定されてもよい。一実施形態では、データベースをクエリするために一般に用いられるSQLのようなプログラミング言語が利用されてもよい。イベントストリームに関して、マッチさせる対象のパターンを表現するためのSQLが拡張されてもよい。たとえば、パターン情報118は、SQLクエリを指定してもよく、当該SQLクエリは、イベント処理サーバ102によって受信された1以上のイベントストリーム内においてマッチさせる対象のパターンを指定する正規表現を含む。
【0041】
Oracleは、複合イベント処理(CEP)製品においてCQL言語(継続クエリ言語)をサポートする。CQLは、ストリーム処理のために拡張したSQLと極めて類似している。パターンマッチング構成は、イベントストリームに関してのパターンマッチング要件を特定する目的のために、CQLを拡張するためCQLにおいて採用されてきた正規表現(たとえば、Fred Zemkeらによる“Pattern Matching in Sequence of Rows (12)”、 ISO/IEC JTCi/SC32 WG3:URC-nnn、2007年7月31日付けANSI NCITS H2-2006-nnnに記載された構成であり、その全内容は、すべての目的のために、引用により本明細書に援用される)を介してパターンマッチングを指定するためにSQLを拡張するよう提案している。
【0042】
典型的には、クエリパターンに関するパターンマッチングは、単一の入力ストリーム上でのみ行なわれる。また、パターンマッチングは、たとえば、CQLを用いて、多数のイベントストリーム上で実行されてもよい。一実施形態では、これは、まず関連するすべての入力ストリームのUNIONを実行することでなされてもよい。当該入力ストリーム上では、パターンマッチングは、中間ストリームに対応しているビューを定義する結果に伴ってなされるようになっており、マッチさせる対象のパターンがこの単一の中継ストリーム上で指定され得る。次に、そのパターンをビューに含まれているすべてのストリームにマッチさせる。
【0043】
次に、図2Aを参照して、本発明に係る実施形態に従う、CEPにおいてパラメータ化されたクエリを実行する方法200を説明する。ブロック205のプロセスでは、1つ以上のバインド変数を含むクエリテンプレートが設定される。バインド変数に対応するパラメータセット(すなわち、バインド変数がバインドされたもの)が設定される(ブロック210のプロセス)。一実施形態では、パラメータセットが静的に(たとえば、コンフィグファイルを介して典型的には展開時になされる)またはランタイム時に動的に(たとえば、JMXもしくは他の機構を用いて)設定されてもよい。その結果、JMXを用いる動的プロビジョニングはランタイム中に利用され、また、それは、パラメータセットの削除のため、新しいパラメータセットの設定のためなどに利用され得る。
【0044】
ブロック215のプロセスでは、クエリテンプレートがバインド変数の位置を判断するために解析される。一実施形態では、バインド変数は、たとえば、:1、:2、:3などで識別されてもよい。クエリ内のバインド変数の順序は、1、2、3などの順序でなくてもよい。その結果、バインド変数の当該判断された位置のマップが構築されてもよい(ブロック220のプロセス)。
【0045】
ブロック225のプロセスでは、設定されたパラメータリストセットをスキャンして、対応するバインド変数にバインドされたパラメータセットを判断してもよく、それから、バインディングが起こってもよい(ブロック230のプロセス)。ブロック235のプロセスでは、バインド変数がパラメータセットに置換されてもよい。
【0046】
図2Aの‘A’点から図2Bの‘A’点に移動して、本発明に係る実施形態に従うと、CEPにおいてパラメータ化されたクエリを実行する方法201が説明される。ブロック240の決定では、同じバインド変数セットに関する多数のパラメータセットが存在するかどうかを判断する。たとえば:
【0047】
【数6】
【0048】
さらに、多数組のパラメータセットが同じバインド変数に対応していないと判断された場合、単一の新しいクエリが複数組のパラメータセットで生成される(ブロック245のプロセス)。多数のパラメータセットが同じバインド変数に対して設定されていると判断された場合、各々のパラメータのために、独立した新しいクエリのインスタンスが生成される(ブロック250のプロセス)。
【0049】
したがって、ブロック255のプロセスで、インスタンスが生成されたクエリは、CEPサーバ内に注入される(クエリはCQLエンジンに送られる)。次に、CQLエンジンは、クエリ実行計画を構築し(ブロック260のプロセス)、ランタイム環境にクエリを継続クエリとして追加する(ブロック265のプロセス)。最後に、ブロック270のプロセスで、インスタンスが生成された1または複数のクエリが実行される。
【0050】
次に図2Cを参照して、本発明に係る実施形態に従うCEPにおいてパラメータ化されたクエリを実行する方法202が説明される。ブロック275のプロセスで、新しいパラメータ(古いパラメータの代わりに)がバインドパラメータに対して指定されてもよい。そのような場合には、古いパラメータでインスタンスが生成されたクエリが特定される(ブロック280のプロセス)。
【0051】
したがって、古いパラメータを用いて特定されたクエリは、ランタイム環境から削除される(ブロック285のプロセス)。ブロック290のプロセスで、ランタイムシステムに対して新しいパラメータセットを用いるクエリのインスタンスが生成される。上述したような処理は、隣接したパラメータセットを用いてされてもよい。たとえば、バインド変数の位置マップがすでに作成されている場合には、これまでのステップを繰り返す必要はなく、新しいパラメータセットがスキャンされ、置換が実行される処理が継続できる。要するに、終了するクエリは、新しいパラメータセットを有する、インスタンスが生成された新しいクエリに置換される。
【0052】
さらに、パラメータセットは、クエリテンプレートを含むルールに拘束されてもよい。一実施形態では、ビュー定義(たとえば、CQLを用いてされる)は、バインド変数を用いてもよい。継続クエリ、“パラメータ化されたクエリ”、または“クエリテンプレート”のコンテキスト内でのパラメータ化は、少なくとも1つのバインド変数を有するクエリを含む。
【0053】
次に、図3を参照して、本発明に係る実施形態に従うCQLおよびビジネスクエリのライフサイクルを表わすための方法300が説明される。ブロック305aでITロール(role)が作り出され、それは、プロジェクトリスト、パラメータセット、および条件305bを含む。さらに、ブロック305cで、ITユーザ/ビジネスユーザアナリストの共同ルールが作り出される。
【0054】
ブロック310で、クエリおよびビューがパラメータ化される。たとえば、自然言語+0...1パラメータ化されたクエリ+0...nパラメータ化されたビュー、および自動ビュー/クエリ、従属トラッキング310aが、生成されてもよい。ブロック315で、ビジネステンプレートが、ビジネスアナリストロール315aのために作り出される。ブロック315bで、ハイパーリンクなどを介して新しいクエリのインスタンスが生成される。
【0055】
したがって、ブロック320で、ビジネスクエリが作り出される。次に、ビジネスユーザロールは、クエリを単一の論理演算子としてみなし320a、CQLクエリおよびビューを修正でき320b、CQLクエリおよびビュー305に戻ることができる。
【0056】
図4Aは、ハードコードされた(hard-coded)値に永続的にバインドされたクエリ405の例を含む。図4Bは、パラメータ化されたクエリ410、バインディング415、およびビジネスルール420を含み、図4Cは、テンプレート425、パラメータ化されたビュー430、およびパラメータ化されたクエリ435を含む。さらに、図4Dは、パラメータ化されたビューおよびクエリ440、テンプレート445、ならびにビジネスクエリ450を含む。
【0057】
図4A図4Dでの情報を用いた一例は以下の通りである。
【0058】
【数7】
【0059】
したがって、これらのクエリは、特定された統計値の合計と、イベント名E1、パスP1、および統計値countValueに対して、30分以内に2回以上、当該特定された統計値の合計が1000未満である時間とを返す。
【0060】
次に、図5Aを参照して、本発明に係る実施形態に従うCEPにおいてパラメータ化されたクエリを実行するためのシステム500が説明される。一実施形態では、システム500は、CQLエンジン510およびコンフィグファイル520を有するCEPサーバ505を含んでもよい。さらに、CEPサーバ505は、ビジュアライザ525と通信する。
【0061】
一実施形態では、CQLエンジン510は、すべてのクエリを同時に実行する。CQLエンジン510に対する実行計画は、結び付けられたノードセットを含み、すべてのクエリは、実行計画の一部であり、そのため、独立していない。したがって、CEPストリング置換は、あらゆる種類の型(タイプ)検査などを行なうことなく、バインド変数に対して設定されるパラメータセットにバインド変数を置き換えるために利用される。これは、バインド変数でも型検査などを通過する必要がある標準データベースとは異なる。結果として、CEPコンテキスト内のバインド変数は、より柔軟でより強力な解決手段を提供する。そして、当該バインド変数によりユーザは任意の述語を挿入することができる。したがって、CEP環境内でのバインド変数は、型がなくてもよい。
【0062】
CQLエンジン510は、多数のCEPアプリケーション515a、515b〜515nを実行するように構成されている。たとえば、多数のCEPアプリケーションは書き込み可能であり、その各々は異なる処理を実行し、それらはすべて同じCEPサーバ505上に展開可能である。また、CEPサーバ505は、CQLエンジン510を含み、多数の展開されたCEPアプリケーション(515a、515b〜515n)を有することができる。
【0063】
ビジュアライザ525は、ビジネスユーザがパラメータセットを設定できるインターフェイスである。さらに、コンフィグファイル520は、アプリケーション内のプロセッサに関連付けられている。コンフィグファイル520は、展開時、展開前、または展開後のいつであっても作り出すことができる。そして、CEPアプリケーション(515a、515bまたは515n)がランタイム環境内に存在する場合には、それは関連付けられたコンフィグファイル520を有していてもよい。当該コンフィグファイル520は、クエリテンプレート(すなわち、バインド変数を有するクエリ)、およびバインド変数が置換されたパラメータセットを特定する。
【0064】
図5Bは、コンフィグファイル520の一実施形態を示している。コンフィグファイル520は、ファイルが関連付けられたアプリケーション520aの識別(identification)、プロセッサ520bの識別、ルール520cの識別、クエリテンプレート520d、パラメータセット520eの識別、およびバインディング520fを含んでもよい。コンフィグファイルの他の実施形態が用いられてもよい。
【0065】
次に、図6を参照して、CEP内においてパラメータ化されたクエリのためのユーザインターフェイスの実施形態600が示されている。そのようなユーザインターフェイスの利点は、使いやすさを提供するというニーズを改善するための支援を含む。大抵のビジネスユーザは、クエリを書きたくない。たとえば、CQLはプログラマーではない人にとっては理解するのが難しいので、CEPの場合、ビジネスユーザのニーズを理解した上でIT部門の人がクエリを設計する。クエリはバインド変数を含んでいてもよい。クエリは、読みやすいフォーマット(たとえば、ビジネスユーザが理解しやすい英語版のクエリ)でビジネスユーザの目の触れるところとなる。英語版は、ランタイム時に実値をバインドするパラメータバインドセット(これは、URLリンクを介して示されてもよい)を含んでいてもよい。ランタイム時には、バインド変数が置換されるように設定されたパラメータ値で新しいクエリのインスタンスが生成され、インスタンスが生成されたクエリは、CEPシステム内に注入されて、実行される。これは、ユーザに対して使い易さを提供する。ビジネスユーザは、低水準言語のCQLを気にする必要はない。
【0066】
図7は、本発明に係る実施形態に従って利用され得るシステム環境700の構成要素を示す簡略ブロック図である。図に示すように、システム環境700は、1以上のクライアントコンピューティング装置702、704、706、708を含み、これらは、ウェブブラウザ、または専用のクライアント(たとえば、Oracle Forms)などのクライアントアプリケーションを操作するように構成されている。さまざまな実施形態では、クライアントコンピューティング装置702、704、706、および708は、イベント処理システム712と情報をやり取りしてもよい。
【0067】
クライアントコンピューティング装置702、704、706、708は、汎用のパーソナルコンピュータ(例として、Microsoft Windows(登録商標)および/またはApple Macintoshオペレーティングシステムのさまざまなバージョンを実行するパーソナルコンピュータおよび/またはラップトップコンピュータを含む)、携帯電話もしくはPDA(Microsoft Windows Mobileなどのソフトウェアを実行し、インターネット、電子メール、SMS、ブラックベリー(Blackberry)、またはその他の通信プロトコルを有効にする)、および/またはさまざまな市販のUNIX(登録商標)もしくはUNIXのようなオペレーティングシステム(さまざまなGNU/Linux(登録商標)オペレーティングシステムを含むがこれに限定されない)のいずれかを実行するワークステーションコンピュータであってもよい。あるいは、クライアントコンピューティング装置702、704、706、および708は、ネットワーク(たとえば、以下に示すネットワーク710)を介して通信可能なシンクライアント(thin-client)コンピュータ、インターネットを使用可能なゲーム機、および/またはパーソナルメッセージ(personal messaging)デバイスなどのその他の電子デバイスであってもよい。典型的なシステム環境700は、4つのクライアントコンピューティング装置を有することが示されているが、クライアントコンピューティング装置はいくつであってもよい。センサなどを有する装置のような他の装置が、システム712と情報をやり取りしてもよい。
【0068】
システム環境700は、ネットワーク710を含んでいてもよい。ネットワーク710は、当業者によく知られており、さまざまな市販のプロトコル(TCP/IP、SNA、IPX、AppleTalkなどを含むがこれらに限定されない)のいずれかを用いたデータ通信をサポートできるネットワークであれば、どのような種類のネットワークであってもよい。単なる例として、ネットワーク710は、イーサネット(Ethernet)(登録商標)ネットワーク、トークンリング(Token-Ring)ネットワークなどのローカルエリアネットワーク(LAN)、ワイドエリアネットワーク、バーチャルネットワーク(バーチャルプライベートネットワーク(VPN)を含むがこれに限定されない)、インターネット、イントラネット、エクストラネット、公衆電話交換回線網(PSTN)、赤外線ネットワーク、ワイヤレスネットワーク(たとえば、IEEE 802.11プロトコル群のいずれかの下で動作するネットワーク、当該技術分野において公知のBluetooth(登録商標)プロトコル、および/またはその他のワイヤレスプロトコル)、および/またはこれらの任意の組み合わせ、および/または他のネットワークであってもよい。
【0069】
システム712は、1以上のサーバコンピュータを含んでいてもよく、当該1以上のサーバコンピュータは、汎用コンピュータ、専用のサーバコンピュータ(例として、PCサーバ、UNIXサーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウント式(rack-mounted)のサーバなどを含む)、サーバファーム、サーバクラスタ、またはその他の適切な配置および/または組み合わせであってもよい。さまざまな実施形態では、システム712は、本願に記載されている1以上のサービスまたはソフトウェアアプリケーションを実行するように適合されていてもよい。
【0070】
システム712は、上述したオペレーティングシステムのいずれかおよび任意の市販のサーバオペレーティングシステムを含むオペレーティングシステムを実行してもよい。また、システム712は、HTTPサーバ、FTPサーバ、CGIサーバ、Javaサーバ、およびデータベースサーバなどを含むさまざまな追加的なサーバアプリケーション、および/またはミッドティア(mid-tier)アプリケーションのいずれかを実行してもよい。典型的なデータベースサーバは、Oracle、Microsoft、Sybase、IBMなどから市販されているものを含むがこれらに限定されない。
【0071】
また、システム環境700は、1以上のデータベース714および716を含んでいてもよい。データベース714および716は、さまざまな場所に存在していてもよい。例として、1以上のデータベース714および716は、システム712にローカルな(および/またはシステム712内に常駐している)記憶媒体に存在していてもよい。あるいは、データベース714および716は、システム712から離れており、ネットワークベースまたは専用回線を介してシステム712と通信してもよい。一連の実施形態では、データベース714および716は、当業者によく知られているストレージエリアネットワーク(SAN)に存在してもよい。同様に、システム712による機能を実行するために必要なあらゆるファイルは、必要に応じて、システム712にローカルにおよび/またはリモートで記憶されてもよい。一連の実施形態では、データベース714および716は、SQLフォーマットのコマンドに応答してデータを記憶し、更新し、読み出すように適合されているOracle lOgおよび1lgのようなリレーショナルデータベースを含んでもよい。
【0072】
図8は、本発明に係る実施形態に従って利用され得るコンピュータシステム800の簡略ブロック図である。たとえば、システム800は、図1のイベント処理サーバ102を実行するために利用されてもよい。コンピュータシステム800は、バス824を介して電気的に接続され得たハードウェア構成要素を含んでいることが示されている。ハードウェア構成は、1以上の中央処理部(CPU)802、1以上の入力装置804(たとえば、マウス、キーボードなど)、および1以上の出力装置806(たとえば、ディスプレイ装置、プリンタなど)を含んでいてもよい。また、コンピュータシステム800は、1以上の記憶装置808を含んでいてもよい。例として、記憶装置808は、ディスクドライブ、光学式記憶装置などの装置を含み、さらに、プログラム可能で、一瞬で更新可能で(flash-updateable)、および/またはそれと同じようなことが可能であるランダムアクセスメモリ(RAM)および/またはリードオンリーメモリ(ROM)などのソリッドステート(solid-state)記憶装置を含んでいてもよい。
【0073】
コンピュータシステム800は、さらに、コンピュータ可読記憶媒体リーダ812、通信サブシステム814(たとえば、モデム、ネットワークカード(無線もしくは有線)、赤外線通信装置など)、ワーキングメモリ818を含んでいてもよく、ワーキングメモリ818は、上述したようなRAMおよびROM装置を含んでいてもよい。いくつかの実施形態では、コンピュータシステム800は、デジタルシグナルプロセッサ(DSP)、専用のプロセッサ、および/またはそれと同様のものを含み得る処理加速部816を含んでいてもよい。
【0074】
コンピュータ可読記憶媒体リーダ812は、さらに、コンピュータ可読記憶媒体810に接続され得る。コンピュータ可読記憶媒体810は、(任意に、記憶装置808と組み合わせて)リモート式、ローカル式、固定式および/または着脱交換式の記憶装置、および、一時的および/またはより永続的にコンピュータ可読情報を収容するための記憶媒体を総合的に意味している。通信サブシステム814は、ネットワーク710および/またはシステム環境700に関する上述したその他のコンピュータと、データをやり取りすることが可能であってもよい。
【0075】
また、コンピュータシステム800は、ワーキングメモリ818内に現在位置しているように示されているソフトウェア構成要素を含んでいてもよい。ワーキングメモリ818は、オペレーティングシステム820、および/または、アプリケーションプログラム(クライアントアプリケーション、ウェブブラウザ、ミッドティアアプリケーション、RDBMSなどであってもよい)などのその他のコード822を含む。典型的な実施形態では、ワーキングメモリ818は、実行可能なコードと、イベントを処理し上述したようなデータカートリッジに関連する処理を実行するために利用される関連データ構造(キャッシュなど)とを含んでいてもよい。代替の実施形態に係るコンピュータシステム800は、上述したものからの多くの変形例を有し得るということが理解されよう。
【0076】
たとえば、カスタマイズされたハードウェアが用いられてもよく、および/または特定の構成要素は、ハードウェア内、ソフトウェア内(アプレットなどのポータブルソフトウェアを含む)またはそれら両方で実行されてもよい。さらに、ネットワーク入力/出力装置などの他のコンピューティング装置への接続が利用されてもよい。
【0077】
コードまたはコードの一部を収容するための記憶媒体およびコンピュータ可読媒体は、当該技術分野において公知のは利用されているあらゆる適切な媒体を含み得る。適切な媒体は記憶媒体および通信媒体を含み、その記憶媒体および通信媒体は、RAM、ROM、EEPROM、フラッシュメモリもしくはその他のメモリ技術、CD−ROM、DVDもしくはその他の光学式記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくはその他の磁気記憶装置、または、所望の情報を格納もしくは送信するために利用可能でありコンピュータによってアクセス可能なその他の媒体を含む、コンピュータ可読命令、データ構造、プログラムモジュール、もしくはその他のデータなどの情報を格納しおよび/もしくは送信するための方法もしくは技術において実行される揮発的および不揮発的、着脱可能および着脱不可能な媒体などであるが、それらに限定されない。
【0078】
本発明に係る具体的な実施形態が説明されてきたが、さまざまな修正、変更、代替構成、および均等物もまた本発明の範囲内に包含される。本発明に係る実施形態は、ある特定のデータ処理環境内での動作に限定されるものではなく、複数のデータ処理環境内で動作可能である。さらに、本発明に係る実施形態は、特定の一連のトランザクションおよびステップを用いて説明されてきたが、本発明の範囲が、記載された一連のトランザクションおよびステップに限定されないということは当業者にとって明らかであろう。
【0079】
さらに、本発明に係る実施形態は、特定のハードウェアおよびソフトウェアの組み合わせを用いて説明されてきたが、他のハードウェアおよびソフトウェアの組み合わせも、本発明の範囲内であるということが認識されるであろう。本発明に係る実施形態は、ハードウェアのみで実行されてもよいし、ソフトウェアのみで実行されてもよいし、それらの組み合わせを用いて実行されてもよい。
【0080】
したがって、明細書および図面は、限定的意味ではなく例示のためであると見なされるべきである。しかしながら、特許請求の範囲に記載のより広い精神および範囲から逸脱することなく追加、置換、削除、その他の修正および変更が可能であることは明らかであろう。
図6
図1
図2A
図2B
図2C
図3
図4A
図4B
図4C
図4D
図5A
図5B
図7
図8