0
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?

BigQueryのパーティションとクラスタリングの違い

Last updated at Posted at 2025-01-07

BigQueryのパーティションとクラスタリングはどちらもクエリのパフォーマンスを向上させるための機能ですが、その仕組みは異なります。

本記事にて、パーティションとクラスタリングの違いについてまとめます。

ソース

まとめ

機能 パーティション クラスタリング
仕組み テーブルを分割 データを並べ替える
効果 クエリ対象を絞り込む 関連データを近くに配置
適用列 1列 最大4列
よく使われる列 日付、タイムスタンプ ユーザーID、商品IDなど

パーティション

  • テーブルを特定の列(パーティションキー)の値に基づいて複数のセグメントに分割する。
  • クエリにパーティションキーが含まれる場合、BigQueryは該当するパーティションのデータのみを読み取る。
  • 分割基準は、時間(日、月、年など)、取り込み時間、整数範囲など。
  • メリット
    • クエリのパフォーマンス向上
    • コスト削減(スキャンするデータ量を減らすため)
    • テーブル管理の効率化

クラスタリング

  • 特定の列(クラスタリングキー)の値に基づいて、テーブル内のデータをソートする。
  • クラスタリングキーの値が近いデータは、物理的に近い場所に格納される。
  • メリット
    • クエリのパフォーマンス向上 (特に、WHERE句やGROUP BY句でクラスタリングキーを使用する場合)
    • コスト削減(スキャンするデータ量を減らすため)

Webサイトのアクセスログを格納するテーブルを例にします。

  • パーティション: date 列をパーティションキーにすることで、特定の日付のデータに効率的にアクセスできる。
    • WHERE date = '2024-01-01' のようなクエリは、2024年1月1日のパーティションのみを読み取る。
  • クラスタリング: user_id 列をクラスタリングキーにすることで、特定のユーザーのアクセスログに効率的にアクセスできる。
    • WHERE user_id = 123 のようなクエリは、ユーザーID 123 のデータが格納されているブロックのみを読み取る。

どちらを使うべきか

  • クエリで頻繁にフィルタリングする列がある場合は、パーティションを使用することを検討する。
  • クエリで頻繁にグループ化したり、ソートしたりする列がある場合は、クラスタリングを使用することを検討する。
  • 両方のメリットを活かしたい場合は、パーティションとクラスタリングを併用することも可能だ。
0
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
0
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?