この節では、次の項目について説明します。
Oracle CEP(以前のWebLogic Event Server)は、高性能イベント駆動型アプリケーションの開発とデプロイメントのためのJavaサーバーです。Equinox OSGiベースの軽量Javaアプリケーション・コンテナであり、Oracle CEP Service Engineなどの共有サービスを含みます。Oracle CEP Service Engineは、Oracle Continuous Query Language (Oracle CQL)に基づいてリッチな宣言型環境を実現します。Oracle CQLは、ビジネス・オペレーションの管理の効率と有効性を高めるように、ストリーミング・データをサポートする構文が追加されたSQLベースの問合せ言語です。Oracle CEPでは、JRockit Real Timeを使用して極めて高いスループットとマイクロ秒単位の速度がサポートされます。また、完全なリアルタイムのエンドツーエンドJava Event-Driven Architecture (EDA)開発プラットフォームのために、Oracle CEP VisualizerおよびOracle CEP IDE for Eclipse開発用ツールが提供されます。
Oracle CEPには、ビジネス・ロジックを含むユーザーのJavaコード(POJO)をデプロイする機能があります。Oracle CEP内でビジネス・ロジックを実行することにより、時間およびイベント駆動型アプリケーション向けの高度に調整されたフレームワークが提供されます。
図1-1に、イベント駆動型システムの概要を示します。
イベント駆動型システムは、通常、複数のイベント・ソース、リアルタイム・イベント駆動型アプリケーション、およびイベント・シンクで構成されています。Oracle CEPサーバーと、そのサーバーにデプロイするOracle CEPアプリケーションが、イベント駆動型アプリケーションを構成します。イベント・ソースは通常のイベント・データのストリームを生成します。Oracle CEPアプリケーションはイベント・ストリームをリスニングし、これらのイベントを処理して特別なイベントを生成します。イベント・シンクは特別なイベントを受信します。
イベント・ソース、イベント駆動型アプリケーション、およびイベント・シンクは互いに独立しているため、他のコンポーネントに変更を加えることなくこれらのコンポーネントを追加または削除できます。これはイベント駆動型アーキテクチャの重要な特性です。
イベント駆動型アプリケーションはルールによって駆動されます。Oracle CEPでは、Oracle Continuous Query Language (Oracle CQL)を使用してルールは問合せとして表されます。これらの問合せはデータ・ストアに対して永続化され、イベントの着信ストリームの処理およびイベントの発信ストリームの生成に使用されます。通常、問合せはフィルタリングおよび集計機能を実行し、着信イベント・ストリームの特別なイベントを検出して抽出します。このため、発信イベント数は着信イベント数をはるかに下回ります。
Oracle CEPはイベント駆動型アプリケーション開発用のミドルウェアです。Oracle CEPアプリケーションは、本質的にイベント駆動型アプリケーションです。
次に、アプリケーション自体について説明します。アプリケーションは、図1-2に示すようにOracle CEPサーバーによってホストされる軽量のコンテナです。
通常、Oracle CEPアプリケーションは次の種類のコンポーネントによって構成されます。
アダプタは、着信ストリームおよび発信ストリームとリレーション・ソースおよびリレーション・シンクの直接のインタフェースです。アダプタは、着信プロトコルと発信プロトコルを理解し、プロセッサが問い合せできる標準化形式にイベント・データを変換します。アダプタは、標準化したイベント・データをチャネルすなわち発信ストリームとリレーション・シンクに転送します。
チャネルはイベント処理エンドポイントです。ストリームは、イベント処理エージェントがデータを処理できるようになるまで、イベント・データのキューなどを行います。
プロセッサ(またはイベント処理エージェント)は標準化されたイベント・データをチャネルから受け取り、問合せを使用してイベント・データを処理し、新しいイベントを出力チャネルに生成できます。
Beanは、出力チャネルをリスニングするように登録され、新しいイベントが出力チャネルに入るとトリガーされます。このユーザー・コードは通常はplain-old-Java-object (POJO)です。ユーザー・アプリケーションは一連の外部サービス(JMS、Webサービス、ファイル書込みプログラムなど)を利用して、生成されるイベントを外部イベント・シンクに転送します。
イベントBeanは出力チャネルをリスニングするように登録され、新しいイベントが出力チャネルに入るとトリガーされます。このユーザー・コードでは、Oracle CEPでBeanを管理できるようにOracle CEPイベントBean APIが使用されます。
アダプタ、チャネル、プロセッサ、およびビジネス・ロジックPOJOを任意に相互接続してイベント処理ネットワーク(EPN)を形成できます。EPNのトポロジの例を次に示します。
アダプタ - チャネル - ビジネス・ロジックPOJO
シナリオ: 専用プロトコルから標準化されたモデルに適応させる以外には、処理が不要です。
アダプタ - チャネル - プロセッサ - チャネル - ビジネス・ロジックPOJO
シナリオ: ユーザー・コードに対する直接的な処理です。
アダプタ - チャネル - プロセッサ - チャネル - ビジネス・ロジックPOJO - チャネル - プロセッサ - チャネル - ビジネス・ロジックPOJO
シナリオ: 最初のプロセッサがイベント間の因果関係を作成し、2番目のプロセッサがイベントを集約して複合イベント(特別なイベント)を作成する2層のイベント処理です。
EPNには重要な特性が2つあります。
イベント処理ネットワークを使用して処理エージェントの階層を作成できるため、非常に複雑なイベント処理が実現されることです。EPNの各層では、その層のイベントが集約されて複合イベントになります。複合イベントはその層の上位層の単純なイベントになります。
イベント処理ネットワークの特性は、積分可能性(別々に開発されたコンポーネントを連携して正常に機能させる性質)の確保に役立つことです。たとえば、ユーザー・コードを追加して、ネットワーク内の複数の場所で外部サービスを参照することができます。
Oracle CEPの使用例は様々な業種やアプリケーションに及びます。多様な使用例のごく一部を次に示します。
金融: アルゴリズムによる取引
市場価格の変動に基づいた自動株取引。問合せの例: 任意の20秒のウィンドウ内で、株式Bが2%を上回る幅で上昇し、かつ株式Aが同様の上昇をしない場合は、自動的に株式Aを購入します。
例は、3.10項「シグナル生成のサンプル」を参照してください。
交通: セキュリティと不正の検出
イベント内のパターンを検出することで不正行為を発見します。問合せの例: 1枚のIDカードを5秒未満の間に2回使用して都市地下鉄システムにアクセスした場合、ピギーバッキング行為のセキュリティ警告を発します。
エネルギーと電気通信: 警報の相関関係
誤検出の警報を削減します。問合せの例: 任意の5秒のウィンドウ内で15件の警報を受信しても、30秒以内に検出した同様の警報が5件未満だった場合は、何もしません。
医療: 患者のモニタリング
患者の生命兆候をモニターし、特定のイベントが発生した場合に何らかのタスクを実行します。問合せの例: 任意の10秒のウィンドウ内で、薬の変更後、この患者に対する最大許容値の20%以内の血圧の上昇が発生した場合、最も近くの看護師に警告します。
Oracle CEPの主な機能の概要を次に示します。
11g リリース1(11.1.1)の新機能: Oracle Continuous Query Language (Oracle CQL)は、ストリーミング・データをサポートする構文が追加されたSQLベースの問合せ言語です。Oracle CQLを使用すると、データ・ストリームに対する問合せを作成して、Oracle CEPを使用する複雑なイベント処理(CEP)を実行できます。Oracle CQLはスケーラブルかつ包括的です。幅広い演算子(豊富なウィンドウ演算子を含む)、関数(組込み、Coltおよびjava.lang.Math
関数)および文が提供されます。EPLはOracle CQLによって置き換えられます。
11g リリース1(11.1.1)の新機能: Coherenceクラスタリングおよび分散キャッシュのサポート。
11g リリース1(11.1.1)の新機能: Oracle CEP Visualizerの問合せコンストラクタと問合せ計画ジェネレータ、およびCoherenceクラスタリングと分散キャッシュのサポート。
イベント・キャッシング - アプリケーションでは、必要に応じてキャッシュにイベントをパブリッシュしたり、キャッシュのイベントを使用したりすることで、イベントの可用性を高め、イベント処理アプリケーションのパフォーマンスを向上させることができます。
イベントの記録と再生 - Oracle CEPのイベント・リポジトリ機能を使用すると、EPNを通じて流れるイベントを記録、格納できるため、後からイベントを再生できます。
組込みHTTPパブリッシュ/サブスクライブ・アダプタ - アプリケーションでは、3つの組込みHTTPパブリッシュ/サブスクライブ・アダプタを使用して、HTTPパブリッシュ/サブスクライブ・サーバー・チャネルに対するパブリッシュ(ローカルおよびリモート)とサブスクライブを簡単に行うことができます。
組込みJMSアダプタ - 2種類のJMSアダプタ(着信と発信)を使用して、Javaコードを作成せずに、アプリケーションからJMSキューに対して個別にメッセージを送受信できます。
Oracle CEP Visualizer - Oracle CEPからのデータを使用し、そのデータを便利で直感的な方法でシステム管理者やオペレータに表示し、さらに特定のタスクにおいて構成の変更を行うために受け入れたデータを再びOracle CEPに返すWeb 2.0アプリケーションです。
マルチ・サーバー・ドメイン(クラスタリングとも呼ばれる) - Oracle CEPで、管理上の目的から複数のサーバーを論理的に接続したり、共有のユーザー・データ・グラム・プロトコル(UDP)マルチキャスト・アドレスとポートを使用して物理的に接続したりできるようになりました。
低レイテンシが要求される大量のストリーミング・データを処理するために、通常の従来型Javaアプリケーション(POJO)またはSpringアプリケーションのデプロイメントをサポートするアプリケーション・サーバー。
Oracle CEPアプリケーションは、イベント駆動型アプリケーションとして開発およびデプロイされます。つまり、EPNアセンブリ・ファイルでカスタムSpringタグを使用してイベント処理ネットワークを定義し、それによってアプリケーションの標準Springコンテキスト・ファイルを拡張します。
アプリケーション・サーバーは、複合イベント・プロセッサ(CEP)、アダプタ、ストリームなどの一連のリアル・タイム・サービスを提供します。このサーバーは、高いメッセージ・スループット、低いレイテンシ、および確定的な動作を実現するように高度に調整されています。
複合イベント・プロセッサは、大量のストリーミング・データを処理するための高パフォーマンスで継続的な問合せエンジンです。1つまたは複数のストリームから受け取るストリーミング・データのフィルタ処理、相関、および集約を完全にサポートしています。
イベント処理言語(EPL)は、SQLに類似した言語であり、ストリームから受け取るイベント・データを宣言によってフィルタ処理、相関、集約、およびマージできます。また、他のストリームに結果を挿入して、下流でさらに処理を行うことができます。EPLルールは、複合イベント・プロセッサを構成するXMLファイルで定義するか、またはAPIを使用してプログラムで定義します。EPLはOracle CQLによって置き換えられます。
アダプタSDKは、着信データ・フィードをリスニングするアダプタの作成に必要なすべてのツールを提供します。
一連の製品サンプルには、入門用として簡単なHello Worldのシナリオを示す例と、Oracle CEPのその他の機能を使用した複雑な外国為替取引やアルゴリズムによる取引のシナリオを示す例の両方があります。
データ・フィードをシミュレートするロード・ジェネレータ・ユーティリティは、実際のデータ・フィードに接続せずにアプリケーションをテストするのに役立ちます。
事前に組み込まれたインストゥルメンテーションを含むモニター・サービスは、コンポーネント・レベルでスループットとレイテンシを計測するためのサービスです。
静的および動的な構成フレームワーク。静的構成は、XMLファイルを使用して実行します。動的構成を実行するには、JMXとコマンド・ライン・ユーティリティwlevs.Admin
を使用して構成MBeanおよびランタイムMBeanにアクセスします。
Oracle CEPは、Oracle microServices Architecture (mSA)を基盤として構築されています。Oracle mSAは、OSGiベースのフレームワークを使用して、モジュールまたは機能セットで提供されるサービスを管理します。Oracle mSAが提供するサービスを次に示します。
Jetty(サーブレットを実行するHTTPコンテナ)
リレーショナル・データベースにアクセスするためのjavax.sql.DataSource
の実装とJDBCシン・ドライバ
ロギングとデバッグ
認証と承認のセキュリティ
Oracle CEPのサポート対象プラットフォームの詳細は、http://www.oracle.com/technology/software/products/ias/files/oracle%20fusion%20middleware%2011gR1%20(11.1.1.x)%20certification%20matrix.xls
を参照してください。
ご使用のプラットフォームに対応するインストール・プログラムは、http://www.oracle.com/technology/software/products/middleware/htdocs/111110_fmw.html
にあります。詳細は、2.1項「インストールの概要」を参照してください。
Oracle CEP IDE for Eclipseは、図1-3に示すように、Oracle CEPアプリケーションを開発するプログラマを対象としています。
Oracle CEP IDE for Eclipseは、Oracle CEPアプリケーションの開発、デプロイ、およびデバッグを支援するためにデザインされたEclipse IDEのプラグインです。
Oracle CEP IDE for Eclipseの主な機能は次のとおりです。
イベント駆動型アプリケーションの作成を直ちに開始するためのプロジェクト作成ウィザードおよびテンプレート。
JavaやXMLファイルなどのOracle CEPアプリケーションに共通のソース・ファイル用の高度なエディタ。
IDE内部からOracle CEPサーバー・インスタンスをシームレスに開始、停止およびデプロイするための統合化されたサーバー管理。
統合化されたデバッグ。
イベント処理アプリケーション内を参照および移動できる、イベント処理ネットワーク(EPN)のビジュアルなデザイン・ビュー。
Oracle CEP VisualizerをIDEから使用できる、Oracle CEP Visualizerの統合化されたサポート(1.8項「Oracle CEP Visualizer」を参照)。
詳細については、以下を参照してください。
Oracle CEPによって、Oracle CEP Visualizer(図1-4)という高度なランタイム管理コンソールが提供されます。
Oracle CEP Visualizerを使用すると、Oracle CEPサーバー・ドメインとそのドメインにデプロイするOracle CEPアプリケーションの管理、チューニングおよび監視をすべてブラウザから行うことができます。Oracle CEP Visualizerでは、洗練された様々なランタイム管理ツールが提供されます。これにはOracle CQLおよびEPLのルールの管理や作成も含まれます。
Oracle CEP Visualizerは、すべてのOracle CEPサーバーにあらかじめインストールされています。
詳細は、『Oracle Complex Event Processing Visualizerユーザーズ・ガイド』を参照してください。
Oracle CEP 11g リリース1(11.1.1)をインストールします。
第2章「Oracle CEPのインストール」を参照してください。
各ドメインからサンプルを実行します。
参照:
ソース・ファイルと構成ファイルを参照して、サンプル・アプリケーションをそれぞれのソース・ディレクトリからビルドすることで、サンプル・アプリケーションがどのようにプログラミングされているかを理解します。
参照:
独自のOracle CEPドメインを作成します。
参照:
Oracle CEP管理者ガイドのOracle CEPスタンドアロンサーバー・ドメインの作成に関する項
Oracle CEP管理者ガイドのOracle CEPマルチサーバー・ドメインの作成に関する項
新しいOracle CEPアプリケーションを作成し、新しいドメインにデプロイします。
『Eclipse用Oracle CEP開発者ガイド』のOracle CEPアプリケーション作成の概要に関する項を参照してください。
Oracle CEPフォーラム(http://forums.oracle.com/forums/forum.jspa?forumID=820
)で質問を提示し、解決方法を探します。