今年一番感動した技術 - Google BigQuery
【この記事は Tech Women Advent Calendar の16日目の記事として書かれています】
Tech Women Advent Calendar ということで、全く Women であることには関係ないのですが、今年1年のまとめも兼ねて、今年印象に残った技術について書こうと思います。
今年の技術的 Input
今年は社会人2年目、1年目のように時間に融通がきかなくなってくるころですが、それでもいくつか、ちょこちょことカンファレンス・勉強会に出没してました。
大きめ(?)カンファレンスとしては、
なんかに行きました。この他にも色々と行きたいものはあったのですが、日程の都合などにより断念(PyCon とか、行ったことないし行ってみたかった…普段 python を一番多く書くのに)。他にも勉強会的なものには面白そうなもの手当たり次第、月1, 2くらいで行ってたかなというくらいです。
今回のブログにはこれらのカンファレンスのうち QCon 以外の3つで取り上げられていて(LinuxCon / Hadoop Conference / YAPC )、個人的に最もおおっと思った Google BigQuery に関して書きます。
Google BigQuery
Google BigQuery は、Google 内部で2006年ごろから使われている Dremel というカラム型データストアを外部の人が使えるようにしたもので、アドホック/インタラクティブなクエリを扱うのに適しています。とりあえず Google の佐藤さんが出した white paper "An Inside Look at Google BigQuery - https://cloud.google.com/files/BigQueryTechnicalWP.pdf" は読んでみましたが、インデックスなしで350億のレコードを数十秒で総スキャンできるそうです。キーとなる技術としてはざっくりまとめると、
- カラム指向のデータストアであること (Columnar Storage, p4)
- Traffic minimization - “SELECT top(title) FROM foo” といったようなよくあるクエリでは、あるカラムのデータしか必要としないのでデータ転送を少なくできる
- Higher compression ratio - row-based なデータストアよりもデータの圧縮率を高めるのが容易
- サーバ群間のデータ通信を木構造で行う (Tree Architecture, p4-5)
- 短い時間の間に効率的にクエリを数千以上のサーバにディスパッチし、結果を収集することができるように木構造で通信を行う(記事中の図がわかりやすい)
ということです。詳しいことは Dremel の paper (link) に書いてあります。インデックスは基本的に作りません。構造化されたデータを(正規表現は使用可)SQLで、より素早く/アドホックに扱うのが Dremel/BigQuery のターゲットで、バッチ処理に向いている MapReduce とはそもそもターゲットが違うようです。
Google BigQuery ではストレージのコストが $0.026 per GB per month、クエリのコストが $5 per TBで Google の持つ巨大なインフラを用いた解析が誰でもできるように、ということで第三者へのサービスを展開しています。
何にそんなに感動したのか
最近はこの類のデータストアも色々あっていろんな界隈で盛り上がってますが、私は実際に Google がこれをインフラ含めて(しかも格安で)第三者向けに提供できるところまで来てるということに驚きました。実際 BigQuery は Google の所有する豊富なインフラがあってこそこんな速さが出せるもので、技術的にはそこまであっと驚くアイデアによるものではないかもしれません。ただ、私は大学・大学院で並列データ処理の研究をしていましたが、研究では多めに見ても30台くらいのサーバで並列化・実行時間を短縮といった実験をしてたので(それでもコア数としてはそこそこありますが)、そのスケールにはさすが、という思いでした。Google では数千のサーバをフルに活かして並列度を出しているようで、他ではそんな並列度を生かしきれるような環境はなかなかない…分かっていてもできない、というのが実際のところ大学含めた研究機関でも多いと思います。
研究機関以外でも、企業で、インフラを必要とすることもなく、プログラマ以外の人でも簡単に格安にアドホックなクエリでデータ解析ができる BigQuery は、日々の仕事のやり方を変えるようなソリューションとなり得るんじゃないかと思います。
ただ、Google が "Google BigQuery for Open Data" としてるように、なかなか企業の持つデータをどんどん BigQuery に置いて解析しましょう、ということには今の状況ではならないかもしれません。
Google が Dremel 以前に使っていたと言われる MapReduce が発表されたのが 2004 年、Dremel は2006年ごろから社内で使われていたようなので、もうすでに Google では次のソリューションに移行しているのかも?と思うと、技術者としてはなんとも悔しいところではありますが。
来年の抱負とか
もう気づけば2014年も終わりですね…今年はプライベートで色々忙しかったのでなかなかでしたが、来年はもっとエンジニアリングにも時間を使っていきたいです。
今年も皆様お疲れ様でした。来年も頑張りましょう。