エンタープライズ・データウェアハウスの課題
ビッグデータ活用の課題はそのデータ規模の巨大さもあるが、分析したいデータをアプリケーションごとに持っていることだと言うのは、米国Cloudera社のファウンダーでありCTOを勤めているDr. Amr Awadalla氏だ。アプリケーションごとにデータを持っているので、サイロ化した分散ビューでしかデータを見ることができない。「統合化されたビューがない。これはすべての企業にとって深刻な問題です」とAwadalla氏。
統合化されたビューを実現するために、大規模なエンタープライズ・データウェアハウスを構築する方法がある。これを導入すれば確かに統合化されたビューは完成する。しかし、エンタープライズ・データウェアハウスには課題もある。最初の課題は、エンタープライズ・データウェアハウスに各アプリケーションからデータをバッチ処理などで集めなければならないことだ。リレーショナルデータベースにデータを集める処理は、手間と時間がかかる。ETLの仕組みなどでデータを収集するが、そのバッチ処理にはコンピュータリソースもかなりたくさん必要になる。
また、コストの問題もある。すべてのデータを集めることになるので、大規模でハイエンドなサーバーが必要だ。ハードウェアコストも高額となり、さらにその上で動かすデータベースなどのソフトウェアライセンス費用も高くなる。また十分な処理性能を得るには、大容量の高性能ストレージが必要だ。これもまたエンタープライズ・データウェアハウスのコスト増大につながる。
仮にコスト問題を解決できたとしても、柔軟性への対応という問題もある。基幹系システムなど形式が固定化したデータだけを取り込むのであればリレーショナルデータベースで何ら問題はない。ところがビッグデータ分析で企業に蓄積されている非構造化データを活用したい、さらにはソーシャルネットワークなどの外部データを取り込みたい。そうなるとデータ構造をあらかじめきっちりと定義しなければならないリレーショナルデータベースでは、柔軟かつ迅速には対処できない。
ビッグデータの活用で、リレーショナルよりもHadoopが向いているポイント
「Googleのような企業は、データは1つしか保持していません。保持されている1つのデータベースに、アプリケーションがデータを取りにくる仕組みとなっています。アプリケーションごとに、データをコピーするのではありません。これを実現する仕組みとして、Googleは2つの論文を発表しています。1つがMapReduceでもう1つがGoogle File Systemです」(Awadalla氏)
このMapReduceとGoogle File Systemで実現する大規模な分散処理の仕組みに触発され構築されたのが、Apache Hadoopというわけだ。これは簡単に言えば、データを増やすためにはサーバーを増やせばいいというスケールアウト型の仕組みだ。コモディティサーバーを足すだけでいいので、1テラバイト当たりのコストは数100ドル程度にしかならない。
また旧来の巨大なリレーショナルデータベースサーバーを用意する方法では、新しいデータを入れるために古いデータをアーカイブに入れることが多い。「アーカイブされたデータは”死んだデータ”と同じ。アーカイブからデータを取り出すのは困難。しかしアーカイブの中にこそ導き出せない知見があり、取り出せないのは大変な損失。」とAwadalla氏は言う。
対してリレーショナルデータベースと異なり、あらゆるフォーマットのデータをスキーマにかかわらず格納できる柔軟性がHadoopにはある。リレーショナルの場合は、スキーマが先に決められる。これに合わないデータは格納できない。つまりテーブルに列を追加したくてもスキーマを変更しなければならない。スキーマーを変えれば、ETLやBIの設定も変更しなければならなくなる。これでは簡単に変更できないのだ。
「1つの列を追加することに、どれくらいの価値あるのでしょう。IT部門は手間がかかるので、その価値が分からないとデータベースにはなかなか手を付けられません。しかしスキーマを変更してみないと、ユーザーにはデータを増やすことの価値は分からない。これでは、デッドロックに陥ってしまいます」(Awadalla氏)
これがHadoopであれば、データの追加や変更も容易に行えるとAwadalla氏は言う。さらに、エンタープライズ・データウェアハウスではネットワークのボトルネックも発生してしまう。これは通常、サーバーとストレージが別々の構成になるから。ストレージとの間のネットワークがボトルネックになるのだ。Hadoopの場合はデータのすぐ横にサーバーがありそこで演算ができる。なのでこのネットワークのボトルネックはない。これは大規模なバッチ処理などにおいて、大きな優位性になる。