>>前回

 この連載では、ビッグデータの収集から格納までのシステムデザインについて概観してきた。最終回は締めくくりとして、分析技術の課題と今後の方向性を考えてみる。

ビッグデータにおける分析技術の課題

 分析技術の課題を考えるために、前回取り上げたECサイトの消費者行動ログデータの分析を想定してみる。図1は、割引率と売上額の相関だけでなく、購入時に表示されていた口コミ情報がどの程度の影響を与えるかを分析する例を示したものだ。この例では、口コミ評価が高いと、割引率に関係なく売上額が高いことを示している(右グラフの円の大きさは売上額の大きさを示す)。

図1●商品説明画面での表示情報と、購入決定時の割引率と口コミ評価の相関分析
図1●商品説明画面での表示情報と、購入決定時の割引率と口コミ評価の相関分析
[画像のクリックで拡大表示]

 このような分析を行う場合、1回のデータベース検索だけでは結果を出せないため、次のような複数の処理ステップが必要となる。

(1)1画面に含まれる複数の口コミ評価から、価格に関する評価を除外し、総合評価指数を算出する。
(2)会員向け割引を加算するなど割引率を再計算してから5%刻みに丸める。
(3)(1)と(2)の結果を突き合わせ、商品カテゴリーや価格帯などの情報を付加する。
(4)(3)の結果を、(商品カテゴリー・価格帯・割引率・口コミ評価指数)をキーにして販売価格と数量を集計する。
(5)集計結果をクロス分析ツールで表示する。

 従来、こうした複数処理の実装はおよそ次の3つの方法で行われていた。

 一つ目は各ステップのプログラムを開発し、バッチジョブを実行する方法である。メインフレームの時代から現在に至るまで広く使用されている方法である。

 二つ目の方法は、データベースの検索結果を、中間結果として再びデータベースに格納する方法である。中間結果を突合・集計する処理もデータベース内で行う。プログラムを開発する必要がないが、非構造化データの格納に適したXMLデータベースでの実行は難しく、RDBにおいても分析処理ごとにデータベースのチューニングが必要となる場合が多い。

 三つ目の方法は、上記のような分析ロジックが組み込まれた専用ツール(統計解析ツールやBI製品)を使用する方法である。専用ツールでは、すべてのデータをメモリー内の配列に読み込んで処理する。分析要件とツールの機能が対応していれば最も開発負担は小さい。

 しかし、いずれの方法も量的な限界がある。一つ目と二つ目の方法は、最初の処理が完了するまで次の処理に進めないので、データ量の増加に比例し処理時間が長くなってしまう。三つ目の方法は、メモリー量を超える処理はできない。

 そこでビッグデータ処理の技術として注目されているのが、分散処理技術の活用である。