ヘッダーをスキップ
Oracle® CEP 入門
リリース 11gR1 (11.1.1)
B55583-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

1 Oracle CEP の概要

この節では、以下の項目について説明します。

1.1 Oracle Complex Event Processing の紹介

Oracle CEP (以前の WebLogic Event Server) は、高性能なイベント駆動型アプリケーションの開発およびデプロイメント用の Java サーバです。これは、Equinox OSGi に基づいた軽量な Java アプリケーション コンテナであり、ビジネス業務管理の効率性と有効性を向上するため、機能豊富な宣言の環境を提供する Oracle CEP サービス エンジンなどの共有サービスを使用します。このサービスは、データのストリーミングをサポートする構成体が追加された、SQL に基づくクエリ言語である Oracle Continuous Query Language (Oracle CQL) を基盤としています。Oracle CEP では、JRockit Real Time を使用して非常に高度なスループットとマイクロ秒のレイテンシがサポートされ、完全にリアルタイムなエンドツーエンドの Java イベント駆動アーキテクチャ (EDA) 開発プラットフォーム用の Oracle CEP Visualizer および Oracle CEP IDE for Eclipse 開発ツールが用意されています。

Oracle CEP には、ビジネス ロジックを含むユーザの Java コード (POJO) をデプロイする機能があります。Oracle CEP 内でビジネス ロジックを実行することにより、時間およびイベント駆動型アプリケーション向けの高度に調整されたフレームワークが提供されます。

1.2 Oracle CEP の概念

図 1-1 にイベント駆動型システムの概要を示します。

図 1-1 イベント駆動型システムの例

Description of Figure 1-1 follows
「図 1-1 イベント駆動型システムの例」の説明

イベント駆動型システムは、通常、複数のイベント ソース、リアルタイム イベント駆動型アプリケーション、およびイベント シンクで構成されています。デプロイする Oracle CEP サーバと Oracle CEP アプリケーションは、イベント駆動型アプリケーションで構成されます。イベント ソースは通常のイベント データのストリームを生成します。Oracle CEP アプリケーションはイベント ストリームをリスンし、これらのイベントを処理して特別なイベントを生成します。イベント シンクは特別なイベントを受信します。

イベント ソース、イベント駆動型アプリケーション、およびイベント シンクは互いに独立しているため、他のコンポーネントに変更を加えることなくこれらのコンポーネントを追加または削除できます。これはイベント駆動型アーキテクチャの特性です。

イベント駆動型アプリケーションはルールによって駆動されます。Oracle CEP では、Oracle Continuous Query Language (Oracle CQL) を使用して、ルールがクエリとして表現されます。これらのクエリはデータ ストアに永続化され、イベントの着信ストリームを処理し、イベントの発信ストリームを生成するために使用されます。通常、クエリはフィルタ処理と集約関数を実行して、着信イベント ストリームから重要なイベントを検出および抽出します。その結果、通常、発信イベント数は着信イベント数をはるかに下回ります。

Oracle CEP はイベント駆動型アプリケーション開発用のミドルウェアです。Oracle CEP アプリケーションは、本質的にイベント駆動型アプリケーションです。

次に、アプリケーション自体について説明します。アプリケーションは、図 1-2 に示すように Oracle CEP サーバによってホストされる軽量のコンテナです。

図 1-2 Oracle CEP アプリケーション

Description of Figure 1-2 follows
「図 1-2 Oracle CEP アプリケーション」の説明

Oracle CEP アプリケーションは、通常、次の主要なコンポーネントで構成されます。

1.3 イベント処理ネットワーク

アダプタ、チャネル、プロセッサ、およびビジネス ロジック POJO を任意に相互接続してイベント処理ネットワーク (EPN) を形成できます。EPN のトポロジの例を次に示します。

EPN には重要な特性が 2 つあります。

1.4 使用例

Oracle CEP はさまざまな業種やアプリケーションで使用することができます。いくつかの使用例を次に示します。

1.5 Oracle CEP 機能の概要

Oracle CEP の主な機能の概要を以下に示します。

1.6 サポート対象プラットフォーム

表 1-1 に、Oracle CEP リリース 11gR1 (11.1.1) でサポートされるプラットフォームを示します。

表 1-1 Oracle CEP リリース 11gR1 (11.1.1) サポート対象プラットフォーム

オペレーティング システム ハードウェア JVM w/ JDK 1.5.x リリース日

Oracle Enterprise Linux 4 / OVM

x86

JRockit 32

RTM

Oracle Enterprise Linux 4 / OVM

x86-64

JRockit 32

RTM

Redhat Linux 4

x86

JRockit 32

RTM

Redhat Linux 4

x86-64

JRockit 32

RTM

Oracle Enterprise Linux 5.0 / OVM

x86

JRockit 32

RTM

Oracle Enterprise Linux 5.0 / OVM

x86-64

JRockit 32

RTM

Redhat Linux 5.1

x86

JRockit 32

RTM

Redhat Linux 5.1

x86-64

JRockit 32

RTM

SUSE Linux 9

x86

JRockit 32

RTM

SUSE Linux 9

x86-64

JRockit 32

RTM

SUSE Linux 10

x86

JRockit 32

RTM

SUSE Linux 10

x86-64

JRockit 32

RTM

Windows 2003 SP1+

x86

JRockit 32

RTM

Windows 2003 SP1+

x86-64

JRockit 32

RTM

Windows Vista (クライアントのみ)

x86

JRockit 32

RTM

Windows Vista (クライアントのみ)

x86-64

JRockit 32

RTM

Windows XP SP2 (クライアントのみ)

x86

JRockit 32

RTM

Windows XP SP2 (クライアントのみ)

x86-64

JRockit 32

RTM

Solaris 10

SPARC 64

JRockit 64

RTM 後


1.7 Oracle CEP IDE for Eclipse

Oracle CEP IDE for Eclipse は、Oracle CEP アプリケーションを開発するプログラマを対象としています (図 1-3 を参照)。

図 1-3 Oracle CEP IDE for Eclipse

Description of Figure 1-3 follows
「図 1-3 Oracle CEP IDE for Eclipse」の説明

Oracle CEP IDE for Eclipse は、Oracle CEP アプリケーションの開発、デプロイ、およびデバッグ用に設計された、Eclipse IDE のプラグインのセットです。

Oracle CEP IDE for Eclipse の主な機能は以下のとおりです。

詳細については、以下を参照してください。

1.8 Oracle CEP Visualizer

Oracle CEP Visualizer と呼ばれる高度な実行時管理コンソールが用意されています (図 1-4 を参照)。

図 1-4 Oracle CEP Visualizer

Description of Figure 1-4 follows
「図 1-4 Oracle CEP Visualizer」の説明

Oracle CEP Visualizer を使用すると、Oracle CEP サーバ ドメインとそれらのドメインにデプロイする Oracle CEP アプリケーションをブラウザから管理、チューニング、および監視することができます。Oracle CEP Visualizer には、Oracle CQL または EPL ルールの管理および作成のサポートなどを含む、さまざまな高機能の実行時管理ツールが用意されています。

詳細については、『Oracle CEP Visualizer ユーザ ガイド』を参照してください。

1.9 Oracle CEP リリース 11gR1 (11.1.1) の新機能

このバージョンの Oracle CEP には、以下の新機能があります。

1.9.1 マルチサーバ ドメインとクラスタ化

1 つの Oracle CEP ドメインに複数のサーバをコンフィグレーションし、Oracle Coherence を使用してサーバをクラスタ化することで高可用性を実現できるようになりました。

Oracle CEP 管理者ガイド』の「Oracle CEP スタンドアロンサーバ ドメインの管理」を参照してください。

1.9.2 キャッシング

Oracle CEP アプリケーションでは、必要に応じてキャッシュにイベントをパブリッシュしたり、キャッシュのイベントを使用したりすることで、イベントの可用性を高め、イベント処理アプリケーションのパフォーマンスを向上させることができます。キャッシュは、アプリケーション全体のパフォーマンス向上という目的専用に作成された、イベント用の一時的なストレージ領域です。アプリケーションが正常に機能するためにキャッシュは必ずしも必要ではありません。

このリリースでは、Oracle CEP ローカル キャッシュまたは Oracle Coherence を使用してキャッシングをコンフィグレーションできます。

Oracle CEP IDE Eclipse 開発者ガイド』の「Oracle CEP キャッシングのコンフィグレーション」を参照してください。

1.9.3 イベントの記録と再生

Oracle CEP のイベント リポジトリ機能を使用すると、イベント処理ネットワーク (EPN) を通じて流れるイベントを記録、格納できるため、後からイベントを再生できます。イベント リポジトリは、プロセッサやチャネルなど、ステージごとにコンフィグレーションされます。

このリリースでは、イベントの記録と再生をスケジュールすることもできます。

以下を参照してください。

1.9.4 Visualizer 管理コンソール

Oracle CEP Visualizer は、Oracle CEP からのデータを使用し、そのデータを便利で直感的な方法でシステム管理者やオペレータに表示し、さらに特定のタスクにおいてコンフィグレーションの変更を行うために受け入れたデータを再び Oracle CEP に返す Web 2.0 アプリケーションです。

Oracle CEP Visualizer ユーザ ガイド』の「Oracle CEP Visualizer の概要」を参照してください。

1.9.5 HTTP パブリッシュ/サブスクライブ アダプタ

HTTP パブリッシュ/サブスクライブ サーバは、ブラウザ ベースのクライアントなどの Web クライアントが、すべて HTTP 上での非同期メッセージを使用して、チャネルをサブスクライブし、利用可能なメッセージを受信し、これらのチャネルにメッセージをパブリッシュするためのメカニズムです。Oracle CEP の各インスタンスには、アプリケーションに HTTP パブリッシュ/サブスクライブ機能を実装するためにプログラマが使用できる pub-sub サーバが含まれています。

Oracle CEP IDE Eclipse 開発者ガイド』の「HTTP パブリッシュ/サブスクライブ サーバ アダプタのコンフィグレーション」を参照してください。

1.9.6 JMS アダプタ

Oracle CEP では、Java コードを作成せずに、JMS キューとの間でメッセージを送受信するためにイベント アプリケーションで使用できる個別の着信と発信の JMS アダプタが提供されます。

Oracle CEP IDE Eclipse 開発者ガイド』の「JMS アダプタのコンフィグレーション」を参照してください。

1.9.7 ドメイン作成の Configuration Wizard

Configuration Wizard は、CEP ドメインを作成するための新しいツールです。

以下を参照してください。

1.9.8 Oracle Continuous Query Language (Oracle CQL)

Oracle Continuous Query Language (Oracle CQL) は、データのストリーミングをサポートする構成体が追加された SQL に基づくクエリ言語です。Oracle CQL を使用すると、Oracle CEP を使用して複合イベント処理 (CEP) を行う、データ ストリームに対するクエリを表現できます。

Oracle CEP リリース 11gR1 (11.1.1) では、Oracle CQL がイベント処理言語 (EPL) に取って代わります。Oracle CEP では下位互換性を保つために EPL がサポートされています。このリリースでは、すべての Oracle CEP サンプルが Oracle CQL で表現されています。

Oracle CEP CQL 言語リファレンス』を参照してください。

Oracle CQL には以下の機能があります。

  • ストリームとリレーションの演算子 - ストリームとリレーションを使用して操作を実行します。

    • リレーションからリレーションへの演算子 - リレーションを生成します。

      Oracle CEP CQL 言語リファレンス』の「リレーションからリレーションへの演算子」を参照してください。

    • ストリームからリレーションへの演算子 - 以下のさまざまな枠演算子を使用して、ストリームからリレーションを生成します。

      • 範囲 : 時間ベース

        S[Range T] またはオプションで、

        S[Range T1 Slide T2]

      • 範囲 : 時間ベース (無限)

        S[Range Unbounded]

      • 範囲 : 時間ベース (現在)

        S[Now]

      • 範囲 : 定数値

        S[Range C on ID]

      • タプルベース :

        S[Rows N] またはオプションで、

        S[Rows N1 Slide N2]

      • 分割 :

        S[Partition By A1 ... Ak Rows N] またはオプションで、

        S[Partition By A1 ... Ak Rows N Range T] または

        S[Partition By A1 ... Ak Rows N Range T1 Slide T2]

      Oracle CEP CQL 言語リファレンス』の「ストリームからリレーションへの演算子」を参照してください。

    • リレーションからストリームへの演算子 - 以下のように、リレーションからストリームを生成します。

      • IStream : 挿入ストリームです。

        T の時点で rR にあり、T-1 の時点で r が R にない場合、IStream(R) にはすべての (r,T) が含まれます。

      • DSteam : 削除ストリームです。

        T-1 の時点で rR にあり、T の時点で rR にない場合、DStream(R) にはすべての (r,T) が含まれます。

      • RStream : リレーション ストリームです。

        T の時点で rR にある場合、RStream(R) にはすべての (r,T) が含まれます。

      Oracle CEP CQL 言語リファレンス』の「リレーションからストリームへの演算子」を参照してください。

    • ストリームからストリームへの演算子 - 1 つ以上の他のストリームからストリームを生成します。

      Oracle CEP CQL 言語リファレンス』の「ストリームからストリームへの演算子」を参照してください。

  • クエリ、ビュー、および結合 :

    • Oracle CQL クエリは、1 つ以上のストリームまたはビューからデータを取得するため Oracle CEP サービス エンジンに対して実行される、Oracle CQL 構文で表現された操作です。[REGISTER|CREATE] QUERY 文を使用して作成した最上位の SELECT 文はクエリと呼ばれます。

      特に、Oracle CQL MATCH_RECOGNIZE 条件とそのさまざまな句を使用してストリーム要素間の複雑な条件を簡潔に表現し、データ ストリームに最適化された高度な比較を実行できます。MATCH_RECOGNIZE 句は Oracle CQL でリレーション変数がサポートされる任意の場所で使用できます。

      例 1-1 MATCH_RECOGNIZE クエリ

      <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),
                  B  AS  ((B.temp >= 25) and 
                          (B.element_time - A.element_time < INTERVAL "0 00:00:05:00" DAY TO SECOND)),
                  C  AS  (C.element_time - A.element_time >= INTERVAL "0 00:00:05:00" DAY TO SECOND)
          ) as its
      ]]></query>
      
    • Oracle CQL ビューは、ストリームまたはリレーションでの代替の選択項目を表します。Oracle CQL では、サブクエリの代わりにビューを使用します。[REGISTER|CREATE] VIEW 文を使用して作成した最上位の VIEW 文はビューと呼ばれます。

    • 結合は、複数のストリーム、ビュー、またはリレーションから行を結合するクエリです。

    Oracle CEP CQL 言語リファレンス』の「クエリ、ビュー、および結合」を参照してください。

  • Oracle CQL 文 - クエリ、ビュー、関数、および枠を作成および使用する各種の文です。

    Oracle CEP CQL 言語リファレンス』の「Oracle CQL 文」を参照してください。

  • 関数 - 各種の組み込み関数およびユーザ定義関数を作成するために拡張できる基本クラスです。以下が含まれています。

    • 単一行

    • 集約

    • 高性能な科学技術計算のための Colt オープン ソース ライブラリに基づいた統計的かつ高度な算術演算

    • java.lang.Math クラスに基づいた統計的かつ高度な算術演算

    Oracle CEP CQL 言語リファレンス』の「関数」を参照してください。

  • 時間 - 以下を含む、タイムスタンプと高度なスケジュールに基づいた制御です。

    • アプリケーションまたはシステムのタイムスタンプを持つリレーション

    • アプリケーションまたはシステムのタイムスタンプを持つストリーム

    • 継承されたタイムスタンプを持つストリーム

    Oracle CEP CQL 言語リファレンス』の「時間」を参照してください。

1.9.9 イベント処理言語 (EPL)

イベント処理言語 (EPL) 新しい機能は以下のとおりです。


注意 :

Oracle CEP リリース 11gR1 (11.1.1) では、Oracle CQL がイベント処理言語 (EPL) に取って代わります。Oracle CEP では下位互換性を保つために EPL がサポートされています。詳細については、節 1.9.8「Oracle Continuous Query Language (Oracle CQL)」を参照してください。

  • パラメータ化されたクエリ - パラメータ化されたクエリを使用すると、EPL クエリの内部に疑問符の形式でプレースホルダを含めることができます。プレースホルダは実行時に値とバインドされ、通常の文にコンパイルされます。プロセスは JDBC の PreparedStatement とほぼ同じです。

    Oracle CEP EPL 言語リファレンス』の「パラメータ化されたクエリ」を参照してください。

  • サブクエリ - EPL では、単純サブクエリと相関サブクエリの両方がサポートされています。単純サブクエリでは、内部クエリは外部クエリに相関していません。相関サブクエリでは、SELECT 句を別の SELECT 句または WHERE 句に埋め込むことができます。WHERE 句でサブクエリを使用する場合、IN および EXISTS の両方のキーワードを使用できます。以前は FROM 句でしか使用できず、内部クエリと外部クエリとの相関機能がありませんでした。

    Oracle CEP EPL 言語リファレンス』の「単純サブクエリと相関サブクエリ 」を参照してください。

  • 動的なイベント プロパティ - 動的な (つまり、チェックされていない) プロパティは、文のコンパイル時に認識される必要のないイベント プロパティです。これらのプロパティは実行時に解決されます。動的プロパティの背景にある概念として、基になるイベント表現でプロパティが必ずしも事前に認識されないということがあります。基になるイベントには文のコンパイル時に認識されない追加のプロパティが含まれていることがありますが、このようなプロパティは EPL クエリでも必要な場合があります。この概念は、機能の豊富なオブジェクト指向のドメイン モデルを表現するイベントや、汎用コンテナ イベントを使用する場合に特に役立ちます。

    このリリースでは動的イベント プロパティに関連して次の関数が追加されました : INSTANCEOF、CAST、および EXISTS。

    Oracle CEP EPL 言語リファレンス』の「動的なイベント プロパティ」を参照してください。

1.9.10 セキュリティ

Oracle CEP には、データ ストリームとイベント ストリーム、コンフィグレーション、ユーザ名とパスワードのデータ、セキュリティ ポリシー情報、リモート資格、ネットワーク トラフィックなどのサーバ リソースを保護するさまざまなメカニズムが用意されています。

Oracle CEP では、認証、承認、ロール マッピング、および資格マッピング用のさまざまなセキュリティ プロバイダがサポートされています。初期インストールの時点では、Oracle CEP は認証および承認の両方にファイルベース プロバイダを使用するようにコンフィグレーションされています。LDAP または DBMS プロバイダを使用するようにシステムをコンフィグレーションすることもできます。

このリリースでは、カスタム ユーザやグループをコンフィグレーションし、それらを使用して Oracle CEP アプリケーションへのアクセスを制御できます。

このリリースでは、Oracle CEP は com.rsa.jsafe.provider.JsafeJCE セキュリティ プロバイダを使用して、連邦情報処理規格 (FIPS) をサポートしています。このプロバイダを使用して、FIPS が認定する SSL 用の擬似乱数ジェネレータを使用するように Oracle CEP をコンフィグレーションできます。

Oracle CEP 管理者ガイド』の「Oracle CEP のセキュリティのコンフィグレーション」を参照してください。

1.9.11 イベント Bean と Spring Bean

イベント Bean と呼ばれる新しいコンポーネントの種類があります。イベント Bean は基本の Spring Bean とほぼ同様ですが、モニタや記録/再生などの完全な Oracle CEP フレームワークを利用できます。イベント Bean はアダプタと同じ機能を持ちますが、アダプタが開始または終了ノードとして使用される EPN で、中間ノードとして使用する必要があります。

標準 Spring Bean を EPN のノードとして使用できますが、Oracle CEP フレームワークは利用できません。

イベント Bean の Spring タグに、EPN アセンブリ ファイルを通じてライフサイクル コールバック メソッドを設定する属性が含まれるようになりました。

スレッドで実行する必要のあるイベント Bean と Spring Bean では Java クラスで com.bea.wlevs.ede.api.RunnableBean を実装する必要があります。

1.9.12 アプリケーションの停止と再開

アプリケーションを停止および再開できます。

1.9.13 ドメイン ディレクトリ構造の変更点

クラスタ化およびマルチサーバ環境をサポートするため、すぐに使用できるサンプル ドメインのディレクトリ構造が変更されました。

以前は、すべてのドメイン ファイルが ORACLE_CEP_HOME/ocep_11.1/samples/domains/helloworld_domain などのドメイン ディレクトリ直下にありました。ORACLE_CEP_HOME は Oracle CEP の最上位インストール ディレクトリです。

このリリースでは、ドメイン ディレクトリには単一のサーバに対応する 1 つ以上のサブディレクトリが含まれています。このディレクトリには、該当するサーバのすべてのコンフィグレーション ファイルが含まれています。たとえば、HelloWorld ドメインには単一サーバが含まれており、そのコンフィグレーション ファイルは、ORACLE_CEP_HOME/ocep_11.1/samples/domains/helloworld_domain/defaultserver ディレクトリにあります。

ドメインを作成する新しい Configuration Wizard は、この更新されたディレクトリ構造に従っています。

以下を参照してください。

1.10 次の手順