Comments
Description
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