ストリームデータ処理技術とは?
ストリームデータ処理とはどのようなテクノロジーなのでしょうか? あらためて、その概要について教えてください。
近年、テクノロジーの発達に伴って、社会全体のデータ量が著しく増加していることが様々な調査によって明らかになっています。増え続けるデータの中でも大きな割合を占めると見られているのが、センサーやRFIDが生み出す新しいタイプのデータです。
新しいタイプのデータ・・・ですか?
はい。これまで情報システムが管理してきたデータの多くは、顧客プロファイルや販売履歴など、それぞれが固有の重要な情報でしたから、データベースなどを使って一つひとつのデータを保管する意味がありました。
しかし、センサーなどが生み出すデータは必ずしも保管を必要とする類のものではありません。例えば、何らかの異変を察知する目的でセンサーを利用するのであれば、値が正常であることさえ確認できれば、その後は捨ててしまっても構わない。
なるほど。何も起こらなかったというデータをいつまでもとっておく必要はありませんよね。判断した時点でデータはその必要性を失うということですね。
むしろ、センサーが生み出す情報を逐一、データベースに保管して、日次バッチで処理しているようでは、情報の鮮度が下がって宝の持ち腐れになってしまいますし、ストレージがいくらあっても足りません。
そこで、データをストックとして捉える従来のアプローチに代わり、それらをフローのままでリアルタイムに処理、意志決定する基盤として注目を集めているのがストリームデータ処理と呼ばれる技術です。文脈によって「CEP(Complex Event Processing:複合イベント処理)」という用語で呼ばれることもありますが、今回はストリームデータ処理で統一します。
ところでストリームデータ処理って具体的にどのようなことをしてくれるものなのでしょうか?
そうですね。では、まず簡単にその仕組みについてご紹介しておくことにしましょう。といっても、ストリームデータ処理の仕組みは非常にシンプルです。さまざまな発生源からデータがインプットされる度に、処理を担当するコンポーネント「ストリーム処理エンジン」は、あらかじめ設定された「分析シナリオ」というアルゴリズムに従ってデータを処理します。
分析シナリオ・・・。
例えば、「『3回続けて値が上昇している』『現在の値がしきい値を超えている』という二つの条件を満たした場合にアラートをあげなさい」といった指令を記述しておくと、入力がある度に、エンジンは処理を繰り返し、データが条件を満たした場合にアラート通知を行ってくれるという訳です。
なるほど。CEP(複合イベント処理)という名称はここに由来するわけですね。株価が例として使われていますが、どのように取り込むのでしょうか?
発生源からデータを取得するためのプログラムを作成することになります。この場合は、通信社や証券市場から送られるフィードや、WebサービスのAPIなどが考えられますね。これらの発生源からデータを取得し、所定の形式に変換した上で、エンジンに渡します。
プログラムで取得できるものならどんなものでも対象になり得ますから、インプットするデータはどんなものでも構いません。データベースのレコードはもちろん、他システムから送信されたフィード情報や携帯電話の位置情報、ICカードの利用履歴やサーバーの稼働情報なども対象にできます。プログラム作成の手間を省くために、製品によっては専用のアダプターを用意している場合もあります。
分析した結果のアウトプットはいかがでしょう?
基本的に出力プログラムを介して行いますから、アウトプットについても制約はありません。ログファイルへの出力、統合運用管理ツールへのイベント通知、ダッシュボードへの表示、SOA基盤を介した他システムへの処理命令なども指定可能です。やはり、プログラミングの手間を省くために、処理結果を代表的なデータ形式に変換するアダプターを用意している製品もあります。
いくつか技術的な特徴があると聞いたのですが?
そうですね。ストリームデータ処理をより理解していただくために、いくつか特徴的なポイントを紹介しましょう。