BigQueryについてのTipsです。
おしながき
ストリーミング.2023/04/29
ストリーミングは新旧2種類あります。
従来のストリーミング
「以前のストリーミング API を使用する」に説明されている tabledata.insertAllメソッドを使用します。ただしこのAPIは以下の理由でお勧めできません。
- Storage APIが登場したため、それ以前に作られたアプリを動作させるために残されているだけと思われる。
- 「書き込んだデータは最大90分反映されないことがある」旨の記載があるが、ほぼ確実に90分待たされる。以前はそうでしたが、今は改善されているかも。
Storage Write API
Storage Write APIを使用します。このAPIはストリーミングだけでなくバッチ読み込みもできたり(読み込みジョブではないらしい)、WriteだけでなくReadのAPIも用意されていたりと高機能です。Googleの公式ドキュメントにはWrite/Readをセットにして「Storage API」と記載されている個所もあります。
また価格も無料枠があったりと従来のストリーミングよりも安くなっています。新旧で比較してみると、以下のとおりです。(東京/大阪リージョン)
操作 | 従来のストリーミング | Storage Write API |
---|---|---|
テーブルへの読み込み | $0.012、200MBごと | $0.03/GB |
無料枠 | なし | 2TB/月 |
グラフにしてみると右のとおり。横軸はデータ量で単位はMB、縦軸は価格で単位はドル$です。一目瞭然ですべてのケースでStorage Write APIの方が安くなっています。
ただし2021/10に正式リリースされてまだ日が浅く、ネットにも使い方を説明した記事が少なかったり、「BigQuery にニアリアルタイム連携を導入しようとしている話」のようにバグに遭遇する可能性もあります。実装は慎重に行った方が良いかもしれません。
価格体系の変更とEditions.2023/07/01
Googleのブログ記事「データクラウドに柔軟性と予測可能性をもたらす、新たな BigQuery Editions を発表」に載っているように、2023/07/05からBigQueryの料金体系が変わります。すでにネット上では多くの記事が書かれているので、ご存じの方も多いと思います。ここでは主な変更点について説明します。概要の理解を重視し、細かい部分については説明を省いています。またリリースもまだなので、変更される可能性もあります。
ストレージ料金の計算方法の変更.
従来からBigQueryに保存されるデータは圧縮されていましたが、ストレージ料金が以下のように変わります。圧縮は平均1/12になるようですので、かなり料金が下がるはずです。
- 従来 : 圧縮前の論理バイト数に応じて課金される。
- 変更後 : 圧縮後の物理バイト数に応じて課金される。
ただし注意が必要なのは、計算方法の変更が自動的に行われるかどうかは未定のようです。圧縮後で計算されるようにするには、7/5以降に何か操作が必要になる可能性があります。
オンデマンド検索の料金.
従来の定額料金制ではなくオンデマンドでの検索も、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プランでは利用できない様です。またこの表の「エディション以外のサービス」はオンデマンドのことを指していると思われるのですが、記述されている内容は従来の内容の様に見えます。そのため単体で利用できるのかどうかも曖昧です。従来は年間定額で一定以上のスロットを予約すればオマケについてくるケースもありましたが、それもどうなるのか不明です。
Copyright 2005-2023, yosshie.