読者です 読者をやめる 読者になる 読者になる

えいのうにっき

主に Web 系技術ネタ。背景画像 is powered by grass-graph.shitemil.works

BigQuery へのクエリの投げすぎに注意しよう(2014/09/18 追記しました) #gcpja

という主旨で、下記のようなエントリを書いたのですが、それからさらに Google の中の人である @kazunori_279 さんにも直接お問い合わせして頂いた結果、 temporary table には料金が掛からない 、ということがわかりました。

正確なところがわかって、本当に良かった!^^ これで本当の意味で安心して、アドホックに・気軽にクエリを投げることができますね♪(もちろんスキャンサイズには引き続き注意して...w)

@hogedigo さん、 @kazunori_279 さん、ありがとうございました!

以下、元エントリ

前日のエントリの続きっぽい内容だけど。

最近大きく盛り上がっている BigQuery。いわゆるビッグデータと呼ばれるデータの解析に対しては、パフォーマンス面・コスト面において非常に大きなアドバンテージを持っていることはもう周知の事実だと思うんだけど、その手軽さ故についつい行ってしまうクエリの投げ過ぎには、注意したほうが良さそう...という話。

下記ドキュメントを読んでも書いてあるとおり、BigQuery に対してクエリを投げた結果はすべて、lifetime が 24時間の Temporary Table に出力される(別途 destinaton table を指定したときは、その指定した名前で、永続的な table が作成される)。

All synchronous query results are saved to an anonymous table with a lifetime of about 24 hours. If you want to save the data for longer than that, re-run the query asynchronously and specify a permanent destination table.

https://developers.google.com/bigquery/querying-data?hl=ja#syncqueries

で、この temporary table が専有する領域も使用料金に加算されるかどうか、が前から気になっていて、昨日の gcp ja night で Google の中の人にも確認してみたんだけど、その場では即答は頂けなかった。

で、そのことを前日のエントリに書いておいたんだけど、それを見て頂いた @hogedigo さんが、ご自身の有料サポートを活用して、このことを質問してくれた。

@hogedigo さんは「やはり」とおっしゃっているが、僕はどちらかというと「対象外かな〜」と楽観的に考えていたw。

ともあれ、この事実は、 BigQuery を扱う際にはアタマの片隅には置いておいたほうがいいと思う。いくら BigQuery のデータ保持費用が安い($0.026/GB)からといって、例えば「一回のクエリの結果が100MB」のクエリを「一日1000回」などというレベルで投げていると、それだけで 100GB、 $2.6 のコストだ......、、あれ、安いな?w (ちなみに、僕の記憶が定かなら、destination table を指定しない場合のクエリの結果の最大サイズは、128MB。)

それと、何気に怖いのが、 @hogedigo さんが追加で確認してくれている「 24時間でちゃんと削除されて対象外になるのか 」というところ。これの正確なところは続報を待つしかないんだろうけど、もしこれが「24時間経過すると、その temporary table は削除される」ではなく「 24時間以上経過した場合の temporary table の存在は保証しない 」程度の意味合いだと、また若干変わってくる。

ということで、この点での続報が気になる方は、ぜひ @hogedigo さんをフォローしましょう。w

Google BigQuery

Google BigQuery