1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

BigQueryとBigtableの違い・活用術をまとめてみた

1
Posted at

はじめに

Google Cloudには、BigQueryやBigtable、BigLakeといった強力なデータ基盤サービスがあります。これらを使いこなすことで、大規模データの分析やリアルタイム処理を効率よく行うことができます。
この記事では、それぞれの特徴や使い分け、クエリ高速化のテクニックをまとめました!


OLAPとOLTPの違い

  • OLAP (Online Analytical Processing)
    データ分析や集計に特化し、主に大量の履歴データに対して複雑なクエリを実行する用途に適しています。
    • BigQueryBigLake は、OLAP用途に適しています。
  • OLTP (Online Transaction Processing)
    リアルタイム性のあるトランザクションデータの処理に最適化されており、正確性やデータ構造の整合性が重視されます。
    • Bigtable は、OLTP用途に適しています。

トランザクションデータの管理では、スキーマやデータ構造を正しく保つことがとても重要です。


BigQueryの主要コンポーネント

ルーチン

BigQueryでは、よく使う処理をルーチン化して再利用できます。代表的なものは以下の通りです。

  • ストアドプロシージャ
    ELT処理など、データ操作後にDMLでテーブルへ書き込む場合に利用されます。
  • ユーザー定義関数 (UDF)
    SQL内で呼び出して値を返すカスタム関数。組み込み関数のように使えます。
  • テーブル関数
    パラメータを受け取れるビューのような機能で、絞り込みなどが可能です。

マテリアライズドビュー vs 他の技術

コンポーネント キャッシング スケジュールクエリ 論理ビュー マテリアライズドビュー
パフォーマンス × ×
クエリの種類 すべて すべて すべて 一部限定
パーティショニング/クラスタリング × N/A
増分更新 × × ×
追加ストレージ × ×
書き換え × × ×
メンテナンス負荷 × N/A
データの古さ管理 なし なし 柔軟に管理可
  • マテリアライズドビューは高パフォーマンスが魅力で、増分更新やクエリの書き換え機能も持ちます。
  • --max_stalenessオプションでデータ鮮度とコストをバランスできます。

承認済みビュー

ビューの参照先データセットに権限がないとクエリエラーになりますが、承認設定を行うと利用者がアクセスできるようになります。
これにより、利用者に見せたいデータのみを安全に公開できます。

クエリパフォーマンスを最大化するコツ

  • WHERE 句では STRINGBYTE より BOOL, INT, FLOAT, DATE を活用
  • REGEXP_CONTAINS()よりLIKEを使う
  • 不要な列は SELECT しない
  • パーティション・クラスタリングを活用
  • ネスト(STRUCT列やREPEATED列)でGROUP BYを減らす
  • JOIN前にデータを絞り込む
  • 長いクエリは一時テーブルを挟む
  • 自己結合よりウィンドウ関数の利用を検討

BigLakeの特徴

BigLakeは、外部ストレージへのアクセス権限とテーブル権限を分離し、運用負担を軽減できます。

  • メリット
    • 権限管理の簡素化
    • ストレージ基盤を意識せず分析可能
    • データ移動や複製を不要にし、コスト削減
  • ユースケース
    • Twitterでは、1秒間に300万以上の集計を行うパイプラインにBigLakeを活用しています。

Bigtableの特徴

圧倒的なスループットと低レイテンシ

  • 単位時間あたりの処理能力が非常に高く、数ミリ秒以下の応答速度を誇ります。
  • 即時性が重要な金融やIoT分野の時系列データ処理に強みを発揮します。

BigQueryとの主な違い

  • ミリ秒レベルの即時応答が可能
  • トランザクション機能を持つ
  • リレーションがないため JOIN 不可

設計のポイント

テーブル設計

  • 似たスキーマのデータは同一テーブルにまとめる
  • 不要なテーブル乱立を避ける
  • 逆タイムスタンプを行キーに使う場合は別テーブル化も検討

列ファミリー

  • 関連する列は同じファミリーにまとめる
  • ガベージコレクションポリシーはファミリー単位で設定

列設計

  • 列修飾子を柔軟に使う
  • 1行に多すぎる列を持たないよう注意

行・セル設計

  • 1行は100MB以内に抑える
  • 1セルは10MB以下にする

行キー設計

  • 短く、4KB以下に
  • 行キー設計で性能が大きく変わるため慎重に!

おわりに

BigQuery・Bigtable・BigLakeの特性を理解し、最適な設計やチューニングを行うことで、パフォーマンス向上と運用コスト削減を同時に実現できます。
それぞれのユースケースに応じて柔軟に使い分けていくことが大切です。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?