解決策
2000年代半ば、GoogleのアナリストはMapReduceで大規模な計算を実行できたが、各ジョブには数分から数時間かかり、データを対話的に探索するには遅すぎた。エンジニアたちは、ペタバイト級のデータに対するデータベース形式の問い合わせにウェブ検索並みの速度を求めていた。
2006年から本番稼働していたDremelは、2つのアイデアを組み合わせた。ネストされたレコードをエンコードする列ストライプ型ストレージにより、クエリは必要なフィールドだけを読み取る。そして多段のサービスツリーがクエリを数千のノードに展開し、応答を集約する。2010年のVLDB論文は、3,000ノードのクラスタ上で850億レコードのテーブルをスキャンし、ほとんどのクエリが10秒未満で完了したと報告している。
Googleは2010年5月のI/Oカンファレンスでこの技術をBigQueryとして発表し、2011年11月にGUIとREST APIを追加、2012年5月に一般提供を開始した。ハードウェアを購入せずにテラバイト級のデータを分析できると謳っていた。
達成したこと
データを列単位で保存し、数秒で回答する
うまくいった理由
列指向レイアウトは読み取るバイト数を削減する。クエリは必要なフィールドだけに触れる。
ツリー実行は数千台のコモディティマシンに並列化する。
ネイティブなSQLライクなクエリが多段のMapReduceパイプラインを置き換える。
インサイチューアクセスはGFSやBigtableから直接データを読み取り、ロード手順を不要にする。
応用できること
データを書き込まれた方法ではなく、これから行う問い合わせを中心に整理する。必要な列だけを読み取り、処理をツリーの下流に押し出すことで、バッチ処理を要したジョブが会議中に収まるクエリになる。
その後
BigQueryは主要なクラウドデータウェアハウスの一つとなり、数千の企業に利用され、Dremelの列指向フォーマットはApache Parquetなど後続のシステムに影響を与えた。この論文はビッグデータシステム分野で最も引用される研究の一つであり続けている。
出典をたどる
出典
- Dremel: Interactive Analysis of Web-Scale Datasets Proceedings of the VLDB Endowment · comp.nus.edu.sg
- Google opens BigQuery cloud analytics to all ZDNet · zdnet.com ·
- Big Data Analysis Field Expands with Launch of Google BigQuery Database Trends and Applications · dbta.com ·