※こちらは2021年4月19日時点で執筆された内容です。実際の最新情報につきましては Google Cloud の公式情報をご確認ください。

こんにちは、クラウドエース編集部です。

Google Cloud のプロダクトの1つでもあり データウェアハウス(DWH)として人気の高い BigQuery について、概要から料金体系、他のクラウドサービスの同様のプロダクトとの比較など入門的な内容を5分で読めるボリュームで解説していきたいと思います。

BigQuery とは? 何ができるの?

BigQuery は Google Cloud にて提供されているプロダクトで、ビッグデータを超高速で解析することができるサービスです。数TB(1テラバイト=1,000GB)、数PB(1ペタバイト=1,024TB)という途方もないデータ量であっても BigQuery を使えば数秒、数十秒で処理することができます。
データベースに対する命令(こんなデータを取り出してくれ的な)のことをクエリと言いますが、BigQuery は何千ものサーバー群で大規模にクエリを分散処理しています。

では、そんな大規模なクエリによるデータ解析がどんな風に利用されるのかをイメージしてみましょう。

ログの解析

ソーシャルゲームやSNSなどユーザーのログ情報(アプリケーションログ、アクセスログ、システムログなど)を全てデータとして保存しようとすると一瞬で膨大なデータが生み出されていきます。開発者はこのログ情報を元にユーザーの動向を分析しサービスを改善していきますが、その数億行にも及ぶ膨大なデータの解析を可能にするのが BigQuery になります。

リアルタイムでの分析

データの保存と解析をリアルタイムで行うことができれば、例えばセンサーの付いた配送トラックのルート最適化やスケジュール管理などができますが、それも実行処理速度が高速な BigQuery を使えば可能になります。

世界中で生み出されるデータの総量は日々乗数的に増加し、それをサービスの価値に転嫁していくテクノロジーの進化も加速度的だと言えますので、その基本的なツールであるデータウェアハウスについて学ぶことは非常に重要だと思います。

BigQuery の仕組みとは

BigQuery の超高速・大規模なクエリ処理は2つの仕組みによって実現されています。

カラム型データストア

通常データベースは行(横)単位読み込みや保存を行うのが一般的ですが、BigQueryは列(縦)単位でこれを実行しています。これによりクエリの対象となる列のデータにしかアクセスしなくて済むのでトラフィックを最小化できます。また、同じ列に含まれるデータは類似性が高いため圧縮率も通常の3倍ほど高くなるという調査結果が出ています。

ツリーアーキテクチャ

クライアントからルートサーバーが受けとったクエリを、実際にクエリを処理するリーフサーバーに対してツリー構造で広げて処理していくことで同時に並列処理を実行することができ、高速クエリを実現しています。

この2つのテクノロジーが BigQuery の高速性に重要な役割を担っており、通常のデータベースと比較して臨機応変にクエリを繰り返し実行するのに優れており、フルスキャン性能が極めて高いと言われています。

そのほか BigQuery の特徴やメリット

専門知識がいらない

BigQuery はサーバーレスで利用でき、通常のデータウェアハウスのデータベースに必要なチューニングが要らないという特徴があります。通常は専門知識を有するデータサイエンティストがデータのテーブルや各種領域に対して最適なシミュレーションを行いチューニングを行わないと正しいパフォーマンスが発揮できませんが、BigQuery は従来のデータベースのクエリでは必須だったインデックスすら必要としなくなったことで、データベースの専門知識がなくても大規模データの分析ができるようになりました。

Google Cloud のシームレスな連携

BigQuery の一つの特徴として、他の Google Cloud のサービスとシームレスに連携できる点があります。BigQuery ML という機械学習のサービスを利用し、クエリ結果を素早く AI と連携させることができたり、データ分析プラットフォームの Looker と BigQuery を組み合わせればデータ統合、変換、分析、可視化、レポーティングを簡単に実行することができます。

コストパフォーマンス

BigQuery はデータウェアハウスの中でも圧倒的なコスト優位性をもつことで知られています。クエリを実行している時だけサービスが起動し検索などの操作を行えますが、料金が発生するのはサービスが起動している間なので、他のサービスと比較してコスト効率が良い課金体系であると言えます。
また分析開始前にデータ量がわかるので事前にコストの目安が分かるのでサービスを安心して利用できます。
※データの保存には別途ストレージ料金が発生しますが、こちらも非常に安価です。

BigQuery の料金について

BigQuery はインスタンスや仮想マシンを用意する必要がなく、必要に応じてコンピューティングリソースを割り当ててくれます。BigQuery の利用料金はこの考え方を元に設計されており、クエリの処理にかかる分析料金と、BigQuery に読み込むデータを保存するストレージ料金によって決まります。

オペレーション 料金(1$=110円で算出) 詳細
ストレージの料金(BigQuery に読み込むデータを保存する費用)
アクティブ ストレージ(*1) $0.023 (約2.53円)/ GB 毎月 10 GB まで無料。
長期保存(*2) $0.016(約1.76円) / GB 毎月 10 GB まで無料。
 - データ抽出の料金
ストリーミング読み取り
(米国リージョン)
$1.10(約121円) / TB 東京リージョンは使用できない
 -データ挿入の料金 
ストリーミング挿入 $0.012(約1.32円) / 200 MB 挿入に成功した行が課金対象になります。
最小サイズ 1 KB で各行が計算されます。
分析料金(クエリの処理にかかる費用)
クエリ(オンデマンド分析) $6.0(約660円)0 / TB 毎月 1 TB まで無料。
クエリ(月定額) $2,400(約26.4万円) / 100 slots/月額 追加のスロットは 100 スロット単位で購入可能。
クエリ(年定額) $2,040 (約22.4万円) / 100 slots/月額 追加のスロットは 100 スロット単位で購入可能。

(*1) 過去 90 日間で変更されたテーブルまたはテーブル パーティションが含まれます。
(*2) 90 日間連続して変更されていないテーブルまたはテーブル パーティションが含まれます。そのテーブルのストレージの料金は自動的に約 30% 値引きされます。

AWS の RedShift、Microsoft Azure の SQL Data Warehouse との比較

Amazon の RedShift も、Microsoft Azure の SQL Data Warehouse も Google Cloud のBigQuery もそれぞれ各社の クラウドプラットフォーム上で提供されるマネージドサービスである点は共通していますが、RedShift と SQL Data Warehouse はインスタンスの概念があり、使用時にリソースを占有することから、時間あたりの課金やインスタンスの種類による料金設定となっています。対して、BigQuery にはインスタンスの概念がなく、リソースを占有することもできないので、世界中の BigQuery ユーザーでリソースを共有することになります。なので料金は BigQuery で発行したSQLに対するスキャンのデータ量の課金という形になり、利用した分だけ純粋にコストが発生するという特徴があります。
三者三様 料金形態には差があるので、必ずしも BigQuery を利用するのがコストパフォーマンスが高いとは言えませんが、膨大なデータ量に対して少ない回数でクエリを実行する際などの処理には適していると言えます。
実際どのデータウェアハウスが優れているかというのは非常に難しい議論であり、ユースケースやアーキテクチャにもよるので一概には言えませんが、もう少し詳細な比較についてはこちらのクラウドサービス比較表や各社の公式サイトにてご確認いただければと思います。

合わせて読みたい