Oracle Complex Event Processing
データベースは、保存されている限られたデータ・セットについて問合せを実行する場合には最適です。しかし、最新のアプリケーションの多くでは、際限ないデータ・セットに対する問合せが長時間にわたり絶え間なく要求されます。データの多くに対し繰り返し問合せが行われる一方、更新回数が比較的少ない場合には、意図的に保存されているデータ・セットを使用することが適しています。これとは対照的に、データ・ストリームが表すデータは常に変化しており、新たな要素の挿入によって単独で変化する場合もあります。この場合、データの多くに対し何度も操作を行うことは意味がなく、実用性がありません。様々な種類のアプリケーションで、データ・セットではなくデータ・ストリームが生成されています。これらのアプリケーションには、センサー・データ・アプリケーション、財務ティッカ、ネットワーク・パフォーマンス測定ツール、ネットワーク監視およびトラフィック管理のアプリケーション、クリック・ストリーム分析ツールなどがあります。このようなアプリケーションでデータの管理および処理を行うには、時間と焦点を絞ったデータ管理および問合せが実行できる機能を構築する必要があります。
この要件を満たすために、Oracle SOA SuiteはOracle Complex Event Processing(Oracle CEP)を提供しています。Oracle CEPは、リレーションを含む構造化データ・レコードのストリーム記述をサポートするデータ管理インフラストラクチャです。Oracle CEPはOracle SOA Suiteに組み込まれていますが、個別のダウンロードで使用可能です。Oracle CEPは、Oracle BAMで管理できない、銀行取引で発生するような大量のイベントを処理するように最適化されています。さらに、複合的な相関やパターン一致を実行できます。
Oracle CEPを使用するコンポジット・アプリケーションの場合、Oracle Mediatorがビジネス・イベントをイベント配信ネットワーク(EDN)に公開します。実行時に、Oracle CEPサービス・エンジンはこれらのイベントをサブスクライブします。Oracle CEPサービス・エンジンは、Continuous Query Language(Oracle CQL)問合せを実行し、イベント・ストリームでパターンを検索します。Oracle CQLは、ストリーミング・データをサポートするコンストラクトが追加された、SQLベースの問合せ言語です。Oracle CQLを使用すると、データ・ストリームに対する問合せを作成し、複合イベント処理を実行できます。Oracle CEPサービス・エンジンは、これらのストリームをリスニングし、必要な個々のイベントを一見無関係にみえるものも含めすべてキャッシュして、特定のパターンとの相関を試みます。複合イベント処理の問合せで提供されたデータが、Oracle BAMで使用できるようになります。
Oracle CEPのアプリケーションとしては、電子取引やリスク管理から侵入探知、コンプライアンスの監視まで、多数のアプリケーションが考えられます。
具体的には、次の機能領域があります。
- データソースとイベント・ソース: Oracle CEPイベント・ソースでは、Oracle CQL問合せの実行対象となるデータのプロデューサが識別されます。イベント・ソースには、ワイヤ・サービスや株式相場、温度、振動または無線周波数識別(RFID)検出器などのセンサーのデータ・フィードがあります。Oracle CEPには、このような実社会のイベント・ソースをOracle CQL問合せに接続するアダプタが多数用意されています。Oracle CEPアダプタでは、JMS、HTTPパブリッシャ/サブスクライバおよびファイルのイベント・ソースがサポートされています。
- コンテキスト作成: Oracle CEPには、様々なスライディング・ウィンドウ演算子およびビュー(副問合せ)が用意されており、フィルタ処理、相関と集計、およびパターン一致を実行する、一時コンテキストまたはセマンティク・コンテキストを定義できます。ウィンドウとビューを使用すると、直前の5分間のイベントや特定の顧客に関係するイベントなどのコンテキストを定義できます。Oracle CQLには、範囲ベース(時間値または定数値)、タプルベース、パーティション化などの様々なスライディング・ウィンドウがあります。さらに、カスタムのウィンドウ演算子も簡単に定義できます。
- フィルタ処理: Oracle CQLを使用すると、イベント・ソースで提供されたイベントの属性を選択する問合せを指定できます。このような問合せを使用してイベント・ソースをフィルタ処理し、対象となるイベントを取得します。Oracle CQLには、この目的で使用する演算子、式、条件および文のセットが豊富に用意されています。
- 相関と集計: Oracle CQLを使用すると、イベント・ソースで提供されたイベントの属性について、高度な統計および算術演算を実行できます。Oracle CQLに用意されているのは、問合せ対象のストリームまたはビューの各行に対して単一の結果行を返す単一行関数、単一のタプルではなくタプルのグループに基づいて単一の集計結果を返す集計関数、高パフォーマンスの科学技術コンピューティング用のColtオープン・ソース・ライブラリに基づく統計および高度な算術演算、java.lang.Mathクラスに基づく統計および高度な算術演算です。さらに、カスタムの単一行関数および集計関数を簡単に定義できます。
- パターン一致: Oracle CQLのMATCH_RECOGNIZE条件を使用すると、アルゴリズム取引、ダブルボトム検出、非イベント検出など、広範囲にわたるタスクに対する複合パターン一致操作を簡潔に表現できます。次の例では、傷みやすい食品が温度25度以上の環境に5分間を超えてさらされたかどうかが検出されます。
<query id="detectPerish"><![CDATA[
select its.itemId from ItemTempStream
MATCH_RECOGNIZE (
PARTITION BY
itemId
MEASURES
A.itemId as itemId
PATTERN (A B* C)
DEFINE
A AS (A.temp >= 25) and ,
B AS ((B.temp >= 25) and
(B.element_time - A.element_time < INTERVAL "0 00:00:05:00" DAY TO SECOND)),
C AS ((C.temp >= 25) and
C.element_time - A.element_time >= INTERVAL "0 00:00:05:00" DAY TO SECOND)
)) as its
]]></query>
- 複合イベント・シンク: Oracle CQLイベント・シンクは、Oracle CQL問合せ結果のコンシューマを識別します。つまり、Oracle CQL問合せでフィルタ処理、相関と集計、およびパターン一致を様々なコンテキスト内で実行してイベント・ソースから抽出した、重要なイベントのコンシューマを識別します。通常、重要なイベントは、イベント・ソースで提供されたイベントより少ない数(高い価値)になります。Oracle CEPアダプタは、JMS、HTTPパブリッシャ/サブスクライバ、ファイルおよびイベントBeanのイベント・シンクをサポートしています。イベントBeanは、特定の重要イベントの発生時に実行するビジネス・ロジックが含まれたPlain Old Java Objects(POJO)です。