Oracle Event Processingは、リアルタイムにストリーミングされるイベントを監視するアプリケーションを開発および管理するための、高スループットで待機時間の少ないプラットフォームです。
このガイドでは、Oracle Event Processingと、アプリケーション開発に使用するOracle JDeveloperについて説明します。順を追った説明とサンプル・アプリケーションによって、プラットフォームの各部分の協調方法やOracle Event Processingアプリケーションの作成方法について理解を深める確かな土台を提供します。
この章の構成は、次のとおりです。
Oracle Event Processingは、Oracle Event Processingサーバー、Oracle Event Processingビジュアライザ、コマンドライン管理インタフェース、およびOracle JDeveloper統合開発環境(IDE)で構成されます。
Oracle Event Processingサーバーは、Oracle Event Processingアプリケーションを実行するために、論理的に関連付けられたリソースおよびサービスをホストします。サーバーはドメインにグループ化され、ドメインとして管理されます。1つのドメインは1つのサーバー(スタンドアロンサーバー・ドメイン)または多くのサーバー(マルチサーバー・ドメイン)を持つことができます。Oracle Event ProcessingビジュアライザおよびOracle Event Processing管理コマンドライン・インタフェースを介して、Oracle Event Processingドメインおよびサーバーを管理します。
Webベースのユーザー・インタフェースであるOracle Event Processingビジュアライザで、Oracle Event Processingサーバー上で実行されるOracle Event Processingアプリケーションのデプロイ、構成、テストおよび監視を行うことができます。
Oracle Event Processing管理コマンドライン・インタフェースを使用すると、コマンドラインと構成ファイルでサーバーを管理できます。たとえば、ドメインの起動および停止や、アプリケーションのデプロイ、一時停止、再開およびアンインストールが可能です。
12cリリース用のOracle JDeveloperには、Oracle Event Processingアプリケーションの設計、開発、テストおよびデプロイをサポートする統合フレームワークが含まれています。
Oracle Event Processingは、複雑なイベント処理操作を簡略化し、技術的バックグラウンドのないユーザーでも使用できるようにするために開発されました。
Oracle Event Processingは、埋込み環境(Java Embedded Suite (JES)でサポートされている環境など)のイベント処理アプリケーションをサポートするために設計されたイベント処理サーバーです。Oracle Event Processingの機能は、Oracle Event Processingの機能のサブセットとなっています。
次の拡張機能は、12c 12.1.3リリース用に作成されています。
JESでのJDK 8および依存関係のサポート
アプリケーションの開発およびデプロイのためのJDeveloper IDEのサポート
ビューおよびサブ問合せのサポートにおけるパフォーマンスの向上
複数ストリーム間のパターンの一致機能
アプリケーション・タイムスタンプに基づく動的ウィンドウ。
HTTPパブリッシュ/サブスクライブのサポート。
Oracle Event Processingアプリケーションは、イベント・ソースからのデータ・ストリーミングを受信し、処理します。そのデータは、監視装置、金融サービス企業、自動車などの様々な場所の1つから来ている可能性があります。アプリケーションはデータの監視中に、パターンの検出と応答、指定された条件を満たすイベントの検索と他のアプリケーションへの警告、急速に変化するデータに基づいた即時にアクションが必要なその他の動作の実行などを行うことができます。
Oracle Event ProcessingはSEDAと呼ばれるイベント駆動アーキテクチャを使用します。そこでは、アプリケーションはキューによって接続された複数のステージ(ノード)に分解されます。Oracle Event Processingでは、チャネル・コンポーネントはキューを表し、その他すべてのコンポーネントはステージを表します。EPN内のすべてのコンポーネントは、データの処理中における役割を持ちます。
イベント処理ネットワーク(EPN)は、データをイベントに変換するアダプタ経由でEPNに入るデータに対して直線的になっています。変換後、イベントは片方の端からもう片方の端までステージを通過します。EPN内の様々なステージで、コンポーネントは必要に応じてロジックの実行や外部コンポーネントとの接続の作成を行うことができます。
Oracle Event Processingアプリケーションには、次の特長があります。
データベース・プログラミング・モデルを活用したアプリケーション: 一部のOracle Event Processingアプリケーションのプログラミング・モデルは、データベース・プログラミングにおける概念を拡張したものです。Oracle Continuous Query Language(Oracle CQL)で問合せを実行できるタプルであるという点において、イベントはデータベースの行と同じです。Oracle CQLはSQLを拡張したものですが、ストリーミング・データに対して動作するように設計されています。
固有の機能の役割を示すステージ: EPNの構造が、ネットワークを流れるイベントに対してロジックを実行することを可能にしています。さらに、ステージによって、コードが検出するイベント・パターンに基づいて複数の下流方向に分岐するネットワークを持つ複数の処理パスを取得することが可能になっています。
イベント・シンクおよびイベント・ソースとして動作することによってEPN経由でイベントを転送するステージ: EPN内のステージは、イベント・シンクとしてイベントを受信でき、イベント・ソースとしてイベントを送信できます。イベント・シンクとは、特定のイベントをリスニングして処理するロジックを実装するJavaクラスです。
ストリームまたはリレーションとして処理されるイベント: チャネルはイベントをEPNのあるステージから別のステージに伝達します。チャネルは、ストリームまたはリレーション内のイベントを伝達します。ストリーム・チャネルおよびリレーション・チャネルは、どちらもイベントをコレクションに挿入し、ストリームを次のEPNステージに送信します。ストリーム内のイベントをこのストリームから削除することはできません。リレーション内のイベントは、リレーションに挿入、リレーションから削除、およびリレーションで更新することができます。挿入、削除および更新の各操作では、リレーション内のイベントは常に特定の時点に関連付けられている必要があります。
Oracle Event Processingアプリケーションの中核はEPNです。EPNの構築は、ネットワークを通過する処理イベント内で役割を持つコンポーネントに接続することによって行います。Oracle Event Processingアプリケーションを開発する場合は、目的の機能を達成するためにどの種類のコンポーネントが必要かを指定します。
EPNを作成する最善の方法は、Oracle JDeveloperを使用してコンポーネントの追加、構成および接続を行うことです。EPNは概ね直線形で、イベントは左から入って右に向かってEPNを通過してゆき、右端で終了します。
EPNコンポーネントは、次の方法を提供しています。
外部ソースとのイベント・データの交換: イベント・データを含むデータをEPNに渡したりEPNから出す方法を追加するために、アプリケーションのEPNを外部データベース、キャッシュ、HTTPメッセージ、Java Message Service (JMS)メッセージ、ファイルおよびビッグ・データ・ストレージに接続できます。
アプリケーション・コードで処理できるイベント・タイプとしてのモデル・イベント・データ: アプリケーション・コードからアクセスして操作できるように、イベント・データをモデリングするイベント・タイプを実装または定義できます。
イベントの問合せおよびフィルタ: Oracle CQLを使用すると、データベースのデータを問い合せるようにイベントを問い合せることができます。Oracle CQLには、特にストリーミング・データを問い合せる機能が含まれます。プロセッサ・コンポーネントを追加することによって、Oracle CQLコードをEPNに追加できます。すべてのEPNプロセッサはOracle CQLプロセッサです。
イベント処理用のJavaロジックの実行: 他のEPNステージと同じ方法で、イベントの送信および受信を行うJavaクラスを追加できます。これらのクラスのロジックでは、イベントから値を取得したり、新しいイベントを作成したりできます。
Oracle CQLはStructured Query Language (SQL)の拡張で、同じキーワードおよび構文を持ちますが、ストリーミング・データ独自の側面をサポートする機能を持っています。
イベントは、概念的にデータベース表の行に対応しています。ただし、イベントと表の行の重要な違いは、イベントでは1つのイベントは必ず時間的に別のイベントの前または後にあり、ストリームは無限に続き変化し続ける可能性がある点です。
リレーショナル・データベースでは、データは相対的に静的で、ユーザーが追加、削除および変更操作などのトランザクションを開始したときに変更されます。一方、イベント・データ・ストリームは、イベントが到着した際に問合せが調べる場所であるEPNに常に流れ込んできます。
連続した時系列的な性質を持つストリーミング・データを最大限に活用するために、Oracle CQLを使用して次のことができます。
イベントの問合せ対象となる特定の期間または範囲のウィンドウの指定。たとえば、5秒間のすべてのイベントなどです。
問合せ対象となる行と呼ばれる特定のイベント数のウィンドウの指定。すべての連続した10イベントなどです。
ストリームに対して問合せを実行する頻度の指定。たとえば、問合せはすべての5秒間を5秒後のイベントのウィンドウにスライドできます。
特定のイベントの特性に基づいた受信ストリームの複数のストリームへの分割(パーティション化)。受信する取引イベント内の特定の銘柄記号ごとに、問合せに新しいストリームを作成させることができます。
さらにOracle CQLは、ビューや結合など、おなじみのSQLの一般的な機能もサポートしています。たとえば、ストリーミング・イベント・データとリレーショナル・データベース表またはキャッシュ内のデータの結合を含むOracle CQLコードを記述できます。
Oracle CQLにはJavaクラス内で機能を組み合せる問合せをサポートするデータ・カートリッジが含まれ、データ・カートリッジを通して拡張可能です。たとえば、空間計算およびJDBC問合せをサポートするデータ・カートリッジがあります。空間データ・カートリッジは、複雑な多角形や円、3D位置および空間クラスタリングなどの多数の移動オブジェクトをサポートしています。
Oracle Event Processingは、アプリケーション・ロジックの開発機能およびアプリケーションのデプロイおよび構成機能を提供する次の標準テクノロジによって作成されています。
Javaプログラミング言語: Oracle Event Processingサーバー機能の多くがJavaプログラミング言語で記述されています。Javaは、イベントBeanおよびSpring Bean用のロジックの記述に使用する言語です。
Spring: Oracle Event ProcessingはSpring構成モデルを大きく活用しています。Springは、開発者がJavaアプリケーションの部品の接続および構成に使用するテクノロジの集合です。Oracle Event Processingアプリケーションは、Spring Frameworkの機能をサポートするJavaコンポーネントであるSpring Beanとしてのロジックの追加もサポートします。
Springの詳細は、プロジェクトのWebサイトを参照してください。 http://www.springsource.org/get-started
OSGi: Oracle Event Processingアプリケーション・コンポーネントは、OSGiバンドルとしてアセンブルおよびデプロイされます。OSGiの詳細は、次を参照してください。http://en.wikipedia.org/wiki/OSGi
XML: Oracle Event Processingアプリケーション構成ファイルは、XMLで記述されています。これらのファイルには、EPNステージとその他の設計時の構成との関係を定義するアセンブリ・ファイルが含まれています。Oracle CQL問合せなどのアプリケーションがデプロイされた後に変更できる設定を含む個別の構成XMLファイルです。
SQL: Oracle CQLは、ストリーミング・データを使用するアプリケーションの必要性に対処するために設計された機能でSQLを拡張します。
Hadoop: Oracle CQLの開発者は、問合せのコードからビッグ・データHadoopデータ・ソースにアクセスできます。Hadoopはオープンソース・テクノロジであり、これを使用してクラスタにまたがって分散された膨大なデータ・セットにアクセスできます。Hadoopソフトウェアの特徴の1つに、リレーショナル・データベースに保存されていない膨大な量のデータへのアクセスを可能にするということが挙げられます。
Hadoopの詳細は、HadoopプロジェクトのWebサイトhttp://hadoop.apache.org/を参照してください。
NoSQL: Oracle CQLの開発者は、問合せのコードからビッグ・データNoSQLデータ・ソースにアクセスできます。Oracle NoSQLデータベースは、分散型のキー値データベースです。Oracle NoSQLでは、データは特定のストレージ・ステージで記述されるキー-値ペアで格納されます。ストレージ・ステージは、高可用性、ステージ失敗のイベントにおける高速フェイルオーバー、および問合せの最適なロード・バランシングを確実にするためにレプリケートされます。
Oracle NoSQLの詳細は、Oracle Technology Networkページhttp://www.oracle.com/technetwork/products/nosqldb/を参照してください。
RESTインバウンド・アダプタおよびRESTアウトバウンド・アダプタ: RESTインバウンド・アダプタおよびRESTアウトバウンド・アダプタでは、HTTP Post
リクエストからのイベントの使用と、EPNで処理されるイベントの受信が可能です。
MBean API (JMXテクノロジ): 管理操作および動的なEPN変更が可能です。
Oracle Business Rules: 独自のビジネス・ロジックの定義およびアプリケーションの構築が可能です。
この項で説明されているユースケースは、Oracle Event Processingアプリケーションに固有の用途を示しています。
ファイナンシャル: 即応的なカスタマ・リレーションシップ
顧客と関係の強化を目的としたイニシアチブの一環として、あるリテール銀行は、個々の顧客の購入パターンと位置情報に応じたクーポンを発行する企画を立てました。
銀行は、顧客が最もよく使用するATM活動地域の地理データを含む現金自動預け払い機(ATM)データを収集します。銀行は、また、クレジット・カード取引の情報を取得しました。このデータを使用すれば、銀行は、顧客がどこにいて何を買う可能性が高いかという情報に基づき、購入インセンティブ(クーポンなど)をリアルタイムで顧客に送付できます。
Oracle Event Processingアプリケーションは、ATMやクレジット・カードの取引という形でイベント・データを受信します。Oracle CQL問合せは、GPS座標および近くで購買意欲がありそうなものを使用して、顧客の位置を抜き出すパターンへと受信イベントをフィルタします。この一時データが、銀行で保存されている顧客のプロファイル・データと照合されます。一致するものが見つかると、購入インセンティブがモバイル・デバイスなどを介して顧客にリアルタイムで送信されます。
通信事業: リアルタイム課金
モバイル・データ使用の著しい増加に伴い、広い携帯電話顧客基盤を抱える電話通信会社が、その課金モデルを定額モデルからリアルタイムでの使用量に応じた利用回数制課金モデルへ変えようとしています。
この会社はモバイル・デバイスに割り当てられたIPアドレスを追跡し、これを保存されたユーザー・アカウント・データと関連付けています。(より詳細なデータ・プラン使用状況を得るため)ディープ・パケット・インスペクション(DPI)装置およびIPサーバーから追加データを収集し、Hadoopベースのビッグ・データ・ウェアハウスに挿入します。
Oracle Event Processingアプリケーションは、リアルタイムのイベント・データとして使用状況情報を受信します。Oracle CQL問合せの発行と、一時使用状況データと保存されている顧客アカウント・データとの関連付けにより、アプリケーション側で請求要件が決定されます。
エネルギー: ビッグ・データの分析による効率改善
データ管理デバイスおよびサービスを提供するある企業は、総所有コストを削減するため、データ・センターのコーディネーションとエネルギー管理を改善する必要があります。この企業にとって必要なのは、より詳細なセンサーおよびデータ・センターのレポートです。
この企業は現在、異種リソースからエネルギー使用状況に関するセンサー・データを受信しています。各センサーからのデータを個別に分析し、その妥当性を確認した上で、他のセンサーからのデータと集約し、エネルギーをより効率的に使用できるパターンを特定する必要があります。
個別にデプロイされるOracle Event Processingアプリケーションは、2層のアプローチを提供します。
あるアプリケーションは、数千のデータ・センターの1つ1つにデプロイされており、イベント・データとしてセンサー・データを受信します。このアプリケーションは、センサー・データを表すイベントに対して問合せを行い、そのセンターのローカルな使用状況を分析し、障害や問題のあるイベントをフィルタリングし、必要に応じてアラートを送信します。
複数のセンター管理サイトにデプロイされた別のアプリケーションが下層アプリケーションからのイベント・データを受信します。このアプリケーションはシステム全体からのデータを集約し、整合性に関する問題を特定し、パターンについてのレポートに使用するデータを生成します。