プレビュー機能: BigQuery のパーティショニングとクラスタリングの Recommender を覗いてみる

はじめに

こんにちは。
GMOアドマーケティングのKONCEです。
弊社ではDWHとしてBigQueryを採用しております。
GCPを運用する上で日々コストを気にしていますが、先日 Google Cloud release notes にて「BigQuery のパーティショニングとクラスタリングの Recommender」という気になるプレビューが追加されていたので今回はそれを覗いてみたいと思います。

パーティショニングとクラスタリング

パーティショニングとクラスタリングは、BigQueryで大量のデータを効率的に処理するための重要なテクニックです。パーティショニングとクラスタリングを組み合わせて使用することで、クエリのパフォーマンスを最適化し、コストを削減することができます。

パーティショニング

パーティショニングは、テーブル内のデータを論理的にセグメント化する方法です。
テーブルの特定の列を基準にデータを分割し、効率的なデータクエリを可能にします。
パーティショニングを使用することで、特定の時間範囲のデータや特定のカテゴリのデータに対して高速な検索や集計が可能になります。また、パーティショニングはクエリのパフォーマンスを向上させるだけでなく、クエリのコストを削減する効果もあります。
パーティショニングについては以前@zakisanbaimanさんにより弊社ブログも公開されていますのでそちらもご確認ください。
こんにちは。GMOアドマーケティングの@zakisanbaimanです。弊社ではDWHとしてBigQueryを採用しているのですが、テーブルサイズが巨大になりそのクエリコストが課題になっていました。そこでテーブルにパーティションを設定し、クエリの書き方を工夫することによってコストを抑えようと試みたので内容を共有します。パーティションテーブルとは1つのテーブルを指定した単位で分割させることでクエリ時に参照するレコード数を削減し、クエリコストの削減やパフォーマンス向上を狙うことができます。RDBMSのパーティショニングに近い機能...

クラスタリング

クラスタリングは、DBMSのインデックスのイメージに近いです。テーブル内のデータの物理的な配置を最適化する方法です。
最大4つまでの特定の列(または複数の列)に基づいてデータをソートし、関連するデータを同じストレージブロックにまとめます。
これにより、クエリの実行時間を短縮し、データのスキャン量を削減することができます。
クラスタリングを使用することで、特定のクエリパターンに最適化されたデータの配置が可能になります。

BigQuery のパーティショニングとクラスタリングの Recommenderについて

※プレビュー機能について紹介しています。内容は変更される可能性がありますので、公式ソースをご参照ください。
BigQuery のパーティショニングとクラスタリングの Recommender は、BigQuery テーブルを最適化するためのパーティションまたはクラスタの推奨事項を生成します。Recommender は、BigQuery テーブルのワークフローを分析し、テーブル パーティショニングまたはテーブル クラスタリングのいずれかを使用してワークフローとクエリの費用を最適化するための推奨事項を提供します。

https://cloud.google.com/bigquery/docs/view-partition-cluster-recommendations?hl=ja#gcloud
過去30日間の実行データからBigQueryテーブルを分析するようです。機械学習を利用し、Recommender適用後の最適化を予測してくれるようです。
主要のリージョンのリソースをサポートしており、レガシーSQLの使用の分析は除外されるようです。

Recommender API を使用して試してみる

以下 gcloud recommender recommendations list コマンドで取得できます。PROJECT_NAME/REGION_NAMEはプロジェクト名前、リージョンに置き換えます。今回はFORMAT_TYPEはjsonとしました。 レスポンス(一部) ccc でクラスタリングすることでコスト削減とパフォーマンス向上が期待できることがわかります。
同じ項目のコンソールのプロジェクト→推奨事項は以下
同じ内容ですが、APIはbyte単位で出ているので若干詳細になっているように見えました。

おわりに

まだプレビューですが、コスト削減に向けて有用かもしれない「パーティショニングとクラスタリングの Recommender」について事前に調べることができました。使い方によっては自動化等も可能になってくるでしょうか。今後はリリースを待ちつつ、Recommendされた内容の適用やそのコスト削減への効果もまとめていければと思います。引き続き注目していきます。