@ashigeru BigQueryってこんな文法で60B件のcountとかgroup byを数秒でこなしてたんですけど、中身想像づきますか? http://goo.gl/jtti
2010-05-26 22:52:23@ashigeru 単純な全件とかなら事前カウントで対応できるけど、先の文法の自由度で「Typical queries execute in seconds.」とうたっているので、どんな仕組みやねん。。と
2010-05-26 23:02:06@kazunori_279 純粋にgroupby countを早くするだけなら、distributed Btree辺りを使えばそのスピードはアドホックに計算しても出せなくはない…かも
2010-05-26 23:03:23@ashigeru ふ~む。ではjoinなしで、すべてのカラムについて値付きのbtreeを作っておく感じかな。。?
2010-05-26 23:06:21"WHERE word CONTAINS "th"" とか部分一致検索もOKみたい。むぅ #bigquery
2010-05-26 23:12:38@ashigeru クエリはリアルタイムで、インポートはバッチっぽい印象です(インポート処理についてあまり紹介されなかったのがミソかも)
2010-05-26 23:22:07@ashigeru ふむ。でも並列処理できるとしても、部分一致検索とかは全検索?それとも転置インデックス等?
2010-05-26 23:30:30@kazunori_279 事前計算を前提としないなら、数百万件ごとに分散して、局所性をもってシーケンシャルスキャンする感じです。秒オーダーだからこそ許される大技w
2010-05-26 23:32:51@kazunori_279 いや、もちろん想定の上を行く可能性は高いと思いますよ。私がもし同じ制約でアーキテクチャ考えたら…っていうだけです
2010-05-26 23:36:46@ashigeru googleなら...googleならきっと想像の斜め上を行く仕掛けを使ってくれてるはずだ!
2010-05-26 23:38:00@kazunori_279 そう期待します。とりあえず逆関数がない関数をフィルタに使える時点で、フィルタに関してはある程度手法が限定される気はするんですよね
2010-05-26 23:40:22@kazunori_279 とりあえずあの資料だけ見て感じるのは、フィルタの局所性が高い(たぶんエンティティに閉じてる)、極端にネットワーク通信を嫌う、って辺りです
2010-05-26 23:48:49@kazunori_279 WHERE句に出現する項をすべて並べると、必ず同じエンティティのメンバか、単なる定数、またはそれに何らかの演算をしたものになると思います。サブクエリの深さがnだったとしても、おそらくO(n)で基本O(1)になるはず
2010-05-26 23:55:34