進展するストリームデータ処理

東京証券取引所は、今年の2月28日から、TOPIXなど株価指数について、現行の1 秒ごとの配信サービスに加えて、ミリ秒レベルで構成銘柄の値段を更新し、配信する「指数高速配信サービス」を開始した。相場の変化が指数に反映される時間が、1秒から10ミリ秒と100 分の1に短縮されることとなったという。

10ミリ秒といわれても、なぜそこまで株価指数をすぐに更新しなくてはいけないのか、ピンと来ない方もいらっしゃるかもしれない。これは、近年、特に大口の機関投資家あるいは外国人投資家による株取引は、細かく設定された指数のしきい値のルールによって、瞬時にかつ自動的に取引を実行するアルゴリズム取引が主となっていることによる。この場合、取引の成否は、証券取引所が提供する指数情報のリアルタイム性にかなり依存することになる。こうした投資家側からの性能的に厳しい要望に答えないと、証券取引所は、そっぽを向かれてしまう状況なのである。

しかしながら、どうやって、大量の、絶え間なく生まれる株取引データから、リアルタイムに株価指数を集計・算出できるのだろうか。実はここに、ストリームデータ処理と呼ばれる興味深いトピックが隠されている。本稿ではこの技術についての現況を述べていこう。

日々、生成されるストリームデータ

ストリームデータを手っ取り早く実感するためには、Googleのリアルタイム検索を試してみればよい。TwitterでのツイートやほかSNSデータなど、主にインターネット上の書き込み内容が秒単位で次々と追加され、古い内容が、徐々に下のほうに押しやられていくことが見てとれる。こうした時系列の大量データは、川の流れのようにとらえられて、ストリームデータと呼ばれる。ちなみに、Twitterにおいては、1秒間にいくつのツイートがあったか、という指標としてTPS(tweets-per-second)なる指標がある。最近では、オサマ・ビンラディン容疑者の殺害に関する報道が流れた5月1日22時45分から翌2日0時30分までの平均TPSが、3,440TPSとすさまじい数を記録した。

冒頭に紹介した株取引データや、TwitterなどSNSデータ以外にも、たとえば、自動改札機を通る乗客情報、GPSから得られる位置情報、監視カメラの映像などセンサから継続的に得られる情報や、情報システムに蓄積されるアクセス履歴、大型スーパーの販売データなどがストリームデータに該当する。

ストリームデータの処理は、結果応答のリアルタイム性が求められるゆえ、従来のデータ処理とはデータの取扱い方が異なる。通常の大規模データ処理ではDBMSが用いられるが、DBMSでは、データが到着後、まずディスクに書き込み、索引付けを行ったあとで検索を行うことになるため、リアルタイムに結果を返すことができない。

これに対して、ストリームデータ処理では、データをディスクに書き込まず、まず、メモリ上で、スケッチとよばれるデータの要約情報を計算し、データ自体は捨ててしまう。以後の処理は、このスケッチに対して行うことになる。ただし、ストリームデータは、スケッチを計算したあとも、継続的に追加されるため、計算済のスケッチに対して、差分を計算し、随時更新していく。

ストリームデータの活用方法

ストリームデータの活用については、一般的に、計算したスケッチから、一定期間のデータに対する検索や、統計情報(総和、平均、分散、トップK個など)を取得するほか、パターンマッチングによって故障や不正などの異常を検出したり、データストリームの先行きを予測し、天気や株価の予測などが考えられてきた。ここでは、最近の事例を2つ紹介する。

KoudasらによるTwitterMonitorは、まさに今、Twitter上で交わされているツイートの中で、ホットなトレンドを取り上げ、トピック別に整理して提示する技術である。Twitter APIから常時取得するツイート・ストリームについて、キーワードの頻出確率の急激な傾向の変化(爆発的な増加など)を検知し、同じツイート内で共起する他のキーワード群とあわせてトレンドとして抽出する。トレンドは、随時、その重要性が計測・更新され、他のトレンドの重要性との比較で、表示の優先順位が変わっていく。

NECでは、5万台の車両からの位置・速度データを処理し、渋滞情報をほぼリアルタイムに提供するシステムを試作している。走行車両に搭載されたGPSから得られる位置データと道路をマッチングし、各道路区間の渋滞状況をストリーム処理にて算出し、計算負荷を軽減するというものだ。通常のDBMSを利用する方法では、道路数および車両台数といった要因が線形に効いてしまう(結果として、計算量はO(n2))のに対して、ストリーム処理では、道路数は処理負荷に影響せず(O(1))、車両台数についても線形ファクターながら15%に処理時間を短縮し、渋滞情報をほぼリアルタイムに提供することができるようになったと報告している。

ストリームデータ処理の今後の展望

世界中で生成され流れてくるデータを見て、リアルタイムで意思決定に役立てたいニーズは確実に深まっている。今回の震災でも、Twitter からの実況中継的な警報情報を見て、行動を変えた人も多いだろう。ストリームマイニングにより、こうしたSNS上でやりとりされる情報から異変を検知し、真偽を確認の上、重要情報として役立てることも考えられる。

それには、より大量のストリームデータを対象として、さらなる短時間での高度な意思決定が求められる。それには、例えば、GPGPUなどの半導体を利用したり、クラウドを活用し、超分散並列処理を行うなどハード側の工夫や、ストリームマイニングアルゴリズムといったソフト側にもまだ改良の余地があるだろう。今後の進展に期待したい。