BigQueryってなんぞ?

BigQueryってなんぞ?
10
Kazunori Sato @kazunori_279

@ashigeru BigQueryってこんな文法で60B件のcountとかgroup byを数秒でこなしてたんですけど、中身想像づきますか? http://goo.gl/jtti

2010-05-26 22:52:23
Suguru ARAKAWA @ashigeru

@kazunori_279 や、ぶっちゃけクエリの内容次第かと思いますが

2010-05-26 22:54:58
Kazunori Sato @kazunori_279

@ashigeru 600億件です。group byでcountとか5秒くらいでした。

2010-05-26 22:55:34
Kazunori Sato @kazunori_279

@ashigeru 単純な全件とかなら事前カウントで対応できるけど、先の文法の自由度で「Typical queries execute in seconds.」とうたっているので、どんな仕組みやねん。。と

2010-05-26 23:02:06
Suguru ARAKAWA @ashigeru

@kazunori_279 純粋にgroupby countを早くするだけなら、distributed Btree辺りを使えばそのスピードはアドホックに計算しても出せなくはない…かも

2010-05-26 23:03:23
Kazunori Sato @kazunori_279

@ashigeru ふ~む。ではjoinなしで、すべてのカラムについて値付きのbtreeを作っておく感じかな。。?

2010-05-26 23:06:21
Suguru ARAKAWA @ashigeru

@kazunori_279 ついでに、フィールドごとにdistinctした表とかも持ってそうな印象です

2010-05-26 23:11:04
Kazunori Sato @kazunori_279

"WHERE word CONTAINS "th"" とか部分一致検索もOKみたい。むぅ #bigquery

2010-05-26 23:12:38
Suguru ARAKAWA @ashigeru

@kazunori_279 そういう意味で、速いクエリと遅いクエリの例が大量にないと推測しづらいですね。

2010-05-26 23:16:27
Kazunori Sato @kazunori_279

@ashigeru 60B件とかだと、遅いクエリってのは実質実行不可能と思うのですよね。。

2010-05-26 23:18:51
Suguru ARAKAWA @ashigeru

@kazunori_279 リアルタイムなのかバッチなのか、その辺りによると思いますよ

2010-05-26 23:19:56
Kazunori Sato @kazunori_279

@ashigeru クエリはリアルタイムで、インポートはバッチっぽい印象です(インポート処理についてあまり紹介されなかったのがミソかも)

2010-05-26 23:22:07
Suguru ARAKAWA @ashigeru

@kazunori_279 ちなみにここに書いてある構文だと、フィルタ部分はリニアな並列性があると思います

2010-05-26 23:28:50
Kazunori Sato @kazunori_279

@ashigeru ふむ。でも並列処理できるとしても、部分一致検索とかは全検索?それとも転置インデックス等?

2010-05-26 23:30:30
Suguru ARAKAWA @ashigeru

@kazunori_279 事前計算を前提としないなら、数百万件ごとに分散して、局所性をもってシーケンシャルスキャンする感じです。秒オーダーだからこそ許される大技w

2010-05-26 23:32:51
Kazunori Sato @kazunori_279

@ashigeru そんな力業なのかぁ。。それこそMapReduceっぽいなww

2010-05-26 23:33:53
Suguru ARAKAWA @ashigeru

@kazunori_279 いや、もちろん想定の上を行く可能性は高いと思いますよ。私がもし同じ制約でアーキテクチャ考えたら…っていうだけです

2010-05-26 23:36:46
Kazunori Sato @kazunori_279

@ashigeru googleなら...googleならきっと想像の斜め上を行く仕掛けを使ってくれてるはずだ!

2010-05-26 23:38:00
Suguru ARAKAWA @ashigeru

@kazunori_279 そう期待します。とりあえず逆関数がない関数をフィルタに使える時点で、フィルタに関してはある程度手法が限定される気はするんですよね

2010-05-26 23:40:22
Kazunori Sato @kazunori_279

@ashigeru 逆関数とフィルタの関係...わからんw

2010-05-26 23:47:14
Suguru ARAKAWA @ashigeru

@kazunori_279 とりあえずあの資料だけ見て感じるのは、フィルタの局所性が高い(たぶんエンティティに閉じてる)、極端にネットワーク通信を嫌う、って辺りです

2010-05-26 23:48:49
Kazunori Sato @kazunori_279

@ashigeru 「エンティティに閉じてる」のところをできればkwsk

2010-05-26 23:52:37
Suguru ARAKAWA @ashigeru

@kazunori_279 WHERE句に出現する項をすべて並べると、必ず同じエンティティのメンバか、単なる定数、またはそれに何らかの演算をしたものになると思います。サブクエリの深さがnだったとしても、おそらくO(n)で基本O(1)になるはず

2010-05-26 23:55:34
Kazunori Sato @kazunori_279

@ashigeru ふむ、joinがない、という意味ですか?たしかにjoinはなさそうですね。

2010-05-26 23:59:11
まとめたひと
Kazunori Sato @kazunori_279

I love Google App Engine!