LoginSignup
9
8

More than 5 years have passed since last update.

そろそろJOINの使い方を考えようか?

Posted at

その前に

これはBigQueryのJOINを否定するものじゃありません。
BigQueryのJOINはチューニングとか考えないでいいし、本当に最強だと思います。これのおかげで数千万x数億とかでもサクサク動いてくれるし。
ただ、今まではこれでよかったのですが。。。。。。

みんなTierって知ってるか?

2016年以降に作ったProjectで利用されている方はご存知かと思います。
クエリを投げた後に『お前のクエリはTier2以上でよろしく』って言われたことあると思います。
残念ながら2016年以前に作られたProjectではこれが出ません。
(※ごめん、最近は出てるのかな?)
だから、自分もあんまり意識してなかったのですが最近作ったProjectで出始めたので調査してみました。Tierはどういうことなのか?以下の表に示します。

Tier 費用
Tier1 $5/TB
Tier2 $10/TB
Tier3 $15/TB

こちらに詳しく記載があります。
と、いうことでTierがあがっていくうちに今までのクエリの料金が2倍、3倍とあがっていきます。Tierがあがる閾値は正直わかりません。ただ、以下のような記載があります。

『複雑なクエリでは、処理されるバイト数と比べて膨大なコンピューティング リソースが消費されることがあります。通常、そうしたクエリには非常に多くの JOIN 句や CROSS JOIN 句、複雑なユーザー定義関数が含まれます。』

こういった経緯から、今までJOINしまくってViewを使ったりしていましたが、そろそろクエリがコケはじめてくると思います。考える時期にきたのかもしれません。

※注:2016/10/01より課金があがるように書いていますが、どうやら2017/01/01からという情報もあったり。今のところ実際に課金はあがっていないように見えます。たぶん。

じゃ、どうする?

一番最初に書きましたが、JOINが悪いとは思いません。
段階的に使っていくのが良いと思います。
人間っていうのは欲が出ます。案外簡単に結果が出来ると『あれも欲しい、これも欲しい』となるものです。JOINやViewを利用することで、その要望も簡単に答えられます。
しかし、いつまでも2倍、3倍の料金を支払うのもどうかと。ですから、プロトタイプや初期段階ではJOINやViewで運用し、定着し始めたらJOINやViewの結果をテーブルに落としこんで非正規化してそっちを使う。
こういう使い方が良いと思います。もうとっくに気づいてる人も多いと思いますけどね(笑)

あとは割り切っちゃう方法もありです。こちらを申し込むとTierに関係なくいつでも元気にTier3で回すという富豪的使い方も出来ます。ご利用は計画的に。

ということで。

今まで自分が『JOIN最高!Viewで使いまくれ!』って言ってましたが、そろそろ考えるときがきました。(そもそも、JOINを使うとぶちあてるカラムの課金が二重になっているわけで。)
Tierで課金があがらないうちに、みなさん見直していきましょうね。
あぁ、わしも考えねば。。。。。。。orz

9
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
8