グーグルのBigQuery、大規模処理の「仕組みは秘密です」
先週行われたグーグルのイベント「Google I/O」で発表された、大規模データをSQLライクな命令によって高速に処理してくれる新サービス「BigQuery」。3日前に公開した記事「グーグルによるMapReduceサービス「BigQuery」が登場。SQLライクな命令で大規模データ操作」で、その概要をお伝えしました。
そのBigQueryについて、Google I/Oのセッションに参加されていたスティルハウス 佐藤一憲氏が「BigQueryってなんぞ?」とエントリをブログに書いています。自由にコピペしていいと許可をいただいたので、あらためてBigQueryとはどんなものなのか、ポイントを紹介しましょう。
大規模なデータを処理できるといえば、思い浮かぶのはMapReduceです。佐藤氏はBigQueryとMapReduceの違いをこう書いています。
MapReduceとはどう違う?
大規模なデータセットに対して多数のサーバで並列処理するという点ではMapReduceに似ていますが、処理結果がすぐに得られる点、そしてSQLっぽいクエリ言語で表現できる集計処理しか実行できない(mapperやreducerを定義してデータを任意の方法で加工したりできない)点が MRとは異なります。MRよりさらに高水準の分散処理サービスです。
(ですので、以前の記事タイトルで「グーグルによるMapReduceサービス」と書きましたが、MapReduceそのものずばりではなく、MapReduceに似ているサービス、ということになります。)
BigQueryはどのような仕組みでこのような大規模データの処理を実現しているのでしょうか? 内部ではやはりMapReduce処理を用いているのでしょうか? 佐藤氏がBigQueryのMLで聞いてみたところ、次のような返答が帰ってきたそうです。
We don't comment on the backend details of BigQuery. What I can say is that we are running BigQuery on thousands of machines.
BigQueryの内側の詳細についてはコメントしません。言えるとすれば、数千台のマシンの上で稼働しているということです。
というわけで、ここでも内部でMapReduceを使っているのかどうかは明かされませんでした。
ところで、グーグルのこの秘密主義はエンタープライズ向けのサービスとしてはユニークといわざるを得ません。例えば、従来のデータウェアハウス(DWH)やビジネスインテリジェンス(BI)の製品を提供している各ベンダは、その製品がいかに優れているかを説明するために、その仕組みや内部動作についてホワイトペーパーを作成したり、セミナーで説明したり、記者向けに説明会を開いたりしてきました。
従来のベンダにとって、ソフトウェア内部の仕組みの説明というのはマーケティングの大事な一部であり、また実際に利用を開始した顧客が製品について何かトラブルを経験したときには、製品内部で何が起きたかを説明することはサポートに不可欠だといえます。
しかしグーグルはいまのところ内部についてコメントしないという立場を取っています。果たしてこの姿勢のままエンタープライズ市場へ進出していくつもりなのでしょうか、あるいはまだ正式サービスではないためにコメントしないだけなのでしょうか。
NoSQLに進出するSQL
BigQueryはグーグル社内ですでにさまざまな用途で利用されているそうです。
Google社内でも様々に利用している
- インタラクティブツール
- スパム検出
- トレンド解析
- Webダッシュボード
- ネットワーク最適化
- MapReduceもあるが、複雑で時間もかかる(訳注:ad hocなクエリには向かない)
BigQueryにはSQLライクな命令で大規模データの分析が可能なので、Map処理、Reduce処理などのプログラミングが要求されるMapReduceよりも柔軟な分析のニーズに合っているのかもしれません。
ちなみにMapReduceのオープンソース実装であるHadoopにも、BigQueryのようにSQLライクな命令によって処理内容を記述できる「Hive」と呼ばれるプロジェクトが存在しています。
もちろん、BigQueryもHadoopも中身はリレーショナルデータベースではないので、あえてSQLを使う必要はありません。例えばグーグルもMapReduce用にSawzallと呼ばれる分散処理に特化した言語を開発し、利用していることが知られています。
こうしたリレーショナルな世界でないデータに対するデータ操作に対してもSQL(ライクなもの)を使うというのは、標準的なデータ操作言語としてほぼ唯一の存在ともいっていいSQLが、NoSQL的な世界にも徐々に進出していることを示しているといえそうです。