BigQuery vs. Redshift どっち?

セルフサービスなDWH。

データウェアハウス(Data Warehouse:DWH)は、直訳すれば「データの倉庫」で、データベース(Database:DB)の一種ですが、過去すべての時系列データを要約せずにそのまま保持し続ける、文字通り倉庫のような役割から、区別してそう呼ばれています。

また、DWHはデータを活用した意思決定に利用されることから、ビジネスインテリジェンス(Business Intelligence:BI)のひとつに位置付けられます。BIは経営・会計・情報処理などの用語で、企業などの組織のデータを収集・分析・可視化することで、ビジネスの意思決定に役立てる手法や技術のことを言います。

DWHを利用するのは商品開発やマーケティングなどの部門ですが、基幹データを扱うことから、管理するのは情報システム部門であることがほとんどです。管理部門がDWHのデータ設計と実装を行い、分析可能な状態にして利用部門に提供するのが一般的な役割分担です。一方で、利用部門が分析を進める中で、データ構造を変更したいという要求がうまれるものの、自分たちでそれを実施できないため、分析や意思決定のスピードが上がらないこともよくあります。

そこで、利用部門が管理部門に頼ることなく、自分たちでデータの分析・可視化に必要な環境を構築するセルフサービスBIという考え方が生まれました。その中でも、とりわけDWHに特化したクラウドサービスとして、いま人気を二分しているのが、Google BigQuery(以下、BigQuery)とAmazon Redshift(以下、Redshift)です。

ツールのBigQuery、基盤のRedshift。

BigQueryとRedshiftはそれぞれクラウドコンピューティングサービスであるGCP(Google Cloud Platform)AWS(Amazon Web Services)の一部であり、フルマネージドなDWHです。GCPとAWSはよく比較されますが、サービスラインナップ1)GCP・AWSサービス比較表としては同質化が進んでおり、いま現在はほぼ横並びといえます。

ただ、AWSがECサイトのAmazon.comのインフラのシェアリングを、GCPがGoogleの各種アプリケーションのエンジンのシェアリングをそれぞれルーツとしているため、それが特徴の違いを生んでいます。

サービス拡張の経緯にもそれは現れていて、IaaSについてはAWSは当初からAmazon EC2(Elastic Compute Cloud)として提供していましたが、GCPのGCE(Google Compute Engine)はかなり後発です。一方で、PaaSについてはGCPのGAE(Google App Engine)が先行しています。

また、導入されるケースの違いにも特徴があり、レガシーなインフラの置き換えには、インフラの導入実績が豊富なAWSが、ビッグデータ基盤の構築には、深層学習(Deep Learning)などの先進的なアプリケーションが充実したGCPが、それぞれ選ばれる傾向にあるように思います。

この特徴の違いがBigQueryとRedshiftにも引き継がれていて、GCPの一部であるBigQueryはアドホック分析のための分析ツール、AWSの一部であるRedshiftは既存のDWHを置き換えてセルフサービス化する分析基盤の性格が強いといえます。

用途に合わせた選択を。

BigQueryとRedshiftを、諸元レベルで比較してみます。

  BigQuery Redshift
SQL 標準SQL 標準SQL
データ格納方式 列指向 列指向
インデックス なし あり
※インターリーブインデックス
パーティション あり
※日付分割テーブル
なし
マルチバイト文字対応(テーブル名・カラム名) なし あり
クエリ実行環境 ブラウザUI コマンドライン
※GUIツールは別途必要
直接連携可能なストレージ GCS(Gooble Cloud Storage), Google Drive Amazon S3(Simple Storage Service)
入力データフォーマット Avro, JSON, CSV, Parquet, ORC CSV/TSV, Avro, JSON
出力データフォーマット Avro, JSON, CSV CSV/TSV
基本的な課金体系 クエリ課金
※定額プランあり
時間課金
※クエリ課金プランあり
時間課金の料金 0.314USD〜/H
※東京リージョン
クエリ課金の料金 8.55USD/TB
※東京リージョン
5USD/TB
※Amazon Redshift Spectrum

BigQueryの特徴をRedshiftとの比較で整理してみます。

  • Redshiftと同じく、標準SQLに対応。
  • Redshiftと同じく、大量データの集計に優れた列指向の格納方式を採用。
  • テーブル名・カラム名のマルチバイト文字は非対応
  • ブラウザUIのクエリ実行環境を装備。
  • 課金体系は、時間課金ではなくクエリ課金。(データスキャン量による従量課金)

BigQueryとRedshiftの共通点としては、標準SQLに対応した列指向DBであるということ。これにより、一般的なRDBと同様のSQLで、大量データの集計に優れた列指向DBとしてデータの操作が可能です。

BigQueryの特長は、ブラウザUIでクエリ実行が可能なのと、時間課金ではなくクエリ課金(クエリ時のデータスキャン量による従量課金)であるため、手軽にアドホック分析を行う分析ツールとして採用しやすいという点です。

一方で、時間課金ではないためにコストを見積もりづらいのと、テーブル名・カラム名のマルチバイト文字は非対応という欠点があるため、既存のDWHの置き換えには不向きであり、その場合はRedshiftのほうが採用しやすいでしょう。

ちなみにAWSには、ブラウザGUIのクエリ実行環境を備え、クエリ課金であるAmazon Athenaという、BigQueryと似たサービスもあるので、AWSユーザーは用途に合わせて選択することが可能です。ただしSQL互換エンジンのPrestoを採用しており、関数の体系が異なるため注意が必要です。

このようにBigQueryとRedshiftは、同じセルフサービスDWHでも特徴がかなり異なるので、用途に合わせて選んでもらえればよいと思います。

脚注   [ + ]