LoginSignup
199
198

More than 5 years have passed since last update.

BigQueryことはじめ。あとBigQueryについて料金とか運用とか調査

Last updated at Posted at 2014-06-05

まだ入門もしてないので「ことはじめ」じゃないです。
大体触ってみたのを載せます。

Wikipedia 集計

スクリーンショット 2014-06-05 15.09.45.png

サンプルデータのwikipediaを集計してみました。
データは3億行ほどあり、サイズは36GBほどあります。

今回は、contributor_usernameを集計し、wikipediaに貢献している人ランキングをつくりました。
上位陣はbotさん達ですね。

結果としては、3億行のデータを、 何も考えずに書いて 16.2秒で集計することが出来ました。

3億行を16秒。

countしなければ3秒くらいで終わります。

MapReduceみたいなのを一切書いてないのにこの速度。

ちなみにテーブルはインデックスしているわけではなく毎回フルスキャンしているらしい。

わお。

料金

データ保管: \$0.026/GB/mo
クエリ: $5/TB (スキャンしたデータのサイズで課金)

今回のwikipediaの集計の数字。

まず、データの保管に36GB * \$0.026 = \$0.936 = 95円/月くらい。
Wikipedia3億行の情報が 95円/月で維持出来ます。わお。
(ちなみに2014/6/5現在、AWS S3より安い。DynamoDBは7倍くらい値段します)

クエリは、1回のクエリで2.5GBスキャンしていたので、
\$5/TB * 2.5GB = \$0.0125 = 1円くらい
Wikipedia3億行の情報が1円+15秒で集計出来ます。

小学生のお小遣いの範囲内で、Wikipedia30億行分くらい扱えます。

このデータはフィールドがわりと多いので単純なものだともっと安いでしょう。
特にlogとか。
100億行を300円/月とかで維持し、一回10円くらいで集計出来るかも。
ちなみに集計はログローテーションすればいいので、全期間のlogをフルスキャンする必要はありません。JOINもサポートしてるのでどんどんテーブル分けましょう。

たった数百万コールで月xx万払わなきゃいけない某サービスがケチくさくみえますね。

感想

安い。速い。うまい。

いままで ⇒ 考えるべきこと : ログ収集、安全に保管、データベース格納、集計、そしてHadooooooopに挑戦 => HDFS、MapReduce、ZooKeeper…かゆ…うま…
BigQuery ⇒ 考えるべきこと : なにを解析するか

ログとかはとりあえず突っ込んでおけばいい。
もう容量は大分安くなった。
あとでクエリ考えて適当に解析すればいい。
考えうる限り全てのログを残してもおつりが来るほど安いです。

たとえば、a#clickイベントを全て片っ端からXPath付きで保存したりとか。むしろそのときのDOMを丸ごとログして、DB/Cookieの状態に依存せず後から再現可能にしたり(ユーザのプライバシーデータ取らないように気をつけないといけない)
まあ、BigQueryに限った話ではないですが。
他のログ系サービスだと簡単にリミット超えて出来ないようなことが簡単に出来ます。

解析の運用。
クエリ考えるのは面倒なので、BIツールをフロントに噛ませるのがいい。
TableauはBigQuery対応
適当にクエリ投げるインターフェースを自前で書いても良い。やりたい操作をSQLにマッピングするだけなのでそんなに手間はかからない。

しかも、BigQueryはクエリに任意のJSを仕込める機能があります。SQLだけに頼らない強力な集計が出来る。
=> 勘違いしてましたが近日リリースだって。

BigQueryを使えば計算ワーカーなんか立てなくてもリコメンデーション(CFとか)用のデータを計算出来ます。
数万件アイテムx数100万ユーザのCFも、BigQuery的にはしょぼい計算量です。一回10円くらいで出来る。
ちなみにBigQueryはPearson相関係数を標準でサポートしてます。(他数学的関数も)

当然ですがAPIがあるので、自社のワークフローの中に組み込めます。

色々夢広がるな〜〜。

全体的に

はっきりいって殆どのデータに大してBigQueryはオーバーキルです。
が、量のないデータ(数万件とか)に大してもBigQueryは良い選択肢だと思います。

なにせ、

  • 1GBを2.6円/moで保管出来る(むしろS3より安い)
  • いつでもエクスポート出来る(MapReduce job対応してるので大規模でもOK)
  • クエリ投げるのは安く数円台(DBサーバと違い、ログ集計とかなのでクエリの数は少ない。)
  • 月額なし。インスタンス課金なし。
  • インフラ管理不要

なので、 RedShiftとか色々考えるよりよっぽど安くて楽でいいです。
fluentdでS3に投げてhogehoge…とか面倒なので、BigQueryに直接fluentdでぶち込みましょう。これで快適ログ生活です。

BigQuery++

199
198
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
199
198