...

Oracle CEPによるリアルタイム・イベント処理開発の実際

by user

on
Category: Documents
6

views

Report

Comments

Transcript

Oracle CEPによるリアルタイム・イベント処理開発の実際
オラクルコンサルが語る!
Oracle CEPによるリアルタイム・イベント処理開発の実際
日本オラクル株式会社 テクノロジーソリューションコンサルティング統括本部
マネージングプリンシパルコンサルタント 五十嵐 建平
以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。
また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことは
できません。以下の事項は、マテリアルやコード、機能を提供することをコミットメン
ト(確約)するものではないため、購買決定を行う際の判断材料になさらないで下さ
い。オラクル製品に関して記載されている機能の開発、リリースおよび時期につい
ては、弊社の裁量により決定されます。
OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。
文中の社名、商品名等は各社の商標または登録商標である場合があります。
Copyright© 2011, Oracle. All rights reserved.
2
演者紹介
• 五十嵐 建平
• 2007年くらいまではデータベースのコンサルタント
• DBマガジンにいくつか特集を執筆
• 文字化け退治、コネクションプール、SQLチューニング・・・
• 2008年くらいからミドルウェアのコンサルタント
• 特にCEP、Coherenceなどを用いて「速い、凄い」
アーキテクチャをたくさん実装している
Copyright© 2011, Oracle. All rights reserved.
3
Agenda
• 溢れるイベント
• どこに?
• 何をしたい?
• Event Driven Architecture と CEP
• EDA
• Complex Event Processing
• 動作デモ:何がいいのか?
• すぐに検知しよう!
• データベース対CEP
• 開発デモ:どのように開発したか?
• Eclipse – EPN, Spring
• Visualizer
Copyright© 2011, Oracle. All rights reserved.
4
溢れるイベント
Copyright© 2011, Oracle. All rights reserved.
5
飛躍的に拡大するデジタルデータ
29倍の成長
2010年新規デジタルデータ
2020年新規デジタルデータ
1,200 Exabytes
35,000 Exabytes
企業統合、提携、グローバル化
スマートフォン、常時接続
家電、自動車のオンライン化
対象ユーザーの増加
利用頻度の拡大
情報のストリーム化
Copyright© 2011, Oracle. All rights reserved.
6
次世代サービス・プラットフォーム
情報検知・送信
(センサー)
情報受信
フィルタリング
リアルタイム
情報ハンドリング
Smart Device
/Gateway
情報整形
情報蓄積
分析
情報活用
アクション実行
Service
Applications
Business Analytic
•
•
•
•
Fast Data
Management
•
•
•
情報受信/フィルタ
イベント検知
各種アクション実行指示
統計分析
法則/ルールの
発見/取捨選択
Big Data
Management
•
•
•
データ集計/マイニング
各種属性情報保存
法則/ルールの創出
Service Integration
•
•
情報発生検知
情報変化検知
情報整形
情報送信
システム連携/アクション要求
•
•
•
•
情報活用
アクション実行
プロセス駆動
M2M Service Platform Core
レスポンスタイム・即時性
同時実効性
接続性(標準データモデル)
大量データ処理
データマイニング
アルゴリズム
データ可視化
Copyright© 2011, Oracle. All rights reserved.
ビジネス・ロジック
ビジネス・プロセス
接続性(標準データモデル)
トランザクション処理
7
溢れるイベント
•
•
•
•
•
•
•
•
•
GPS
RFID
カメラ
温度
明るさ
赤外線
カレンダー
映像
医療機器
分類しておきましょう
Copyright© 2011, Oracle. All rights reserved.
8
EDAとCEP
Copyright© 2011, Oracle. All rights reserved.
9
Event Driven Architecture
• イベントを適切に扱うためのアーキテクチャ
イベント・ソース
イベント処理ロジック
フィルタリング
アウトプット
イベント・データタイプ
イベント・フォーマット
Copyright© 2011, Oracle. All rights reserved.
10
イベントの定義
• Detectable-condition view
• 観測可能なものがあるとき、定期的な観測をイベントとする
• 例) GPSによるトラックの位置、温度センサー
• State-change view – 状態の変化
• 状態の変化をイベントとする
• 例) 明るさセンサーによる照明のON/OFF検知、ログイン状態
• 応用例) 体温計による測定で37℃を越えた(微熱発生イベント)
• Happening view – 出来事
• 何かが発生した際の、発生そのものをイベントとする
• 例) 家を買う、飛行機の着陸、DDDのセミナー
Copyright© 2011, Oracle. All rights reserved.
11
期間とイベント
• State-changeイベントは、期間を計測可能
• 例) ログイン状態の開始から、ログアウト状態に遷移するまでの
時間が、ログイン期間
• 殆どのHappeningイベントは期間を計測可能
• 例) 3ヶ月で家を買った、100年戦争
• Detectable-conditionイベントは期間を計測不可
• P(X,Y) = (30, 34)、(31, 25)のような取得値であり、ある一点の時刻
のみを表すため。
Copyright© 2011, Oracle. All rights reserved.
12
イベントに含まれる属性
• イベントタイプを表すタグ
• 例) オーダーイベント、 RFID読み取り、 住所変更
•
•
•
•
•
•
固有の識別子
タイムスタンプ
イベントの期間(開始時刻~終了時刻)
イベント生成者の、名前、アドレス、識別子
イベントの優先度
その他の値
• 例) 車の位置、株価
• 元となるイベント・オブジェクトの識別子
• 元となるイベント・オブジェクトのコピー
Copyright© 2011, Oracle. All rights reserved.
13
イベント・ガイドライン
• イベント・オブジェクトの個数に上限はない
• イベント・オブジェクトは、オブジェクト指向でいうオブジェ
クトとは異なる。
• 変化がなくてもイベントとなり得る。
• 何かのアクションを観測するまで、状態変化を表すデータ
はイベント・オブジェクトとして構成されない。
Copyright© 2011, Oracle. All rights reserved.
14
EDA 5原則
•
•
•
•
•
現在のイベントをレポートする。
プッシュでデータを送る(not pull)
瞬時にレスポンスする
一方通行のデータ通信
コマンドフリー
Copyright© 2011, Oracle. All rights reserved.
15
イベント階層とComplex Event
• CEPの基本となる考えは”点を繋げる”
• CEPシステムは、ベースとなるイベントを元に複雑なイベ
ント(Complex Events)を作成
熱風邪
平熱
36℃
高熱
微熱
37℃
病み上がり
37℃
38℃
38℃
Complex Events (high)
微熱
平熱
Complex Events (low)
37℃
36℃
Simple Events
時間
Copyright© 2011, Oracle. All rights reserved.
16
CEPソフトウェアの役割
•
•
•
•
•
フィルタリング
合計、平均、個数、ソート等の処理
フォーマットの変換
他の情報源(DB等)から得られた情報の付加
イベントの分割配送
• ある一つのイベントAをイベントA1、A2と分け別々の宛先に送信
• イベント・パターンの検出
より複雑な(Complex)イベントへ変換し
「意味」を付加して出力する
Copyright© 2011, Oracle. All rights reserved.
17
イベント処理のための問い合わせ言語
CQL (Continuous Query Language)
• 時系列での集計を可能にするためのQL
• 瞬間的な情報ではなく、特定の”期間”をトレースし、情報の意味
を特定する
• 時間感覚を”ウィンドウ”として表現する
• 判断遅延を防ぐために、すべてメモリ上で処理を行う
例: Wパターンを利用した設備保全
Y WZ
X
minutes
1
9
12
19
Copyright© 2011, Oracle. All rights reserved.
18
1枚で表現すると・・・
Data Grid
Oracle CEP
Data Grid
イベントソースから収集
ルールに基づく判定
アクション
• DBテーブル
• フィルタ、集約
• Coherence
• CQLによる記述
• アダプタ経由
• イベント判定の
チェイン構造化も可
• 任意のアクション
- メール通知、 BAM配信
- データグリッド経由で
パラレル処理
Copyright© 2011, Oracle. All rights reserved.
19
動作デモ
Copyright© 2011, Oracle. All rights reserved.
20
素朴な疑問
• Databaseでも頑張ればできるんじゃないの?
Copyright© 2011, Oracle. All rights reserved.
21
シナリオ
• 近くの上顧客にクーポン配布
• やりたいこと:お店の近くを通ろうとした人を検知したら、ここ5秒間
で通った人の中で最も高いポイントを持っているかをチェック。該
当し、かつその前の5秒間での平均値を上回っているのであれば
即座に半額クーポンを送る
• 都合上すごく交通量が多くなる可能性があるということにする。
• 順番によってクーポン量が変わるがタイミングが大切!
気にしない
100
15
10
200
10
160
Copyright© 2011, Oracle. All rights reserved.
22
SQL
• 通過時更新
• INSERT INTO T_INFO (ID, point, tstamp) VALUES (<ID>, <所持ポイント>, SYSTIMESTAMP);
COMMIT;
• 通過時評価(トリガーで処理)
SELECT * FROM (
SELECT ID, tstamp FROM T_INFO
WHERE point = (
SELECT MAX(point)
FROM T_INFO
WHERE tstamp BETWEEN (SYSTIMESTAMP-5/60/60/24) AND SYSTIMESTAMP
AND point >= (
SELECT AVG(point)
FROM T_INFO
WHERE tstamp BETWEEN (SYSTIMESTAMP-10/60/60/24) AND SYSTIMESTAMP
)) ORDER BY tstamp DESC)
WHERE tstamp = (select max(tstamp) from t_info)
• 索引を(tstamp, point)に付与
Copyright© 2011, Oracle. All rights reserved.
23
実行!
• 秒間700人程度でgive up。検知しても5秒前のものだったり・・・
6000
5000
4000
3000
2000
1000
0
80
112
144
176
208
240
272
304
336
368
400
432
464
496
528
560
592
624
656
688
720
752
784
816
848
880
912
ms
投入スループット
DB
Copyright© 2011, Oracle. All rights reserved.
24
そもそも・・・
• スループットが間に合っていませんでした・・・
• 右肩上がりのグラフが期待するところ
250
200
150
Throughput
100
50
0
80 128176224272320368416464512560608656704752800848896
投入スループット
DB
Copyright© 2011, Oracle. All rights reserved.
25
CEP
• Database版に比べて悪化はどうなるでしょうか?
Copyright© 2011, Oracle. All rights reserved.
26
比較
• CEP悪化せず
DBとCEPの遅延時間比較
6000
5000
4000
3000
2000
1000
0
16
64
112
160
208
256
304
352
400
448
496
544
592
640
688
736
784
832
880
928
ms
投入スループット
CEP
DB
Copyright© 2011, Oracle. All rights reserved.
27
CEP部分を拡大
• スループットに影響せず、1msの壁をも下回る
DBとCEPの遅延時間比較
2
1.5
1
0.5
投入スループット
928
880
832
784
736
688
640
592
544
496
448
400
352
304
256
208
160
112
64
0
16
ms
CEP
Copyright© 2011, Oracle. All rights reserved.
28
スループット比較
• CEPはきちんと右肩上がり
1000
800
600
400
200
16
64
112
160
208
256
304
352
400
448
496
544
592
640
688
736
784
832
880
928
0
投入スループット
CEP
DB
Copyright© 2011, Oracle. All rights reserved.
29
開発デモ
• 実際の開発をお見せします
• 時間の関係上ソースコードはコピーしていきます
• ちなみに、DB版の方がずっと時間かけています
• EPN開発 <アダプタ – イベント・ビーン – プロセッサ>
• CQL記述 <プロセッサ>
<avgpoints>
select avg(point) as avgp from helloworldInputChannel [Range 10 seconds]
<maxpoints>
select max(point) as maxp from helloworldInputChannel [Range 5 seconds]
select h.id, h.point, h.tstamp
from helloworldInputChannel [now] as h
, maxpoints as m
, avgpoints as a
where h.point >= a.avgp and h.point = m.maxp
Copyright© 2011, Oracle. All rights reserved.
30
開発デモ2 - Visualizer
• 動かしながら状況を確認できます。
• 流量
• レスポンス
• CQLの変更
Copyright© 2011, Oracle. All rights reserved.
31
なぜ速いのか?
• Database
• テーブルへのストア & スキャン
• SQLはテーブルや索引へのアクセス/スキャンにコンパイルされる
(実行計画)
• 入れたデータはDELETEしてあげる必要がある
• CEP
• キューへのストア&フォワード
• CQLはキューの定義とライフサイクルにコンパイルされる
• キューからのデキューは自動的に管理される(DELETEは不要)
• 今回のケースでは10秒を過ぎたデータは自動的に破棄されて
いる
Copyright© 2011, Oracle. All rights reserved.
32
開発してみましょう
• OTN Downloads
• http://www.oracle.com/technetwork/jp/middleware/eventdriven-architecture/downloads/index.html
• 日本語マニュアル(R11.1.1.4)
• http://download.oracle.com/docs/cd/E23549_01/nav/portal_book
list.htm から Complex Event Processing のマニュアル群
Copyright© 2011, Oracle. All rights reserved.
33
OTNセミナーオンデマンド
コンテンツに対する
ご意見・ご感想を是非お寄せください。
OTNオンデマンド 感想
http://blogs.oracle.com/oracle4engineer/entry/otn_ondemand_questionnaire
上記に簡単なアンケート入力フォームをご用意しております。
セミナー講師/資料作成者にフィードバックし、
コンテンツのより一層の改善に役立てさせていただきます。
是非ご協力をよろしくお願いいたします。
Copyright© 2011, Oracle. All rights reserved.
34
OTNセミナーオンデマンド
日本オラクルのエンジニアが作成したセミナー資料・動画ダウンロードサイト
掲載コンテンツカテゴリ(一部抜粋)
100以上のコンテンツをログイン不要でダウンロードし放題
Database 基礎
データベースからハードウェアまで充実のラインナップ
Database 現場テクニック
Database スペシャリストが語る
毎月、旬なトピックの新作コンテンツが続々登場
Java
WebLogic Server/アプリケーション・グリッド
EPM/BI 技術情報
サーバー
ストレージ
例えばこんな使い方
•
•
•
•
製品概要を効率的につかむ
基礎を体系的に学ぶ/学ばせる
時間や場所を選ばず(オンデマンド)に受講
スマートフォンで通勤中にも受講可能
コンテンツ一覧 はこちら
http://www.oracle.com/technetwork/jp/ondemand/index.html
毎月チェック!
新作&おすすめコンテンツ情報 はこちら
http://oracletech.jp/seminar/recommended/000073.html
OTNオンデマンド
Copyright© 2011, Oracle. All rights reserved.
35
オラクルエンジニア通信
オラクル製品に関わるエンジニアの方のための技術情報サイト
技術資料
インストールガイド・設定チ
ュートリアルetc. 欲しい資
料への最短ルート
特集テーマ
Pick UP
性能管理やチューニングな
ど月間テーマを掘り下げて
詳細にご説明
アクセス
ランキング
他のエンジニアは何を見て
いるのか?人気資料のラン
キングは毎月更新
技術コラム
SQLスクリプト、索引メンテ
ナンスetc. 当たり前の運用
/機能が見違える!?
http://blogs.oracle.com/oracle4engineer/
オラクルエンジニア通信
Copyright© 2011, Oracle. All rights reserved.
36
oracletech.jp
ITエンジニアの皆様に向けて旬な情報を楽しくお届け
製品/技術
情報
Oracle Databaseっていく
ら?オプション機能も見積
れる簡単ツールが大活躍
スキルアップ
ORACLE MASTER!
試験頻出分野の模擬問
題と解説を好評連載中
セミナー
基礎から最新技術まで
お勧めセミナーで自分にあ
った学習方法が見つかる
Viva!
Developer
全国で活躍しているエンジ
ニアにスポットライト。きらり
と輝くスキルと視点を盗もう
http://oracletech.jp/
oracletech
Copyright© 2011, Oracle. All rights reserved.
37
あなたにいちばん近いオラクル
Oracle Direct
まずはお問合せください
Oracle Direct
システムの検討・構築から運用まで、ITプロジェクト全般の相談窓口としてご支援いたします。
ステム構成やライセンス/購入方法などお気軽にお問い合わせ下さい。
Web問い合わせフォーム
フリーダイヤル
専用お問い合わせフォームにてご相談内容を承ります。
http://www.oracle.co.jp/inq_pl/INQUIRY/quest?rid=28
0120-155-096
※フォームの入力にはログインが必要となります。
※こちらから詳細確認のお電話を差し上げる場合がありますので
ご登録の連絡先が最新のものになっているかご確認下さい。
※月曜~金曜
9:00~12:00、13:00~18:00
(祝日および年末年始除く)
Copyright© 2011, Oracle. All rights reserved.
38
Copyright© 2011, Oracle. All rights reserved.
Copyright© 2011, Oracle. All rights reserved.
40
Fly UP