2009/10/23
© International Business Machines Corporation 2008
ストリームコンピューティング
ストリームコンピューティング
ストリームコンピューティング
ストリームコンピューティング
- データ データ爆発時代 データ データ 爆発時代 爆発時代 爆発時代の の の の新 新たな 新 新 たな たな計算 たな 計算 計算パラダイム 計算 パラダイム パラダイム パラダイム
IBM 東京基礎研究所 鈴村 豊太郎
© International Business Machines Corporation 2008
本日 本日本日
本日ごごごご紹介紹介紹介する紹介するするする内容内容内容内容
ストリームコンピューティングの概要 InfoSphere Streams の紹介
実証実験のご紹介
SPADE の主要機能のご紹介
© International Business Machines Corporation 2008 3
背景 背景背景 背景
ネットワーク技術の進化やセンサーデバイスの普及により、様々な データがリアルタイムに利用可能になりつつある
利用可能なデータは爆発的に増加している(例:科研費・情報爆発)
たとえば、
– 製造業:各製造工程のセンサー, RFID – 自動車: GPS センサー、テレマティックス
– 医療: 医療機器のセンサー(心拍数、心電図、脈拍数 etc) – 交通: 交通管理
– 科学技術計算: 電波天文学、地震センサー – セキュリティ: 遠隔監視、サイバーセキュリティ
© International Business Machines Corporation 2008
データの特性の変化: データ爆発の時代の到来
Explosion in market data volumes
New York stock exchange trade
& quote volume
Capital market data volumes rose by 1,750% during 2003-06
Explosion in market data volumes
New York stock exchange trade
& quote volume
Capital market data volumes rose by 1,750% during 2003-06
Consumer Generated
Media
Intelligence & Surveillance
Sensors & Embedded
Internet Devices
データデータ
データデータ量量量量のののの爆発爆発爆発、爆発、、及、及及及びびデータびびデータデータのデータのの種類の種類種類の種類ののの多様化多様化多様化多様化
NYSE ののののマーケットデータマーケットデータマーケットデータマーケットデータのののの総量総量が総量総量ががが指数関数的指数関数的指数関数的に指数関数的にに上昇に上昇上昇上昇
© International Business Machines Corporation 2008 5
アプリケーション アプリケーションアプリケーション
アプリケーション側側側側からのからのからのからの要求要求要求の要求ののの変化変化変化変化
即応性・意思決定までの時間の最小化
– 特定の条件に合致したときに即座に対応することで、新たな価値を生む
• 例) 半導体の製造工程における異常検知
• 例) 集中治療室の患者の状態の検知
様々な情報ソースを利用した高度な分析
– 様々なデータを利用してこれまで不可能だった高度な分析を実現する
• 例) アルゴリズムトレーディング
(22箇所のトレーディング情報や、ニュース情報を組み合わせた自動売買) – データ形式が異なる
• 構造化データ、非構造化データ
– データ到着レートが時間帯によって異なる
© International Business Machines Corporation 2008
新 新新
新たなたなたなたな計算計算計算パラダイム計算パラダイムパラダイムパラダイムのののの必要性必要性必要性必要性
データ データデータ
データののの特性の特性特性特性ののの変化の変化変化変化
アプリケーション アプリケーション アプリケーション
アプリケーションののの特性の特性特性特性ののの変化の変化変化変化
新
新
新
新たな たな たな たな計算 計算 計算 計算パラダイム パラダイム パラダイム パラダイム
の
の の
の必要性 必要性 必要性 必要性
© International Business Machines Corporation 2008 7
ストリームコンピューティング ストリームコンピューティングストリームコンピューティング
ストリームコンピューティングとはとはとはとは????
データウェア データウェア データウェア データウェア
ハウス ハウス ハウス ハウス
センサーネットワーク センサーネットワークセンサーネットワーク センサーネットワーク
デー タ
ストリーム ストリーム ストリーム
ストリーム処理処理処理処理システムシステムシステムシステム
Process data as it is continuously generated
Extracting and organizing information and intelligence
意思決定 意思決定意思決定
意思決定までのまでのまでのまでの時間時間時間時間ををを最小化を最小化最小化最小化
センサーセンサー
センサーセンサーなどなどなど複数など複数複数の複数の情報のの情報情報ソース情報ソースソースソース(((構造化(構造化、構造化構造化、、非構造化、非構造化非構造化データ非構造化データデータデータ含含む含含むむ)む)))かかかか らら
らら時時時時々々々々刻刻刻刻々々到達々々到達到達到達するするするするデータデータデータからデータから、からから、、複合的、複合的複合的に複合的ににに分析判断分析判断し分析判断分析判断しし、し、、、即座即座即座即座のののの 意思決定
意思決定 意思決定
意思決定ををを可能を可能可能可能にするにするにするにする計算計算計算計算パラダイムパラダイムパラダイムパラダイム
© International Business Machines Corporation 2008
ストリームコンピューティング ストリームコンピューティングストリームコンピューティング
ストリームコンピューティングにににに適合適合適合適合するする応用領域するする応用領域応用領域応用領域ののの条件の条件条件条件
以下以下
以下以下のののの条件条件条件条件のうちのうちのうち1つのうち つつ以上つ以上以上以上をを満をを満満たす満たすたすアプリケーションたすアプリケーションアプリケーションアプリケーションがががが候補候補候補候補
1. 情報ソース(センサー)の数の存在または増加の可能性 2. 多様なデータ形式(構造化、非構造化)を活用した、複合的
なデータ分析の必要性
3. 実時間(低レスポンス)への要求
4. システムのキャパシティに対して(相対的に)
• 高い到着データレート
• 必要なストレージの必要性
© International Business Machines Corporation 2008 9
例例
例)例))) ハリケーンハリケーンハリケーンのハリケーンののの影響影響影響による影響による株売買によるによる株売買株売買の株売買ののの自動自動自動リコメンデーション自動リコメンデーションリコメンデーションリコメンデーション
ハリケーン ハリケーン ハリケーン ハリケーンのののの
進路予測進路予測 進路予測進路予測
インダストリー インダストリー インダストリー インダストリーへのへのへのへの
ハリケーン ハリケーン ハリケーン ハリケーンのののの インパクト インパクト インパクト インパクト
ポートフォリオ ポートフォリオポートフォリオ ポートフォリオ
への への への
へのインパクトインパクトインパクトインパクト 米国大洋大気庁
米国大洋大気庁 米国大洋大気庁
米国大洋大気庁からのからのからのからのRSS ニュース
ニュース ニュース ニュースををを取得を取得取得取得
NYSE (ニューヨークニューヨークニューヨーク証券取引所ニューヨーク証券取引所証券取引所証券取引所) からからからから VWAP(出来高加重平均出来高加重平均出来高加重平均)を出来高加重平均 ををを計算計算計算計算
企業財務情報開示 企業財務情報開示企業財務情報開示
企業財務情報開示ののの情報の情報情報情報ををを取得を取得取得取得
ニュースサイト ニュースサイトニュースサイト
ニュースサイトのののの情報情報情報情報をををを取得取得取得取得
ハリケーン ハリケーン ハリケーン
ハリケーンののの影響の影響影響影響によるによるによるによる株株株株 のの
のの売売売り売りりり買買買買いのいの判断いのいの判断判断を判断ををを決決決決 定
定 定 定 P/E (株収益率株収益率株収益率)を株収益率 ををを計算計算計算計算
ストリームコンピューティング ストリームコンピューティング ストリームコンピューティング
ストリームコンピューティングをををを必要必要必要必要とするとするとするとする条件条件条件を条件を満をを満満満たすたすたすたすアプリケーションアプリケーションのアプリケーションアプリケーションののの例例例例
© International Business Machines Corporation 2008
従来 従来従来
従来のののの処理方式処理方式処理方式処理方式でで実現困難でで実現困難実現困難なことは実現困難なことはなことはなことは????
ログ ログ ログ
ログややややデータウェアハウスデータウェアハウスデータウェアハウスにデータウェアハウスににすべてのにすべてのすべてのすべてのデータデータをデータデータををを一旦一旦一旦一旦ためてためてためて、ためて、、、 バッチ
バッチ バッチ
バッチでででで処理処理処理処理するのがするのがするのがするのが基本基本基本基本
– Google MapReduce, Data Grid (例例例:例::加速器:加速器加速器加速器データデータデータデータののペタバイトののペタバイトペタバイトペタバイト級級級級データデータのデータデータののの解析解析解析解析) この
この この
この処理方式処理方式処理方式処理方式でででで困難困難困難困難なことはなことはなことは?なことは???
– データソースのデータソースデータソースデータソースのの増加の増加に増加増加にに従に従従って従ってってって、、すべての、、すべてのすべてのすべてのデータデータデータデータをを保存をを保存保存保存することがすることがすることが困難することが困難困難困難
• 必必必必ずしもすべてのずしもすべてのずしもすべてのずしもすべてのデータデータをデータデータをを保存を保存保存する保存するするする必要必要はなし必要必要はなしはなし(はなし(((例例例例:: 連続:: 連続連続連続データデータデータデータ)))) – 到達する到達到達到達するするデータするデータデータのデータのののリアルタイムリアルタイムリアルタイムリアルタイム性性を性性をを十分を十分十分十分にににに生生生生かしきれないかしきれないかしきれないかしきれない
Database/d ata warehouse
Sensor Network
data
Process data as it is continuously
generated
Minimizing time to react
Transaction
processing Batch
processing
2009/10/23
© International Business Machines Corporation 2008
ストリームコンピューティング
ストリームコンピューティング
ストリームコンピューティング
ストリームコンピューティング処理 処理 処理システム 処理 システム システム システム
InfoSphere Streams
© International Business Machines Corporation 2008
InfoSphere Streams: ストリームコンピューティングシステムストリームコンピューティングシステムストリームコンピューティングシステムストリームコンピューティングシステム
ストリームコンピューティングを実現するソフトウェアシステム システム構成技術
– SPADE (System S Stream Processing Application Declarative Engine)
• ストリーム型アプリケーションの生産性を高めるプログラミング言語
• 下位の分散環境に最適化されたコードを SPADE コンパイラが生成 – ランタイム:最適スケジューリング、耐故障性を実現
数多くの実証実験プロジェクト – ホームランドセキュリティ
– 証券取引・アルゴリズムトレーディング (カナダ TD Bank) – 製造業・リアルタイム異常検知、ITS (高度交通システム) – 環境, 遠隔医療など
© International Business Machines Corporation 2008 13
InfoSphere InfoSphereInfoSphere
InfoSphere Streams Streams Streams Streams プラットフォームプラットフォームプラットフォームプラットフォーム
開発環境 ランタイム環境 ツールキット& アダプター
InfoSphere Streams ランタイム
SPADE Eclipse IDE
ツールキット StreamSight
アウトプット・アダプター & ソース・アダプター
Cognos Now WebSphere MQ Mashup Center
WebSphere Front Office RSS フィード
© International Business Machines Corporation 2008
SPADE: SPADE: SPADE:
SPADE: SSSStream tream tream tream PPPProcessing rocessing rocessing Arocessing Application AApplication pplication Dpplication DDDeclarative eclarative Eeclarative eclarative EEEngine ngine ngine ngine – 高高高高パフォーマンスパフォーマンスパフォーマンスパフォーマンス・・・ストリーム・ストリーム・ストリームストリーム・・・コンピューティングコンピューティングコンピューティングコンピューティングにににに最適化最適化最適化最適化
主な特徴
プログラミング言語とコンパイル基盤
高パフォーマンス・ストリーミング・システムを念頭にお いた設計
幅広いバリエーションのターゲット・アーキテクチャへの 効率的なマッピング
主なコンポーネント
ストリーム・プロセッシング演算子および実行ディレク ティブのツールキット
ストリーム関係型演算子 ユーザー定義演算子
エッジ・ストリーム・アダプター
効果的な配置、パーティショニング等を行う管理機能
主な利点
ストリーム・プロセッシングに最適化 デプロイメントまでの時間短縮 Streams
プロセッシング・ コア
コンパイラー コード ジェネレータ オプティマイザークエリー
Stream プロセッシング グラフ
SPADE を使ってアプリケーションを記述
© International Business Machines Corporation 2008 15
プログラミング プログラミングプログラミング
プログラミング・・・・モデルモデルモデルモデル
アプリケーション・プログラミング (SPADE/INQ)
使いやすい
再利用可能な演算子群
外部の静的データソースまたはス トリーミング・データソースおよびシ ンク群
ソース・アダプター 演算子リポジトリ シンク・アダプター
プラットフォーム最適化コンパイル
© International Business Machines Corporation 2008
シンプル シンプルシンプル
シンプルななな例な例例例
[Application] アプリケーション SourceSink trace
[Typedefs] 型定義 typespace sourcesink typedef id_t Integer typedef timestamp_t Long [Program] プログラム // 仮想スキーマ定義
vstream Sensor (id : id_t, location : Double, light : Float, temperature : Float, timestamp : timestamp_t) // ソース・ストリームは source 演算子が生成 – この場合タプルは入力ファイルから投入される
stream SenSource ( schemaof(Sensor) )
:= Source( ) [ “file:///SenSource.dat” ] {}
// この中間ストリームは Aggregate 演算子がSenSourceストリームを入力に使って生成。 stream SenAggregator ( schemaof(Sensor) )
:= Aggregate( SenSource <count(100),count(1)> ) [ id . location ]
{ Any(id), Any(location), Max(light), Min(temperature), Avg(timestamp) } // この中間ストリームは functor 演算子が生成
stream SenFunctor ( id: Integer, location: Double, message: String ) := Functor( SenAggregator ) [ log(temperature,2.0)>6.0 ]
{ id, location, “Node ”+toString(id)+ “ at location ”+toString(location) } // リザルト管理は sink 演算子が実施 – この場合生成されたタプル群はソケット宛てに送られる Null := Sink( SenFunctor ) [ “udp://192.168.0.144:5500/” ] {}
Source Aggregate Functor Sink
© International Business Machines Corporation 2008 17
1 7
X86 Box
X86 ブ レード
Cell ブレード X86 ブ
レード FPGA
ブレード x86
ブレード
x86 ブレード
x86 ブレード x86
ブレード x86
ブレード
Streams Streams Streams
Streams ランタイムランタイムランタイムランタイム
トランスポート
処理要素 コンテナ
処理要素 コンテナ
処理要素 コンテナ
処理要素 コンテナ
処理要素 コンテナ
最適化スケジューラーは演算子を処理ノード へ割り付け、資源配分を継続的に行う
最適化スケジューラーは演算子を処理ノード へ割り付け、資源配分を継続的に行う
市販ハードウェアで稼働 – 単一ノードから BladeCenter から高パフォーマンス・マル チラック・クラスターまで
市販ハードウェアで稼働 – 単一ノードから BladeCenter から高パフォーマンス・マル チラック・クラスターまで
Streams データ・ファブリック
© International Business Machines Corporation 2008
1 8
X86 Box
X86 ブ レード
Cell ブレード Blue
Gene FPGA
ブレード x86
ブレード
x86 ブレード
x86 ブレード x86
ブレード x86
ブレード トランスポート
Streams Streams Streams
Streams ランタイムランタイムランタイムランタイム
処理要素 コンテナ
処理要素 コンテナ
処理要素 コンテナ
処理要素 コンテナ
処理要素 コンテナ
最適化スケジューラーは演算子を処理ノード へ割り付け、資源配分を継続的に行う
最適化スケジューラーは演算子を処理ノード へ割り付け、資源配分を継続的に行う
資源、ワークロード、データ量の 変動に適応
資源、ワークロード、データ量の 変動に適応
特殊ハードウェアの活用も可能 特殊ハードウェアの活用も可能 市販ハードウェアで稼働 – 単一ノードから BladeCenterから高パフォーマンス・マル チラック・クラスターまで
市販ハードウェアで稼働 – 単一ノードから BladeCenterから高パフォーマンス・マル チラック・クラスターまで
Streams データ・ファブリック
© International Business Machines Corporation 2008 19
C 拠点 B 拠点
A 拠点
分散 分散分散
分散オペレーションオペレーションオペレーションオペレーション
C 拠点 B 拠点
A 拠点
© International Business Machines Corporation 2008
Streamsight Streamsight Streamsight
Streamsight によるによるによるによる稼動中稼動中稼動中アプリケーション稼動中アプリケーションアプリケーションアプリケーションのののの管理管理管理管理
アプリケーション群の論理ビューおよび物理ビュー
© International Business Machines Corporation 2008 21
並列 並列並列
並列モデルモデルモデルとしてのモデルとしてのとしてのとしてのストリームストリームストリームストリーム・・プロセッシング・・プロセッシングプロセッシングプロセッシングのののの優位性優位性優位性優位性
ファーストクラスとしてのStreams
– 明示的なタスクおよびデータの並列性 – マルチコア活用の直感的手法
より効率的なリソース管理手段としての演 算子およびデータソースのプロファイリング
ストアされたデータおよびライブ・データを通 じた演算子の再利用
自動化、最適化された構築手順 (SPADE, INQ)
ソース アダプター
Sink アダプター 演算子リポジトリ
自動化、最適化された
デプロイおよび管理(スケジューラー)
© International Business Machines Corporation 2008
INQ
DGM SODA
SPADE からからからランタイムからランタイムランタイムでランタイムででで実行実行されるまでの実行実行されるまでのされるまでのされるまでの流流流流れれれれ
JDL (Job Description Language)
PE bin PE bin PE bin PE bin PE
bin SPADE
JMN (Job Manager) SPADE Compiler & Optimizer Simulink
StreamSQL
System S IDE
SPC (Stream Processing Core)
言語 言語 言語 言語のののの コンバーター コンバーター コンバーター コンバーター
SPADE プログラムから、System Sへ のジョブサブミッションファイル、設定ファ イル、シェルスクリプト、デバッグ用ファイ ルなどが生成されます
© International Business Machines Corporation 2008 23
StreamStudio ののののプログラミングプログラミングプログラミングプログラミング環境環境環境環境
シンタックスハイライト シンタックスハイライト シンタックスハイライト シンタックスハイライト
関数関数
関数関数のののの補完補完補完補完
グラフ グラフグラフ
グラフをををを視覚的視覚的視覚的視覚的ににに表示に表示表示表示
© International Business Machines Corporation 2008
ストリームアプリケーション ストリームアプリケーションストリームアプリケーション
ストリームアプリケーション用用用用デバッガデバッガデバッガデバッガ:::: Stream Debugger
オペレータ オペレータオペレータ
オペレータののの実行前の実行前実行前実行前でででブレークポイントでブレークポイントブレークポイントブレークポイント 入力入力入力
入力タプルタプルタプル、タプル、、出力、出力出力タプル出力タプルタプルタプルのの検査のの検査検査・検査・・修正・修正修正修正などなどなどなど
© International Business Machines Corporation 2008 25
早期アクセス・プログラム (Early Access Program) 3大陸10拠点にて実施
2009年第二四半期に20~30拠 点にて追加実施予定
InfoSphere Streams として2009年第二四半期に Early Access Program を発表
主な予定日
2009年第二四半期: – 限定的なリリース 2010年前半:
– 製品出荷
劇的な ボリューム
劇的な 分析 劇的な
スピード
2009/10/23
© International Business Machines Corporation 2008
実証実験
実証実験
実証実験
実証実験のご のご のご紹介 のご 紹介 紹介 紹介
© International Business Machines Corporation 2008 27
Streams を活用した実証実験の事例
アルゴリズムトレーディング アルゴリズムトレーディングアルゴリズムトレーディング アルゴリズムトレーディング
公共公共公共
公共:::: 広域環境広域環境広域環境広域環境モニタリングモニタリングモニタリングモニタリング
製造業 製造業製造業 製造業
電波天文学 電波天文学 電波天文学 電波天文学
半導体製造工程におけるリアルタイム異常検知 によるテストプロセスの品質向上
リアルタイムの市場データを用いた金融 取引への活用
• 河川、河口の水質管理
• 数千の低コストのアンテナを用いた電波宇宙天文学 の研究
• セキュリティセキュリティセキュリティセキュリティ分野分野分野: サイバーセキュリティ、災害復旧分野
World’s largest and first fully digital radio
observatory for astrophysics, space and earth sciences, and radio research
毎秒5百万イベント マイクロ秒のレイテンシ
毎秒2500イベント 10ミリ秒のレイテンシ
毎秒150万イベント
Semiconductor Solutions
© International Business Machines Corporation 2008
金融:次世代アルゴリズムトレーディング
超低レイテンシ、高データレート、 データ形式の多様化などストリーム コンピューティングの条件をすべて 満たすフラグシップアプリケーション 毎秒 160万イベントを処理
ミリ秒単位でトレードチャンスを検知 し、実行
2010 年までには、160万イベントか ら 500万イベントに増加
マーケットデータの他に、企業の フィード、ニュース、音声、ビデオな どを用いた複合的な判断を可能に
次世代次世代
次世代次世代のののアルゴリズムトレーディングのアルゴリズムトレーディングアルゴリズムトレーディングのアルゴリズムトレーディングののの 基盤
基盤 基盤
基盤をををを Streams 上上上に上にに構築に構築構築構築
© International Business Machines Corporation 2008 29
マイクロチップ製造の製造監視・制御への応用
チャレンジ チャレンジ チャレンジ チャレンジ
半導体の製造工程の品質を管理する 自動製造監視・制御への応用
リアルタイムのデータ統計分析が必要 100以上の製造工程からなり、それぞ れの工程で相関のあるステップを複数 束ねた分析が必要
画像データなどを含めた非構造化 データなど、様々な情報ソースから データが到着する
• 100以上のセンサー
• リアルタイムのプロセス及びセンサーデータの分析
• 画像など、より非構造化データ分析の潜在的なニーズが ある
Confidence
ITL JSQ
Test Data JPQWQA YPV
Prediction Repository FDC Summary Data
TSA
OTP
RAN
Yield Prediction Monitoring and Feedback
RUI
Confidence and Confusion Matrix User Defined Decision Tree PEs SOC
Link to external Very Fast Machine Learning (VFML) library (C) User Defined Decision Tree PEs Link to external Very Fast Machine Learning (VFML) library (C)
Incremental Learning through Delayed Feedback of Ground Truth
Online prediction using incrementally learnt model
. . . Event
Sensor Defect Tool log
Alarm
Trace data
技術的 技術的 技術的
技術的なななチャレンジなチャレンジチャレンジチャレンジ
ソリューション ソリューション ソリューション ソリューション
© International Business Machines Corporation 2008
次世代 次世代次世代
次世代のののの河川河川河川・河川・・・水質管理水質管理:水質管理水質管理:: Beacon Institute と: ととと IBM とのとのとの協業との協業協業協業
Beacon Institute とのとのとのとの協業協業協業協業によりによりにより、により、、、 ニューヨーク
ニューヨーク ニューヨーク
ニューヨークののハドソンののハドソンハドソンハドソン河河河河のの生態系のの生態系生態系を生態系をををモモモモ ニタリング
ニタリング ニタリング
ニタリングしししし、、、、常時常時常時常時そのその状況そのその状況状況状況をををを分析分析分析・分析・・・ 評価
評価 評価
評価できるこれまでにないできるこれまでにないできるこれまでにないシステムできるこれまでにないシステムシステムシステムをををを 開発
開発 開発 開発
315マイルマイルマイルマイル(507km)にわたるにわたるにわたるにわたる全域全域全域全域のののの データデータ
データデータをををを収集収集収集収集
Streams をををを用用用いて用いていていて、、センサー、、センサーセンサーからセンサーからからからデーデーデーデー タ
タ タ
タををを集を集集め集めめめ、、水、、水水水のののの温度温度、温度温度、、塩分、塩分塩分、塩分、濁、、濁濁濁りりりり具具具具 合
合 合
合などをなどをなどをなどを調査調査調査調査 さらに
さらに さらに
さらに、、、、ハドソンハドソンハドソンハドソン河河河に河にに棲息に棲息する棲息棲息するする種する種種種々々々の々ののの 魚類
魚類 魚類
魚類そのそのその他その他他他のののの生物生物の生物生物のの状況の状況状況も状況ももも調査調査調査調査
© International Business Machines Corporation 2008 31
サイバーセキュリティ
様々なセンサー(ビデオ、電話通話記録、音声)を複合的に利用した監視システム 受信するデータストリームは巨大だが、“異常値”を示すデータはほとんどないというのが 特徴的 - 前処理で処理することに大いに意味がある
ボットネット ボットネットボットネット
ボットネット検出検出検出検出 監視監視監視
監視システムシステムシステムシステム
© International Business Machines Corporation 2008
ヘルスケア ヘルスケアヘルスケア
ヘルスケア分野分野分野:分野::: 患者患者患者患者のののリアルタイムモニタリングのリアルタイムモニタリングリアルタイムモニタリングリアルタイムモニタリング
Contextual Data Sources Biometric Sensor Data
+
狭心症 狭心症狭心症 狭心症 アラートアラートアラート アラート
アラートアラートアラート アラート alert
alert
SPE
QRS
FA
RR
SP
BP
PS
AR
AP PT
SPA
BPA
alert
PSA EP
GL GLA
アラート アラート アラート アラート
WT WTA WB
不整脈不整脈不整脈 不整脈
Well-Being
ユーザーインタフェース ユーザーインタフェース ユーザーインタフェース ユーザーインタフェース
遠隔の患者のモニタリング
医学的に重要なイベントの自動検知し、医者や看護婦に配信 Provenance (問題の出所を追跡) のサポート
アラートが出たときのイベントをトラックできる
医者が下した医療処置の(定量的な)証明が可能になる 監視する患者の数の増加に応じたスケールアウトが可能に
IBM とととと NPO 法人法人法人 Sick 法人 Kids とのとのとの協業との協業協業協業
2009/10/23
© International Business Machines Corporation 2008
SPADE:
ストリームアプリケーション
ストリームアプリケーション
ストリームアプリケーション
ストリームアプリケーション開発言語 開発言語 開発言語 開発言語
© International Business Machines Corporation 2008
SPADE : ストリームアプリケーションストリームアプリケーションストリームアプリケーション記述言語ストリームアプリケーション記述言語記述言語記述言語
ストリームアプリケーションを記述するために特化した言語
多様な情報ソースのアダプタ、ウィンドウ定義、並列機構、耐故障性な どを抽象度の高い言語で記述
オペレーター(ストリームデータの処理ロジック)を一つの単位とする オペレータの入出力データをタプルと呼ぶ
複数のオペレータのデータフローを定義
[Program]
vstream MySchema(symbol : String, tradedate : String, closingprice : Double, volume : Integer)
vstream aggregatedData(symbol: String, avgPrice : Double)))) stream myODBCstream(schemaFor(MySchema))
:= Source()[““““stcp://sensorserver.ibm.com:12345””””, csvFormat, noDelays] stream StockMovingAverage (schemaFor(aggregatedData))
:= Aggregate(myODBCstream <count(20), count(1), pergroup>) [symbol]
{Any(symbol),Avg(closingprice)}
Nil := DbAppend(StockMovingAverage)[connection:"DB2Person"; access:"StockSink"]{}
© International Business Machines Corporation 2008 35
オペレータ オペレータオペレータ
オペレータととととストリームストリームストリームからストリームから構成からから構成構成構成されるされるされるされるデータフローネットワークデータフローネットワークデータフローネットワークデータフローネットワーク
Source 1
Sink 2
Functor 2 Aggregator
Functor 1
Sink 3 Functor 4 Functor 5
Sink 1 Functor 3
input file, socket,
...
output file, socket,
... output file,
socket, ... output file,
socket, ... Split
Join
シンク ソース オペレータ
ソース
オペレータ オペレータ
stream
stream strea
m
strea m
stre a
m
stre m a
シンク Source
入力入力 入力入力ポーポーポーポー
トト
トト 出力出力出力出力ポートトトトポーポーポー
© International Business Machines Corporation 2008
簡単 簡単簡単
簡単なななな例例例例
[Application] SourceSinktrace [Typedefs]
typespacesourcesink typedef id_t Integer
typedef timestamp_t Long [Program]
// virtual schema declaration
vstreamSensor (id : id_t, location : Double, light : Float, temperature : Float, timestamp : timestamp_t) // a source stream is generated by a Source operator – in this case tuples come from an input file
stream SenSource( schemaof(Sensor) ) := Source( ) [ “file:///SenSource.dat” ] {}
// this intermediate stream is produced by an Aggregate operator, using the SenSource stream as input stream SenAggregator( schemaof(Sensor) )
:= Aggregate( SenSource<count(100),count(1)>) [ id . location ]
{ Any(id), Any(location), Max(light), Min(temperature), Avg(timestamp) } // this intermediate stream is produced by a functor operator
stream SenFunctor( id: Integer, location: Double, message:String ) := Functor( SenAggregator) [ log(temperature,2.0)>6.0 ]
{ id, location, “Node ”+toString(id)+ “ at location ”+toString(location) }
// result management is done by a sink operator – in this case produced tuples are sent to a socket Null := Sink( SenFunctor ) [ “udp://192.168.0.144:5500/” ] {}
Source Aggregate Functor Sink
© International Business Machines Corporation 2008 37
オペレータ オペレータオペレータ
オペレータ・・・・ストリームストリームストリームストリームのの定義のの定義定義定義ののの仕方の仕方仕方仕方
stream myStream (Integer A, Integer B)
:= Functor (inputStream) [light >100.0 ] {sensorID, light} オペレータ
オペレータ オペレータ
オペレータ名名名名 オペレータオペレータ条件オペレータオペレータ条件条件条件 出力出力タプル出力出力タプルタプルタプル 出力出力
出力出力タプルタプルタプルタプルののののスキーマスキーマスキーマスキーマ
入力入力
入力入力ストリームストリームストリームストリーム ストリーム
ストリーム ストリーム
ストリームのののの定義定義定義定義
オペレータ
オペレータ オペレータ
オペレータ
オペレータパラメータ オペレータパラメータ オペレータパラメータ オペレータパラメータ 入力
入力入力
入力ストリームストリームストリームストリーム (スキーマスキーマスキーマ定義スキーマ定義定義定義))))
出力出力
出力出力ストリームストリームストリームストリーム (スキーマスキーマスキーマスキーマ定義定義定義)定義)))
© International Business Machines Corporation 2008
SPADE のののの特徴特徴特徴特徴: 外部外部外部の外部のの情報の情報情報情報ソースソースとのソースソースとのとの接続との接続接続接続をを実現をを実現実現実現するするするする ソーソーソーソー スオペレータ
スオペレータスオペレータ
スオペレータ、、、、シンクオペレータシンクオペレータシンクオペレータシンクオペレータ
ネットワークソケット: TCP / UDP (クライアントモード、サーバーモード) ファイル、データベース、WFO (WebSphere Front Office) など
様々な形式のサポート: CVS フォーマット、バイナリフォーマット(パーサーの指定)
input adapter (non-SPADE
program)
source operator
output adapter (non-SPADE
program) sink
operator
SPADE Program
TCP socket TCP socket
stream myStream(schemaFor(MySchema))
:= Source()[“““stcp://sensorserver.ibm.com:12345”“ ””, csvFormat, noDelays]”