このトピックでは、大量のイベントや時間ベースのイベント データを扱う宣言型言語であるEPL(イベント処理言語)について説明します。ESAでは、大量のイベントや時間ベースのイベント データを扱う宣言型言語であるイベント処理言語(EPL)を使います。この言語は、イベントのフィルタリングと集計を表現するために使われ、複数のイベント ストリームのスライディング ウィンドウを結合することもできます。EPLには、イベントの複雑な時間因果関係を表現するためのパターン セマンティックも含まれます。EPLでは以下のような機能を実行できますが、これらに限定されません。
- イベントのフィルタリング
- アラートの抑制
- 割合または比率の計算
- 特定のタイム ウィンドウにおける平均、カウント、最小、最大の計算
- 複数のストリームで発生するイベントの関連づけ
- 順不同に発生するイベントの関連づけ
- オン オフ ウィンドウ
- Followed-by句とNot Followed-by句のサポート
- Regexフィルタ サポート
一般的なRDBMSデータベースでは、意味のあるデータを返すためには、明示的なクエリが必要です。これに対して、イベント データは常に不規則なため、こうしたデータベースへの格納には適していません。開発者は、一時ロジックおよび集計ロジックを自分で実装する必要があります。一方、EPLエンジンは、より高度な抽象化とインテリジェンスを提供し、また、従来のデータベースとは逆の管理アプローチを持つデータベースとして考えることもできます。すなわち、従来のデータベースのようにデータを格納してそのデータに対してクエリを実行するのではなく、EPLはクエリを格納してデータをそこに継続的に流し込む方式のデータベースと言えます。ユーザ定義のクエリに一致する条件が発生すると、EPLエンジンはリアルタイムで応答します。
詳細ESAルールでは正しい文字のケースが必要ですが、[調査]ビューではすべての文字が小文字に変換されます。しかし、[調査]ビューで小文字に表示されてもメタが小文字でない場合があります。正しいケースを使用していることを確認するために、RSAはtoLowerCase()関数の使用を推奨します。例:
@RSAAlert(oneInSeconds=0)
SELECT * FROM Event(
/* Statement: Download PDF File */
(filetype.toLowerCase() IN ( 'pdf' ) AND medium IN ( 1 ))
OR
/* Statement: Download EXE File */
(filetype.toLowerCase() IN ( 'windows_executable' , 'x86 pe' , 'windows executable' ) AND medium IN ( 1 ))
).win:time(5 Minutes)
MATCH_RECOGNIZE (
PARTITION BY ip_src
MEASURES E1 as e1_data , E2 as e2_data
PATTERN (E1+ E2)
DEFINE
E1 as (E1.filetype.toLowerCase() IN ( 'pdf' ) AND E1.medium IN ( 1 )),
E2 as (E2.filetype.toLowerCase() IN ( 'windows_executable' , 'x86 pe' , 'windows executable' ) AND E2.medium IN ( 1 ))
オンライン ヘルプでは、ESAのセットアップ手順を説明するための基本的なステートメントを紹介しています。ただし、EPLステートメントを記述するための詳細な方法については、http://www.espertech.comのサイトを参照してください。EPLのチュートリアルと使用例が提供されています。
注:ESAはEsperバージョン5.3.0をサポートします。