このページが正しく動作するには、スクリプトを使用できるブラウザが必要です。
Oracle SOA Suiteコンポーネント
サイト・マップ
 
Oracle CEPを表した図。 サービス・インフラストラクチャに複数のコンポジットが含まれており、それぞれOracle CEPに接続しています。Oracle CEPは、データソースとイベント・ソース、コンテキスト作成、フィルタ処理、相関と集計、パターン一致および複合イベント・シンクを提供します。 Oracle CEPはOracle BAMに接続し、Oracle BAMはサービス・インフラストラクチャに接続しています。
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のアプリケーションとしては、電子取引やリスク管理から侵入探知、コンプライアンスの監視まで、多数のアプリケーションが考えられます。

具体的には、次の機能領域があります。

 <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>