https://www.vldb.org/pvldb/vol13/p3461-melnik.pdfBigTable と BigQuery の間には、3 つの重要な違いがあります。

  1. BigTable は、OLTP (オンライン トランザクション処理) システムです。一方、BigQuery は Business-intelligence/OLAP (Online Analytical Processing) システムです。
  2. BigTable は NoSQL システムの特性があるのに対し、BigQuery はややハイブリッドで、SQLダイアレクトを使用し、カラムベースのデータ処理技術である「Dremel」をベースにしています。
  3. BigTable はテーブルの変更が可能で高速なキーベースのルックアップが可能なのに対し、BigQuery は変更不可(Appendのみ)で低速なキーベースのルックアップが可能です。

ビッグデータは毎年膨大な情報量を蓄積しており、世界のデータ圏は指数関数的に増加しています。インターナショナル・データ・コーポレーション(IDC)は、2025年には175ゼタバイト(175兆ギガバイト)に達すると予測しています。 この指数関数的な成長の結果、エンジニアは、拡張性、信頼性、可用性が高く、低コストで、自己回復性が高く、分散化されたクラウドストレージシステムを構築することで対応してきました。一般的に、クラウドストレージには、分散ファイルシステムと分散データベースの2つの主要な分類があります。 

分散ファイルシステムは、複数のファイルサーバーまたは無数の場所に分散されています。これにより、物理的に分散したシステムのユーザーは、共通ファイルシステムを使用してデータやリソースを共有することができます。クライアントは、システムに保存されているデータを自分のマシンにあるかのようにアクセスして処理することができます。 

分散データベースとは、コンピュータネットワーク上に分散された、論理的に関連する複数のデータベースのグループのことです。

Google は、2000 年代初頭に直面した処理需要の増大に対応するためにGoogle File Systemを開発しました。GFSは、基本的にコモディティハードウェアの大規模なクラスタを使用して、効率的で信頼性の高いデータアクセスを提供します。大規模データセットをクラスタ上で並列分散アルゴリズムで処理するための分散コンピューティングと分析モデルについてまとめたMapReduceの論文が2004年に発表されました。大量のフォーマット化されたデータやセミフォーマット化されたデータに関連する課題を軽減するために、MapReduceとGFS上に構築された大規模なデータベースシステムであるBigTableが登場しました 。

BigTableとBigQueryの概要

BigTableは、ペタバイト規模のフルマネージドのNoSQLデータベースサービス「NoSQL Database as a Service」です。これは弱い整合性をサポートし、大量のデータのインデックス作成、クエリ、分析が可能です。低レイテンシーで大量のシングルキーデータを格納するのに最適で、低レイテンシーで読み取り・書き込みについて高いスループットをサポートしており、 MapReduce処理のための完璧なデータソースです。以下は、Bigtableを使用しているGoogle製品の例です - Analytics、Finance、Orkut、Personalized Search、Writely、Earth。

BigQueryは、BigTableとGoogle Cloud Platformを使って構築された「Big Data as a Service」に該当する強力なビジネスインテリジェンス向けツールです。サーバーレスで、フルマネージドです。SQLデータウェアハウスとして、大規模なデータセット(テラバイト/ペタバイトオーダー)に対して、迅速なSQLクエリとインタラクティブな分析を行うことができます。このプラットフォームはカラム型ストレージ・パラダイムを利用しているため、データのスキャンが大幅に高速化され、また、クエリと結果の集約を大幅に管理しやすく効率的なものにするツリー・アーキテクチャ・モデルが採用されています。BigQueryは、Apacheビッグデータエコシステムと統合する機能を提供します。既存のHadoop/SparkおよびBeamワークロードは、BigQueryから直接データを読んだり書いたりすることが可能です。 

BigQuery は、同社のコア技術の 1 つであるコードネーム Dremel (2006) の社外向け実装です。両者は同じ基礎アーキテクチャを共有しています。Dremel は基本的にクエリ実行エンジンであり、計算量の多いクエリを軽減するためにコンピュートノードを独立してスケーリングすることができます。しかし、BigQueryは無数の他のツールも活用しています。Borg、Colossus(Google File Systemの後継)、Capc Capacitor、Jupiterなどです。BigQueryを使ってデータ処理のワークロードをオフロードしたい場合は、Integrate.ioのチュートリアルをチェックしてみてください。 

OLTP vs OLAP

BigQueryOLAP(Online Analytical Processing)システムであり、クエリのレイテンシが遅いため、従来のOLAPレポートやアーカイブジョブなどの負荷の高いクエリに対して最適です。こうしたデザインはOLTP(Online transaction processing)スタイルのクエリは推奨されていません。分かりやすく説明すると、BigTableが同じ操作で9ミリ秒程度かかるのに対し、小さな読み取り書き込みでは1.8秒程度かかります。BigQuery はアトミックな 1 行操作をサポートしていますが、トランザクション処理はサポートしていません。もちろん、BigQueryテーブルの変更不可の特性は、クエリが非常に効率的に並列に実行されることを意味します。無数のノードで並列に操作を実行することで、膨大なデータセットに対してレポーティングやOLAPスタイルのクエリを実行することが可能になります。

Bigtableは、高速なリードバイキー操作と更新操作により、OLTPワークロードに最も適しています。データモデルは、テーブル内に情報を格納し、行にはカラム(Array型またはStruct型)があります。列を行に追加することも可能で、構造は永続データ構造(Persistent Data Structure)に似ています。行には、各レコードに固有の主キーがあり、レコードを素早く読み込んで更新することができます。BigTable はキー範囲のイテレーションを効率的にサポートしているため、レポート/OLAP ワークロードを実行することが可能です。ただし、主にOLAP処理環境でインタラクティブなクエリを実行することが考慮される場合は、BigQuery を使用してください。

NoSQL vs SQL

BigTable は基本的に NoSQL データベースサービスであり、リレーショナルデータベースではなく、SQL や複数行トランザクションをサポートしていないため、幅広いアプリケーションには不向きです。BigTable が適しているのは、最小データサイズが 1 テラバイトの変異可能なデータセットのみで、それ以下のデータセットではオーバーヘッドが大きすぎます。主な特徴は、水平方向にスケールできること(結果として非常に高い読み取り/書き込みスループット)と、キーカラム - つまり、1つのキーの下に複数のカラムが存在し、更新することができることです。個々のデータ要素が10メガバイトを超えるような大容量のデータを保存すると、パフォーマンスが低下します。これよりも包括的な非構造化オブジェクト(ビデオファイルなど)を保存する必要がある場合は、クラウドストレージの方が優れたオプションである可能性が高いです。次のようなシナリオ、時系列データ(複数のサーバーのCPUとメモリの使用量を経時的に把握する)、金融データ(取引履歴、株価、為替レート)、IoTのユースケースに最適です。

BigQueryを使用すると、大規模なデータセットの下で複雑な分析SQLベースのクエリを実行することができます。ただし、スキーマを設計してBigQueryにデータをロードする際には、パフォーマンスの向上を目的としてデータを非正規化することが推奨されているなど、NoSQLテクニックを追加で使用することもできます。クエリで "テーブル・スキャン "が必要な場合や、データベース全体(合計、平均、カウント、グループ化)を検索する必要がある場合には、十分な選択肢となります。しかし、1日あたりのテーブルの更新回数が制限されていたり、リクエストごとのデータサイズが制限されていたりと、多くの制限があります。BigQueryの背後にある動機は、従来のリレーショナル・データベースの代替を意図したものではなく、基本的なCRUD操作やクエリではなく、分析的なクエリの実行に焦点を当てています。

可変 vs 不変

BigQuery内ではデータは不変です。つまり、一度書き込まれたアップロードされたオブジェクトは、一度書き込まれた後はストレージが動いている間、変更することができません。既存のレコードを変更する必要がある場合は、パーティションを書き換える必要があります。そのため、更新には時間とコストがかかります。このシステムでは、イベントソーシングや時系列データのような書き込み一度きりのシナリオに最適です。BigQueryはAppendのみで、これは本質的に効率的です。BigQueryは、保存されるデータ量を制限するために、あらかじめ設定された時間よりも古いパーティションを自動的に削除することができます。

Bigtableはスケーラブルなテーブル内にデータを格納します。各テーブルはソートされたキー/バリューマップで、カラムキー、行キー、タイムスタンプによってインデックス付けされているため、変更可能で高速なキーベースのルックアップが可能です。各行は通常、単一のエンティティを記述し、各行の個々の値を含む列を記述します。行へのデータの読み書きは、その行内でどれだけ多くのカラムが読み書きされたかに関わらず、アトミックに行われます。

Integrate.ioはデータマイニングをどう加速させるか?

あなたがデータ統合について何かしらのボトルネックに悩まされている場合、Integrate.ioの自動ETLプラットフォームは、クラウドベースのビジュアル化されたノーコードのインターフェースを提供し、データの統合と変換を手間のかからないものにしてくれます。Integrate.ioの何百ものすぐに使える統合をここでチェックしてください。 ご質問があれば、Integrate.ioがあなたのユニークなETLの課題をどのように解決できるかを学ぶために、私たちのチームとのオンラインデモを予約してください。