機能と技術からわかる!システム基盤の実力

第4回 とぎれなく流れ来る大量データを処理する「ストリームデータ処理技術」①ストリームデータ処理とは?

この記事を読むのに必要な時間:およそ 2 分

近年,電子マネーや電子商取引が普及し,RFID利用による物流管理など,ビジネスで扱うデータの量が爆発的に増加しています。またビジネスのスピードも急激に加速しており,次々に流れてくる大量のデータをリアルタイムに処理することが求められています。

しかし,こうしたリアルタイム処理に従来からあるデータベースを使用すると,クエリなどを用いて蓄積されたデータを一括処理するため,データ検索などのクエリ実行時にタイムラグが生じてしまいます。そこで,現在注目されているのが,ストリームデータ処理技術です。

ストリームデータ処理技術とは,無限に到来する時刻順のデータ(ストリームデータ)をリアルタイムに処理するデータ処理方法です。たとえば,株価のテクニカル指標やランキング情報から売買をリアルタイムに自動判定する,といったシステムに有効です。ほかにも,リアルタイムの在庫管理や,不正操作の監視を行うシステムなどの利用が考えられます。ストリームデータ処理技術を利用することで,⁠今」の状況や状況の変化をリアルタイムに監視できるようになり,そこから新しいビジネスを展開することも期待できます。

今回は,このストリームデータ処理技術の概要を紹介します。ストリームデータ処理を実現する具体例として,日立のストリームデータ処理の汎用基盤である「uCosminexus Stream Data Platform」を取り上げます。⁠uCosminexus Stream Data Platform」のような汎用的な基盤を利用することで,さまざまな分野にストリームデータ処理技術を適用することができます。

ストリームデータ処理技術とは?

「ストリーム」とは,株価情報や交通情報のように,際限なく到来する時刻順の大量データを指します。ストリームデータ処理技術は,このストリームデータを扱う技術です。データベースを使用した「ストック型」のデータ処理技術とは違う新しい技術といえます。

まず,データベースを使用した一括処理の流れと,ストリームデータ処理技術を利用したインメモリ差分計算による高速処理を比較してみましょう。

データベースを使用したデータ処理の流れ

従来のデータベースを使用したデータ処理技術では,SQLのクエリを発行したタイミングでストックしておいた全データを処理し,その後,結果を抽出します(一括処理)⁠

図1 データベースを利用した処理技術

図1 データベースを利用した処理技術

図1の場合,idごとの合計値を求めるクエリが発行されると,データベース内にあるa,およびbの値がすべて抽出され,id別に加算されます。このような検索・演算は,クエリを発行するたびに実行されます。そのため,データベース内のデータの量が増加するにつれて,処理スピードが相対的に低下します。

ストリームデータ処理の流れ

ストリームデータ処理技術の場合,入力ストリームとしてデータが入力されると,その場でデータ処理を行います。また,前回処理した結果を中間データとして保持しておくため,中間データとの差分だけを処理します(差分処理)⁠

図2 ストリームデータ処理技術

図2 ストリームデータ処理技術

図2の場合,中間データとして「a=9」⁠b=6」が保持されています。ここに,入力ストリームとして「a=6」が到着すると,中間データ「a=9」に,入力ストリーム「a=6」が加算され,結果ストリームとして「a=15」が出力されます。

ストリームデータ処理では差分処理が行われるため,処理対象となるデータをすべて処理する必要はありません。大量データのリアルタイム処理に適したデータ処理技術といえます。またストリームデータ処理技術では,直前に処理した結果をメモリ上で保持する「インメモリデータ技術」を採用しています。これにより,ハードディスクなどの外部記憶装置にアクセスする時間を削り,高速な処理を実現します。

ストリームデータ処理の仕組み

ストリームデータ処理の仕組みについてもう少し詳しく見てみましょう。

ストリームデータ処理の定義

「uCosminexus Stream Data Platform」では,ストリームデータの処理内容(シナリオ)を,あらかじめCQL(Continuous Query Language)というクエリ言語を使って定義します。CQLはデータベースの標準的な言語であるSQLを拡張した言語です。CQLは汎用的な言語であるため,さまざまな業種に対応できます。またSQLの知識があれば,CQLを使って容易にプログラミングができます。

CQLで処理を定義するため,集計・分析処理用の専用アプリケーションを開発する必要はありません。そのため、ニーズの変化に応じて処理内容を変更したい場合にも速やかに対応することが可能です。

コメント

コメントの記入