ラベル BigQuery の投稿を表示しています。 すべての投稿を表示
ラベル BigQuery の投稿を表示しています。 すべての投稿を表示

2023/06/29

BigQueryの価格変更とEditions

Googleのブログ記事「データクラウドに柔軟性と予測可能性をもたらす、新たな BigQuery Editions を発表」に載っているように、2023/07/05からBigQueryの料金体系が変わります。すでにネット上では多くの記事が書かれているので、ご存じの方も多いと思います。ここでは主な変更点について説明します。概要の理解を重視し、細かい部分については説明を省いています。またリリースもまだなので、変更される可能性もあります。


ストレージ料金の計算方法の変更

従来からBigQueryに保存されるデータは圧縮されていましたが、ストレージ料金が以下のように変わります。圧縮は平均1/12になるようですので、かなり料金が下がるはずです。

  • 従来 : 圧縮前の論理バイト数に応じて課金される。
  • 変更後 : 圧縮後の物理バイト数に応じて課金される。

ただし注意が必要なのは、計算方法の変更が自動的に行われるかどうかは未定のようです。圧縮後で計算されるようにするには、7/5以降に何か操作が必要になる可能性があります。  


(2023/09/14追記)
ストレージ料金を論理バイト数から物理バイト数に変更するには、データセット単位で設定の変更が必要です。そのためのUIもすでにGCPコンソールに追加されています。手順は以下のとおり。
  1. サイドバーから「BigQuery」→「SQLワークスペース」でエクスプローラを表示。
  2. 左ペインでデータセットを選択。
  3. データセット情報の右端の「詳細を編集」。
  4. 「詳細オプション」をクリックして展開し、下にスクロール。
  5. 「物理ストレージの課金モデルを有効にする」をチェックして「SAVE」。
    物理ストレージの課金モデル

ただし物理バイト数での課金では約2倍の料金になるようです。BigQueryの概要ページには米国での価格が載っています。「ストレージの料金」にはまだ物理バイト数での価格は見当たりませんが、修正が間に合っていないのでしょう。日本での価格は「「IDOLY PRIDE」のBigQuery料金を70%カットしました」に記載がありました。具体的な数値が載っているのでGoogleに直接確認した可能性があります。

オンデマンド検索の料金

従来の定額料金制ではなくオンデマンドでの検索も、7/5以降も引き続き可能です。クエリに使用したデータ量に応じで課金される仕組みも同じです。しかし料金は25%の上昇となります。これが一番 & たぶん唯一の痛い変更ですね。


従来の定額制とEditionsの違い

従来あった月間定額/年間定額とFlex Slotsが廃止され、新たにEditionsが開始されます。Editionsにはサービス内容と料金の違いで3つの選択肢がありますが、それらの違いの詳細は上記Googleのブログ記事や他のネット上の記事をご覧ください。Googleの公式ドキュメントにもすでに「BigQuery エディションの概要」が用意されています。

Editionsはオンデマンドと異なり、クエリに使用する仮想CPUである「スロット」単位での課金になります。スロットを使用した数と時間で課金されます。

つまりEditionsは新しい定額料金制ではありません。設定次第で、定額制の様にも従量制の様にも出来ますし、それらを組み合わせることもできます。

スロットの自動スケーリングの概要」に説明されていますが、Editionsではプロジェクトごとに2段階の設定でスロットの利用の仕方を定義します。

  • ベースライン スロット

    Standardでは使用できないようです。
    常時確保するスロットです。従来の月間定額/年間定額で予約するスロットと同じと考えていいと思います。次の自動スケーリングを使用せずベースラインのみ使用するように設定すると、従来の月間定額/年間定額と同等になります。
    従来の月間定額を使用していたプロジェクトは、7/5に自動的に同量のベースラインに変換されるようです。年間定額の場合はその期限が切れたときにベースラインに変換されるようです。

  • 自動スケーリング スロット

    基本的にはベースラインスロットを使い切った場合に、追加で使用されるスロットです。自動スケーリングなので不要になれば解放されます。前のベースラインを使用せず自動スケーリングのみ使用するように設定すると、完全にオンデマンドに設定することも可能なようです。


現時点ではまだ自動スケーリングの時間間隔や課金の時間軸方向の単位について明確な記載がないのですが、短い時間でスケーリングされ課金の時間単位も短いなら、オンデマンドに近い感覚で使用することができると思います。従来の月間定額/年間定額を利用してきたユーザにとっては、高価な利用料を下げられるかもしれません。


Flex Slotsの置き換え

従来のFlex Slotsは廃止されるので、今まで利用していたならその代用が必要になります。これは「既存のFlexコミットメント」に説明されています。
Flex Slotsを利用するケースで代表的なのは、特定の期間だけBigQueryの負荷を急増させる様なケースです。その期間の直前にFlex Slotsを購入し、期間が終われば削除することで、従来は短期的かつ計画的な負荷の急増に対応することがてきました。

Editionsでは自動スケーリングを設定すれば、このような負荷の急増に対応できます。


BI Engineについて

今回の仕様変更では、BI Engineについてはほとんど言及されていません。「エディションの機能」の表ではStandardプランでは利用できない様です。またこの表の「エディション以外のサービス」はオンデマンドのことを指していると思われるのですが、記述されている内容は従来の内容の様に見えます。そのため単体で利用できるのかどうかも曖昧です。従来は年間定額で一定以上のスロットを予約すればオマケについてくるケースもありましたが、それもどうなるのか不明です。

2023/01/13

データストアの選択

世の中には データを保存しておく製品にも、いろいろと選択肢が用意されています。GCPでも目的に応じて特徴の異なる複数のサービスが用意されています。その中でもBigQueryって特徴的で判りやすいと(個人的には)思っていたのですが、最近になってGCPにかかわりながらもBigQueryがどういうものなのかを未だに知らない人に遭遇しました。

ここでGCPのデータの保存目的に使えるサービスを比較しておきたいと思います。


一覧

GCPに用意されたサービスの一覧です。
名称略称概要スケーラブルマネージド
Firestore(特になし)NoSQL、ドキュメント指向データベース。
Cloud SQL(特になし)SQLのリレーショナルデータベース。
Cloud SpannerSpannerSQLのリレーショナルデータベース。
Cloud BigtableBigtableNoSQL・低レイテンシのデータベース。
MemorystoreMemstoreオンメモリで高速動作。
BigQuery(特になし)検索に特化したデータウェアハウス。
Cloud StorageGCS非構造化データ用のストレージ。

「略称」はGoogleが決めた正式なものではないですが、開発者の間でよく使われている呼称です。
「マネージド」の〇はフルマネージド、△はフルではないマネージドを表します。

これら以外にもFirebaseのサービスもあるのですが、それらに関しては割愛します。

各サービスの特徴

サービスを比較・選択するうえで参考としていただけるように、ざっくりと説明します。詳細はGoogleの各サービスをご覧ください。

Firestore

スケーラブルなので負荷が増えても重くなる心配がありません。むしろアクセスが少ないと優先順位が下げられて待ちが長くなる感じさえあります。フルマネージドなのでメンテナンスフリーです。
スキーマレスでドキュメント指向です。自分で各ドキュメントの構造を同じにして使えば、テーブルとして使えます。検索用のインデックスが付いた連想配列の様な感じですが、インデックスによる検索機能は貧弱です。柔軟な検索が必要なら、ElasticSearchやGAEのSearch APIと組み合わせる必要があります。
強整合性でトランザクションにも対応しています。
費用は主に保存容量に対して発生し、無料枠もあるので、ランニングコストは低めです。
SQLしか経験のない方には理解しにくいかもしれませんが、「Not only SQL」なデータベースです。
過去には似たようなDatastoreというサービスがありましたが、それが廃止されてFirestoreのDatastore互換モードとなりました。Firestoreにはネイティブモードもあり、こちらはドキュメントを階層構造にすることもできます。

Cloud SQL

MySQL/PostgreSQL/SQL Serverのいずれかから選んで使用します。これらを自分でGCEに乗せなくても、予めGoogleが用意してくれていると理解すればいいと思います。
なので利点も欠点もMySQL/PostgreSQL/SQL Serverを引き継ぎます。スケーリングに関しては設定した範囲内に限定され、無限ではありません。幸いフルマネージドでメンテフリーで使えます。
費用は主に保存容量とCPUに対して発生します。CPUはGCEと同等なので、ランニングコストはそれなりに発生します。

Cloud Spanner

スケーラブルなので負荷が増えても重くなる心配なし、フルマネージドでメンテナンスフリー、強整合性と、ここまではFirestoreと同じです。こちらはドキュメント指向でありません。SQLでリレーショナルデータベースを使いたい人にとっては、Cloud SQLとFirestore/Bigtableの「良いとこ取り」の様な感じになります。GCPではコスト以外はほぼ最強ではないでしょうか。
費用は主に保存容量とコンピューティングインスタンスに対して発生します。「Cloud Spanner vs Cloud SQL」も参考になると思います。

Cloud Bigtable

スケーラブル、フルマネージド、NoSQLと、ここまではFirestoreと同じです。低レイテンシが最大の売りでしょうか。
GCPに昔からあるサービスで、他のデータベース/ストレージの基盤となるサービスだと聞いたことがあります。(今GoogleのWeb上のドキュメントを探してもそのような説明は見当たらないのですが、当時詳しい人だったかGoogle日本法人の人から聞いた話なので、嘘ではないはず)
費用は主に保存容量とコンピューティングに使われるノードに対して発生します。ノードは事実上GCEと同じなので、たぶんそこそこかかるはず。

Memorystore

Redis/Memcachedのいずれかから選んで使用します。たぶんそれらをGCPに乗せただけと思います。オンメモリなので速いはず。しかもスケーラブル。
速さを活かしてキャッシュや書き換えの集中するデータの保存に向きます。

2022/08/31

BigQueryの料金について

BigQueryの基本的な料金

GCPの中でも BigQueryは特徴あって魅力的なサービスだと思いますが、実際に使ってみると「利用料金がいつの間にかとんでもない金額になっていた」ことで有名です。料金がかるのは、基本は以下の2つです。(実際にはストリーミングとかの別料金もありますが、あまり使われないはずなので割愛します)

価格は東京/大阪リージョン、$1=¥135換算です。


ストレージ:

$0.023=¥3.105/月/GB
$0.016=¥2.16/月/GB(長期保存:90日以上連続して変更されなかったテーブル/パーティション)
1TBまでは無料。

検索:

$6.00=¥810/TB (検索対象になったデータに対して課金)
1TBまでは無料。


BigQueryの検索が速い仕組み=料金が高騰する仕組み?

この章は私の主観や予想を含みます。

検索が速いのがBigQueryの最大の魅力と思いますが、実は裏では結構な大規模なインスタンスが動いているのではないかと思います。その根拠は「クエリジョブ」の以下の記載です。

オンデマンド料金では、プロジェクトで最大 2,000 個の同時実行スロットを設定できます。

ここで「スロット」が何なのか問題になりますが、「コミットメント」に以下の様に説明されています。

スロットは、BigQuery で使用される仮想 CPU を表しています。

つまりGCEのvCPUやGKEのノードと同等のもの? でしょうか。

GCEでvCPUを2000予約する費用を試算してみます。どのようなタイプのvCPUを選ぶかにもよりますが、n2-standard-80(vCPU=80、メモリ320GB、$4.9835/時間)だと、以下のとおり。

$4.9835*2000/80=$124.5875≒¥16,819/時間

ちょっと微妙だったような... GCEのvCPUと同じという予想はハズレかもしれません。


検索の料金を安くする仕組み

がっつりBigQueryを使いながらも検索の料金をそれなりに抑えられるかもしれない仕組みが用意されています。一覧にすると以下のとおり。ちょこっと使いたい方は蚊帳の外です。

名称概要料金
月定額契約購入した瞬間から、30日間の定額料金です。$2,400=¥324,000/月/100スロット
年定額契約購入した瞬間から、1年間の定額料金です。$2,040=¥275,400/月/100スロット
Flex Slots指定した短期間だけ、秒単位で定額にします。$4.80=¥648/時間/100スロット
BI Engineオンメモリ検索で高速化。$0.0499/GB/時間


定額料金

文字どおりの定額料金です。最初の1か月または1年は、途中で止められないので注意が必要です。また上記の料金は100スロットであることにも注意が必要です。通常のオンデマンド検索は2000スロットなので、スロットが少ないと「契約してみたけど検索遅い」ということになりそうです。オンデマンドでは2000スロット以上を使用する手段が用意されていませんが、定額契約では2000スロットを超えて予約できるそうです。東京リージョンでは最大1000スロットまでしか予約できないようです。

年定額契約をある程度のスロット以上購入すると、おまけとして下記のBI Engineの容量もついてきます。年定額契約するなら、これも使わない手はないです。


Flex Slots

瞬間だけ定額という、変則的な料金プランです。使用する都度開始/終了を指定するようなので、定期的に決まった検索を行うなどの用途に向いています。購入するスロット数が多すぎると、購入に失敗することがあります。購入に成功すると解除するまで、秒単位で使っていても使わなくても課金されます。

上手く使えば費用と速度の両面で効果があるはずです。他プランとの組み合わせも可能です。


BI Engine

料金体系というより機能なのですが、別の料金体系を持っています。

Business Intelligence(以下BIと略)ツールのデータソースとしてBigQueryのテーブルを使用する場合に、レスポンスの改善や利用料金の低減の目的で使用します。BIツールとBigQueryを接続すると、ちょっとBIツールを操作しただけで何度も検索が発生していて、いつも間にかとんでもない金額を使ってしまうという悲劇を防げます。なんかのBIツールと組み合わせなければならないわけではないので、常時使うことも可能です。

検索をオンメモリで行うので非常に速いそうです。その検索用のメモリの予約した容量に応じて料金が決まります。素のBigQueryよりいろいろと制限が厳しく、BI Engineで検索できない場合、通常のBigQueryで検索され、料金もそちらのものとなります。