2023.04.04 コラム
【テックコラム】BigQuery の物理ストレージは安くなるか
● はじめに
DataCurrent の金子です。
2023年3月30日、BigQuery で新しい料金プランが発表されました。今回はその中でも多くのユーザーにとってメリットが大きいと思われる「物理(圧縮)ストレージ」の料金モデルについて解説したいと思います。
※ 2023年3月30日現在、物理ストレージ料金モデルはプレビュー版ですのでご注意ください。
※ 2023年7月5日に 物理(圧縮)ストレージ」料金モデルが GA になりました。これに合わせて記事内容を一部修正・加筆しました。
● 物理(圧縮)ストレージ課金モデルとは
BigQuery のストレージ料金は、BigQuery に読み込むデータを保存するための費用です。利用中のデータ量に対する課金で、過去90日間で変更されたデータを保存するアクティブストレージと、90 日間連続して変更されていないデータ用の長期保存ストレージの2種類があります。
これまではデータを圧縮「前」に課金する論理ストレージモデルのみ選択できましたが、圧縮「後」に課金する物理ストレージモデルを選択できるようになっています。ストレージタイプはデータセットに対して設定することができ、どちらのストレージを選択しても BigQuery のパフォーマンスが変わるということはありません。
圧縮後のデータに対する課金なので、データ量が大幅に小さくなることが見込まれますが、料金については注意点が 2 つあります。
※ ここで、2023年3月30日時点では物理ストレージに変更後、論理ストレージに戻せないとしておりましたが、物理ストレージ変更後も 14 日経過すると論理ストレージに戻せるようになりました。(英語版)
物理ストレージの単価は論理ストレージの約 2 倍
BigQuery の料金ページ(英語版が確実です)によると、2023 年 3 月 30 日現在、東京リージョンのストレージの価格は以下の通りです。
圧縮後のデータ量は圧縮前に比べて約 4分の1 程度になることが知られています。ただし、単価は高くなりますので、利用中のデータセットの使用量が小さくなっても、結果的に安くなるかは要確認です。※見積方法は後述します。
物理ストレージにはタイムトラベルなどに利用するデータも含みます
論理ストレージはタイムトラベル機能に使用する分のデータを含まない形で課金されていましたが、物理ストレージを利用する場合はタイムトラベルに利用するデータも含みます。
タイムトラベル機能とは、BigQuery で変更または削除されたデータに対して最大 7 日までアクセスできる機能です。タイムトラベル機能の性質上、例えば頻繁に洗い替えをするようなテーブルが多く存在するデータセットの場合、物理ストレージの方がデータ量が小さくなるとは必ずしも言えない場合があります。またタイムトラベル機能とは別に、フェイルセーフ機能のデータも物理ストレージに含まれると聞いています。フェイルセーフ機能(英語版)とは Google Cloud のサポートに依頼するとデータを復旧できる仕組みです。
以下は、論理、物理ストレージの概念についてまとめたものになります。赤枠部分が課金されるデータ量のイメージです。
● 物理ストレージでいくら安くなるか
物理ストレージを利用することで実際のデータセットがいくら安くなるのか実際に見積もりするまで分かりません。ここでは、実際にストレージの料金を予測することで、ストレージ切り替え時のコスト圧縮効果を計算します。但し、正確な料金については Cloud Billing に表示された内容になりますのであくまで予測である点にご注意ください。
見積もりの概要
- 見積もりは BigQuery でクエリを実行することによって計算できます。
- 見積もりは、各プロジェクト、各リージョンごとに行う必要があります。(組織に対する権限があれば各リージョンごとでも可能です)
- 以下の権限が必要です。※ オーナー権限であっても明示的に付与しないと見積できないので注意が必要です。例えば BigQuery メタデータ閲覧者ロールを付与することで見積できます。
- bigquery.tables.get
- bigquery.tables.list
見積もりのフロー
- リージョンごとにストレージの単価を調べます。ストレージはアクティブストレージと長期保存用ストレージの2種類あるのでそのどちらも調べます。
- 現在時点の実際の論理ストレージと物理ストレージの使用量(GB)と料金(USD)を調べるクエリを作成し、クエリを実行します。
- データセットごとにクエリ結果の total_cost_difference カラムを見て、物理ストレージ切り替えによって料金が安くなるかどうか確認します。
東京リージョンの見積もり例
①リージョンごとのストレージ単価を調べる
BigQuery の料金ページ(英語版が確実です)から東京リージョンの料金を確認します。料金は前述のとおりです。
②クエリを作成する
Google Cloud のドキュメントのクエリと同様のクエリを作成します。黄色くハイライトした部分をリージョンに応じて変更します。
最初の4つのハイライトには調べたいリージョンの料金を記入します。それぞれ「アクティブ論理ストレージ」、「長期保存用論理ストレージ」、「アクティブ物理ストレージ」、「長期保存用物理ストレージ」です。最後のハイライトには、region-【調べたいリージョン名】を記入します。ここでは東京リージョンの料金と region-asia-northeast1 をそれぞれ記入しました。
DECLARE active_logical_gb_price FLOAT64DEFAULT 0.023
; DECLARE long_term_logical_gb_price FLOAT64DEFAULT
; DECLARE active_physical_gb_price FLOAT640.016
DEFAULT
; DECLARE long_term_physical_gb_price FLOAT640.052
DEFAULT
; WITH storage_sizes AS ( SELECT table_schema AS dataset_name, SUM(active_logical_bytes) / power(1024, 3) AS active_logical_gb, SUM(long_term_logical_bytes) / power(1024, 3) AS long_term_logical_gb, SUM(active_physical_bytes) / power(1024, 3) AS active_physical_gb, SUM(long_term_physical_bytes) / power(1024, 3) AS long_term_physical_gb, SUM(total_physical_bytes) / power(1024, 3) AS total_physical_gb, SUM(total_logical_bytes) / power(1024, 3) AS total_logical_gb FROM0.026
region-asia-northeast1
.INFORMATION_SCHEMA.TABLE_STORAGE_BY_PROJECT WHERE total_logical_bytes > 0 AND total_physical_bytes > 0 GROUP BY 1 ) SELECT dataset_name, /* データセット */ active_logical_gb, /* アクティブ論理(GB) */ long_term_logical_gb, /* 長期保存論理(GB) */ active_physical_gb, /* アクティブ物理(GB) */ long_term_physical_gb, /* 長期保存物理(GB) */ total_logical_gb / total_physical_gb AS compression_ratio, /* 圧縮比率 */ active_logical_gb * active_logical_gb_price AS active_logical_cost, /* アクティブ論理(USD) */ long_term_logical_gb * long_term_logical_gb_price AS long_term_logical_cost, /* 長期保存論理(USD) */ active_physical_gb * active_physical_gb_price AS active_physical_cost, /* アクティブ物理(USD) */ long_term_physical_gb * long_term_physical_gb_price AS long_term_physical_cost, /* 長期保存物理(USD) */ ((active_logical_gb * active_logical_gb_price) + (long_term_logical_gb * long_term_logical_gb_price)) - ((active_physical_gb * active_physical_gb_price) + (long_term_physical_gb * long_term_physical_gb_price)) AS total_cost_difference /* 差額(論理 - 物理, USD) */ FROM storage_sizes ORDER BY compression_ratio DESC;
※ 「Google Cloud 組織」が定義されているユーザーは TABLE_STORAGE_BY_ORGANIZATION ビューをクエリすることでより包括的にクエリすることも可能です。この場合もリージョンごとにクエリを実行する必要があります。
③クエリ結果を確認する
クエリをコンソールから実行すると、以下の画面になります。「結果を表示」をクリックして結果を見ます。
クエリ結果は以下の通りです。カラム名は日本語にしました。
「差額(論理 – 物理)」カラムは、論理ストレージの料金 – 物理ストレージの料金の算定式になっています。「差額(論理 – 物理)」カラムのプラスの値が大きいほど、物理ストレージをすることで料金が安くなることを意味します。
上記の表の場合、xxx データセットは、物理ストレージに切り替えることで 0.182 ドル安くなることがわかります。
● まとめ
今回は、BigQuery の物理ストレージの料金体系について解説しました。BigQuery を利用されている多くのユーザーにとって圧縮後の課金体系を選択することのメリットは大きいと思います。この機会に是非お見積りしてみてはいかがでしょうか。
弊社では事業会社様のデジタルマーケティング活動の支援を行っています。
自社に専門人材がいない、リソースが足りない等の課題をお持ちの方に、エンジニア領域の支援サービス(Data Engineer Hub)をご提供しています。
お困りごとございましたら是非お気軽にご相談ください。