こんにちは、NTTデータ先端技術の陰です。
今回は、Google Cloud Platform(GCP)のサービスであるBigQueryの料金体系及び、料金の抑制策について紹介します。
アジェンダ
1 BigQueryとは
2 BigQueryの料金について
3 BigQuery料金の抑制策について
4 まとめ
1 BigQueryとは
BigQueryとは、Google Cloudで提供するペタバイト規模の費用対効果の優れたフルマネージド型の分析データウェアハウスです。膨大な量のデータに対してほぼリアルタイムで分析を行うことができるサービスとなります。今回はBigQueryと同じフルマネージド型の分析データウェアハウスであるOracle Cloud提供の Autonomous Database for analytics and data warehousing (ADW)と料金体系を比較してみました。
2 BigQueryの料金について
BigQueryの利用料金は、クエリの処理にかかる分析料金と、データの保存にかかるストレージ料金で決まります。
分析料金については、クエリの処理にかかる費用となり、SQLクエリや、ユーザー定義関数を実行した後、実際にクエリがスキャンしたバイトの数に基づいて課金される設定になっています。
ストレージ料金については、BigQueryにデータを保存する際にかかる費用となり、BigQueryに保存されたデータの量に基づいて課金される設定になっています。
BigQueryの分析料金は以下の2つの特徴があります。
①概算見積もりが難しい
ADWはインスタンスの種類(OCPUの数)や使用した時間単位に基づいて課金されるインスタンス料金が設定されているので、簡単に概算を見積もることができますが、BigQueryは、クエリがスキャンしたバイトの数に基づいて課金される分析料金が設定されているので、実環境でどのぐらいクエリが発行されているのか、そして、スキャンされるデータ量はどのぐらいなのか把握できないと概算を見積もることが難しいです。
②場合によってはADWより低価格で利用できる
BigQueryの分析料金はADWのインスタンス料金と異なる体系になっており、クエリの発行数や、データ量が少ない場合は、ADWより低価格で利用できます。
クエリ量、データ量に応じた選定イメージ
3 BigQuery料金の抑制策について
BigQueryの料金を抑える方法については、以下の2つがあります。
①クエリの対象を絞る(SELECT *を避ける)
BigQueryは、データがカラム形式で格納されているため、パフォーマンスが高いのが特徴です。ただし、「SELECT *」を使用しデータを検索すると、テーブル中のすべての列に対してクエリが実行されるので、最も高いコストが発生します。
「SELECT *」で全件検索すると、その中には不要なデータが含まれている可能性があります。不要なデータにコストがかからないように必要なデータだけ絞り込んで検索することが大事です。
②テーブルを分離する(テーブルをパーティション化する)
テーブルを分離すると、検索範囲を絞ることができ、クエリ処理のコストを削減することができます。(パフォーマンスも向上できます)
テーブルをパーティション化しないと以下のようにテーブル全体に対してクエリが実行されます。
しかし、テーブルをパーティション化すると以下のように検索範囲を絞ってクエリを実行することができるので、読み込まれるデータ量の削減ができます。
なお、BigQueryには、長期間データを保存する場合に適用される自動割引があります。
これは、データが検索及び、更新なしで90日間BigQueryに保存されると料金が自動的に約半額になるとてもお得なサービスになります。
テーブルをパーティション化すると検索範囲を絞るだけではなく、以下のように検索及び、更新がないパーティションに対して長期保存料金が自動で適用されるので、データ保存にかかる料金が約半額になり、ストレージ料金を抑えることができます。
4 まとめ
BigQueryは他クラウドベンダーのフルマネージド型の分析データウェアと比較し、実際にクエリがスキャンしたバイトの数に基づいて課金される特徴があるので、膨大なデータ量に対してクエリの実行回数が少なく、高性能の処理が必要な場合におすすめです。
ユースケースや、アーキテクチャを確認し、各クラウドベンダーごとの料金体系を理解した上で、適切なフルマネージド型の分析データウェアを選定するようにしましょう。