最近、「ビッグデータ」という言葉をよく耳にする。何を指す言葉なのかを調べようとWeb検索したところ、さまざまな定義が出てきた。どうやら、明確な定義はないようだ。共通しているのは、構造化データだけでなく非構造化データも対象にしていることと、データ量が膨大であること。ある記事によれば、データ容量はペタバイト級になるらしい。

 筆者は新たな言葉が出てきたとき、その言葉のマーケティング要素を取り除き、できるだけ技術そのものを見ようと努める。その視点でビッグデータを見てみる。なお、この記事で取り上げるビッグデータは、膨大な量の構造化データと非構造化データという意味にとどめ、ストレージレイヤーに絞って話を進めたい。

並列DB技術を超えるものとは?

 最初は、「何だ、大容量ということなら、ディスク装置を並べれば済む話じゃないか」と思った。だがよく考えると、最近登場した技術がないと大量データをうまく処理できないことに気付いた。

 構造化データで考えてみる。データ量が膨大ということは、例えば、過去数十年分の取引データを分析するようなことを想定すればいいのだろう。従来ならデータをテープに保管し、満足なデータ分析などできないようなケースだ。おそらく1台のディスク装置では全データを格納できず、何台ものディスク装置を並べることになる。

 RDBMSを使って処理するなら、データ量が膨大だから並列処理が不可欠だ。ディスク装置だけでなくDBサーバーも並べ、データはパーティション技術を用いて分割配置する。シェアードナッシング型のRDBMSを用いれば並列処理できる。

 これがビッグデータの技術の実体なのか? でもこれは昔からある技術だ。

 確かこの技術の弱点は、データ分割の仕方によっては処理が偏り、並列処理が非効率になってしまうことだ。例えば、商品IDをキーにパーティション分割したにもかかわらず、特定商品IDのデータを集計した場合、その商品IDを格納したディスク装置のみに負荷がかかり、効率的な並列処理ができない。

 筆者の理解では、特定パターンの分析を想定してディスク装置にデータを分割配置する必要があり、分析の自由度が低くなってしまう。当時、これは根深い問題だと認識していた。

Hadoopなどによる「I/O負荷の平準化」が有効

 Web検索を続けると、分散処理ソフト「Hadoop」が有効と書いている。そうか。Hadoopの分散ファイルシステムは、データをブロック単位で扱い、一つのブロックを複数のディスク装置に配る。分析処理をする場合、同じブロックが複数のディスク装置にあるので、特定ディスク装置だけに負荷がかかるようなことにはならない。

 少し見えてきた気がする。I/O負荷を平準化するストレージレイヤーの技術が充実し、膨大なデータ処理が可能になったということか。

 そういえば最近は1台のストレージ筐体内に、HDDのほかに高速なSSDを搭載し、I/O頻度の高いデータを自動的にSSDに移すことができる。これもI/O負荷を平準化するストレージ技術の一つといえるだろう。

 次に、非構造化データで考えてみる。要はNASにファイルを格納するケースだ。画像データや動画データがどんどん増えていくことを想定すれば、何台ものNASを並べることになるだろう。

 分散ファイルシステムの技術を用いれば、複数のNASを一つのファイルシステムに見せることはできる。これは以前から可能だった。

 だが、頻繁にアクセスされるファイルは偏るものである。そうしたファイルが特定のNASに集まっていた場合、そのNASの負荷だけが高く、性能もそこで左右される。最近のスケールアウトNASといわれる製品は、I/O負荷を平準化するように自動的にファイルを再配置するという。

 勉強不足でここまでしか整理できなかったが、おぼろげに見えてきたことは、I/O負荷を平準化する機能を持ったスケールアウトストレージ。これがビッグデータといわれているものを支えるストレージ技術の一つということだ。

 ビッグデータで何が可能になるかを考えるとき、こうした技術視点で見てみることも大事だろう。

 10月12~14日に東京ビッグサイトで開催するITpro EXPO 2011展示会では、「ビッグデータ」をテーマにしたパネル討論会や多数のセミナーを開く。10月12日(水)の午後4時からは、「ビッグデータが変えるビジネス、社会」と題したパネル討論会を実施する。展示会内のイベント「EMC FORUM 2011」でも、ビッグデータとストレージに関連した約40のセミナーが開催される。最新の技術情報を効率的に収集できる絶好の機会なので、ぜひご活用いただきたい。