< 本書での表記 > CQL: Continuous Query Language I/O: Input/Output IT: Information Technology POS: Point Of Sales RFID: Radio Frequency Identification SQL: Structured Query Language 商標その他記載の会社名 製品名は それぞれの商標もしくは登録商標です All Rights Reserved. Copyright 2009, Hitachi, Ltd.
Contents 1. 社会インフラのIT 化とストリームデータ処理技術の必要性... 1 2. ストリームデータ処理技術の概要... 2 2.1 インメモリ差分計算による高速処理... 2 2.2 ストリームデータ処理の仕組み... 2 3. ucosminexus Stream Data Platformの適用モデル例... 4 3.1 コンプライアンスチェック... 4 3.2 リアルタイム在庫管理 発注処理... 4 3.3 交通状況モニタリング... 5 4. まとめ... 6
1. 社会インフラのIT 化とストリームデータ処理技術の必要性近年 電子マネーや電子商取引の普及 RFID 利用による物流管理などによって ビジネスで扱う情報 ( データ ) の量が爆発的に増加しています さらに ビジネスのスピードも急激に加速しており 次々に発生する大量のデータをリアルタイムに処理することが求められています しかし データのリアルタイム処理にデータベースを使用する方法では クエリなどを用いて蓄積されたデータを一括処理するため データ検索などのクエリ実行時にタイムラグが生じてしまいます そこで 現在注目されているのが ストリームデータ処理技術です ストリームデータ処理技術とは 無限に到来する時刻順のデータ ( ストリームデータ ) をリアルタイムに処理するデータ処理方法です 一例として 株式取引の アルゴリズムトレード へのストリームデータ処理技術の適用について紹介します アルゴリズムトレードとは 株価や出来高などに応じて コンピュータシステムが自動的に株式売買注文のタイミングや数量を決めて注文を行う取引です アルゴリズムトレードを実現するためには 大量のデータをリアルタイムに分析して 売買注文をする必要があります 証券会社や投資会社での株式自動取引システムの例を図 1-1 に示します 図の株式自動取引システムの場合 ストリームデータ処理では 株価のテクニカル指標やランキング情報から売買をリアルタイムに自動判定します ストリームデータ処理技術は 株式取引のほかにも 在庫管理や不正操作の監視を行うシステムなどにも適用できます ストリームデータ処理技術の利用で 今 の状況や状況の変化をリアルタイムに監視できるようになり そこから新しいビジネスへの展開も期待できます 本冊子では 大量高速データ処理ソリューションを実現するストリームデータ処理技術の概要について説明します また Cosminexus では ストリームデータ処理の汎用的な基盤として ucosminexus Stream Data Platform を提供しています 汎用的な基盤の利用で さまざまな分野にストリームデータ処理技術を適用できます 本冊子では ucosminexus Stream Data Platform の適用例についても紹介します 株価ストリーム 4,000 銘柄 ストリームデータ処理エンジン ゴールデンクロス計算 値上がりランキング計算 集計結果 買い判定 1,000 件 / 秒 デッドクロス計算 値下りランキング計算 売り判定 図 1-1 ストリームデータ処理技術を適用した株式自動取引システムの例 1
2. ストリームデータ処理技術の概要 ストリームとは 株価情報や交通情報のような 無 限に到来する時刻順の大量データです ストリームデータ処理技術は このストリームデータを対象に扱います 2 章では ストリームデータ処理技術について説明します 2.1 インメモリ差分計算による高速処理 ストリームデータ処理技術は データベースを使用したストック型のデータ処理技術とは別の新しい技術です ここでは データベースを使用した一括処理の流れと ストリームデータ処理技術を利用したインメモリ差分計算による高速処理について説明します (1) データベースを使用したデータ処理の流れ従来のデータベースを使用したデータ処理技術では SQL のクエリを発行したタイミングでストックしておいた全データを処理し その後 結果を抽出します ( 一括処理 ) 図 2-1 の場合 id ごとの合計値を求めるクエリが発行されると データベース内にある a および b の値がすべて抽出され id 別に加算されます Sum(val), Group by id id val a 1 b 2 a 3 b 4 a 5 a 6 クエリ発行 a 15 b 6 結果 一括処理クエリ発行時に全データを処理し 結果を抽出 図 2-1 データベースを利用した処理技術 このような検索 演算は クエリを発行するたびに実行されます そのため データベース内のデータの量が増加するにつれて 処理スピードが相対的に低下します (2) ストリームデータ処理技術を使用したデータ処理の流れ一方 ストリームデータ処理技術の場合 入力ストリームとしてデータが入力されると その場でデータ処理を行います また 前回処理した結 果を中間データとして保持しておくため 中間データとの差分だけを処理します ( 差分処理 ) 図 2-2 の場合 中間データとして a=9 b=6 が保持されています ここに 入力ストリームとして a=6 が到着すると 中間データ a=9 に 入力ストリーム a=6 が加算され 結果ストリームとして a=15 が出力されます a,6 入力ストリーム 処理内容 Sum(val), Group by id a,5 b,4 a,3 b,2 a,1 中間データ a 9 b 6 a,15 a,1 b,2 a,4 b,6 a,9 結果ストリーム 差分処理データ到着時に関係する処理だけを実行 図 2-2 ストリームデータ処理技術 ストリームデータ処理では 差分処理が行われるため 処理対象となるデータをすべて処理する必要はありません 大容量データのリアルタイム処理に適したデータ処理技術といえます さらにストリームデータ処理技術では 前回処理した結果をメモリ上で保持するインメモリデータ技術を採用しています これにより ハードディスクなどの外部記憶装置との I/O 時間を削減でき 高速な処理を実現します 2.2 ストリームデータ処理の仕組み ストリームデータ処理の仕組みについて詳しく説明します (1) ストリームデータ処理の定義ストリームデータの処理内容 ( シナリオ ) は あらかじめ CQL(Continuous Query Language) というクエリ言語を使用して定義します CQL は データベースの標準的な言語である SQL を拡張した言語です 汎用的な言語であるため さまざまな業種に対応できます また SQL の知識があれば 容易にプログラミングができます CQL で処理を定義するため 集計 分析処理用の専用アプリケーションを開発する必要はありません システム構築のための工数を大幅に削 2
減でき さらに ニーズの変化に応じた処理手順へと速やかに変更できるようになります (2) ストリームデータ処理の流れストリームデータ処理では 登録された CQL の内容に従って 次の流れでストリームデータ処理を実行します この例では 最新のデータである 10 から 1 までが処理対象として取り出されます 取り出すデータの個数や抽出条件は CQL によりウィンドウの種類で定義します また 定義したウィンドウの種類に従ってデータを取り出すことをウィンドウ演算と言います ウィンドウの種類について次の表にまとめます (a) ストリームデータの中から 処理対象となるデータを取り出します ( ウィンドウ演算 ) (b) 取り出したデータに対して フィルタリングや結合処理などを実施します ( 関係演算処理 ) (c) (b) の演算結果からストリームデータを生成します ( ストリーム化演算 ) 入力デーウィンドウ演算タ処理の流れ ストリームデータ処理基盤 関係演算 ストリーム化演算 図 2-3 ストリームデータ処理の流れ 手順のうち (a) のウィンドウ演算と (c) のストリーム化演算で処理する内容は CQL 固有の文法で定義します 関係演算は SQL の文法と同じです CQL での定義例を図 2-4 に示します CQL の例 IStream( Select id, Sum(val) From str [Rows 3] Group by id) ストリーム化演算 ウィンドウ演算 図 2-4 CQL の定義例 (3) ウィンドウとウィンドウ演算ストリームは 時刻順に連続して到来するため データの切れ目がありません 処理対象としたいデータを取り出すため ストリームデータ処理技術では ストリームをウィンドウという単位で分割します 図 2-5 では最新のデータ 10 個をウィンドウとして取り出す例を示しています 11 ウィンドウ ( 処理対象となるデータ ) 10 9 2 1 出力データ表 2-1 ウィンドウの種類種類概要 ROWS 取得するデータの数を指定ウィンドウする場合に利用します RANGE 取得するデータの時間を指ウィンドウ定する場合に利用します PARTITION グループを指定して グルーウィンドウプ内のデータを取り出す場合に利用します CQL でウィンドウを指定すると ウィンドウの種類に従ってデータが取り出されます これをウィンドウ演算と言います ウィンドウ演算では 取り出すデータの個数や抽出条件を定義できます 3 種類のウィンドウは CQL 内で組み合わせて使うこともできます (4) ストリーム化演算関係演算の結果をストリームデータとして整形して出力するための処理が ストリーム化演算です ストリームデータは 刻々と到着するため ウィンドウ演算で取り出すデータや 関係演算の結果も変化します ストリーム化演算では どのタイミングでデータをストリームデータとして出力するかを定義します ストリーム化演算には 次の 3 種類があります 表 2-2 ストリーム化演算の種類種類概要 ISTREAM (Insert Stream) DSTREAM (Delete Stream) RSTREAM (Relation Stream) 関係演算の結果 新たに追加されたデータを出力します 関係演算の結果 削除されたデータを出力します 一定の時間間隔で演算結果のデータを出力します 図 2-5 ウィンドウの例 3
3. ucosminexus Stream Data Platformの適用モデル例 2 章で説明したストリームデータ処理技術を採用したのが ストリームデータ処理基盤 ucosminexus Stream Data Platform です ucosminexus Stream Data Platform の導入により 大量高速データ処理ソリューションが実現できます 以降では ucosminexus Stream Data Platform の適用モデルについて説明します 3.1 コンプライアンスチェック近年 企業のコンプライアンスが重要視されるようになり リスク管理や不正取引監視が強化されています アクセスできる情報を制限して 不正操作を防止するだけでは他人の ID やパスワードを不正利用した なりすまし などは防止できません また 不正操作を検出するためには 一般的にユーザの操作に関する大量のログ情報をいったん収集 保管し ログ情報を分析していました しかし この方法では不正操作をリアルタイムに検出することは困難です そこで ストリームデータ処理技術を利用すると リアルタイムにユーザの操作に関する大量のログ情報を高速に処理できるため 不正操作の検出も即座に行えます (1) 適用モデル例ストリームデータ処理技術を利用して 不正な操作を検出する例について説明します ログ不正操作の検出 このモデル例では 複数のシステムが出力したユーザ操作のログ情報をストリームデータとして取得しています 取得した情報を基に シナリオに定義した異常行動パターンと照らし合わせて分析し なりすまし などの不正操作がないかを判断します (2) 適用のメリットストリームデータ処理技術のメリットである大量データの高速処理により 大量のログ解析が容易になります また 複数のログを統合して監視することもできます これにより ユーザが不正な操作をした場合 瞬時に状況を検知することが可能です 例えば ユーザ A が東京でシステムにログインしたあと 30 分以内にユーザ A の ID を利用して 大阪からログインがあった場合 不正なログインとして即座に検知できます 3.2 リアルタイム在庫管理 発注処理販売業では 売上を向上するために販売戦略をタイムリーに立案 実行することが重要です 最新の売上状況に合ったリアルタイム性の高い販売戦略が求められます 最新の売上状況を把握するための手段には POS データを分析する方法があります POS データには いつ どこで 何が 幾つ売れた といった情報が格納されています しかし POS データの量は膨大なため データの収集 分析には時間が掛かります 収集した売上状況などを即座に把握し タイムリーな販売戦略を立てるためには 大量データをリアルタイムに処理するストリームデータ処理技術が活用できます ストリームデータ処理 Proxy Server 業務システム 異常行動パターンのシナリオ アラート通知 メール送信 認証システム なりすまし などの異常行動を瞬時に検出 システム管理者 図 3-1 不正な操作の検出によるコンプライアンスチェック 4
(1) 適用モデル例 ストリームデータ処理技術を利用して POS データを分析 集計する例について説明します POS データ 店舗 地区店舗群 ストリームデータ処理 POS 集計 分析シナリオ ( 店舗 ) POS 集計 分析シナリオ ( 地区店舗 ) 集計結果 9:00 12:00 18:00 24:00 PO S データの常時集計 リアルタイム状況表示 分析 図 3-2 POS データの分析 集計 このモデル例では 店舗 または地区店舗群 の POS データをストリームデータとして取得しています 取得したデータは 店舗別の POS データ集計 分析シナリオ および地区店舗群別の POS データ収集 分析シナリオの 2 種類のシナリオに従って 売上情報 商品在庫情報などをリアルタイムに集計 分析します これによって 今 の販売状況に応じた販売戦略をタイムリーに立案 実行できるようになります (2) 適用のメリットストリームデータ処理の結果を利用して売上状況を分析することで 今 あるデータをリアルタイムに活用できます 例えば 分析結果から適切な価格 販売状況に応じた商品の仕入れ数 販売場所などを検討することで 状況に応じた販売戦略をタイムリーに立案 実行できるようになります また 店舗別 地区店舗群別といった複数の分析用のシナリオを定義することで 商品別や店舗の地域別などさまざまなデータを集計でき 多角的に分析できます 3.3 交通状況モニタリング 渋滞情報や事故情報などといった交通状況を知らせる情報には リアルタイム性が求められます リアルタイムに交通状況を把握する仕組みにはプローブ技術があります プローブ技術とは 通行時間などを発信する計測装置を車両に載せ 車両位置情報をきめ細かくモニタリングする技術のことです モニタリング 時に収集した車両位置情報をプローブ情報といいます プローブ情報を処理する際に ストリームデータ処理技術を利用すると よりリアルタイムに交通状況を把握できます (1) 適用モデル例ストリームデータ処理技術を利用して渋滞情報 事故情報を検出する例について説明します 位置情報 ストリームデータ処理 車両の速さ計算 車両の走行方向計算 車両の密度計算 渋滞検出 事故検出 交通情報 渋滞情報 事故情報 図 3-3 渋滞情報 事故情報の検出 このモデル例では 計測装置を搭載した車両から位置情報や速度情報をストリームデータとして取得しています 取得した情報を基に 車両の速さや車両密度などを随時測定 分析し 渋滞情報を検出します (2) 適用のメリットストリームデータ処理技術を利用する最大のメリットは リアルタイムな交通情報をユーザに提供できることです また ストリームデータ処理技術では 登録したシナリオを変更することで 処理に使うアルゴリズムを簡単に切り替えられるといった特徴もあります プローブ情報から渋滞情報や事故情報を検出するために 分析用のアプリケーションを使用する方法では システムの拡張などがあると アプリケーションの修正が必要となります ストリームデータ処理技術を利用すると アプリケーションの修正が不要になる上 処理を変えたい場合にはシナリオを変更するだけでその時々で必要とされる情報を検出できます 5
4. まとめ今日のビジネスでは 時々刻々と発生するデータをリアルタイムに処理 分析することが求められています 本書で紹介したストリームデータ処理技術を採用した ucosminexus Stream Data Plarform を利用することで 次の効果が期待できます (1) 日 の世界から 秒 の世界へストリームデータ処理技術では 差分計算やインメモリ技術 ( メモリ上でのデータを処理する技術 ) によってさらに高速な処理ができるようになります これによって ミリ秒単位でのデータ処理が実現します (2) 最新のデータに基づく集計が可能データ到着時にストリームデータ処理を実施するため 最新のデータに基づく集計が可能です 最新の売上小計や商品別売上ランキングなどを瞬時に集計し その結果をビジネスに反映することができます (3) CQL を使ったシナリオで簡単に定義処理内容は SQL を拡張したCQL で定義します このため 集計 分析処理のための専用アプリケーションの開発は不要になり 処理内容を簡単に作成または変更できるようになります この結果 システム構築のための工数を大幅に削減でき ニーズの変化に応じた処理手順の変更にも速やかに対応できるようになります ストリームデータ処理技術を導入することで 現場の状況や問題点をリアルタイムで把握できるようになり 迅速な意思決定ができるようになります 6
2009 年 12 月第 1 版発行お問い合わせ先 : 株式会社日立製作所ソフトウェア事業部販売推進部 cosminexus-s@itg.hitachi.co.jp ストリームデータ処理技術を利用したソリューションのご紹介 - 大量データのリアルタイム処理 インターネットで製品情報をご覧いただけます http://www.hitachi.co.jp/cosminexus/ http://www.cosminexus.com/