以前は、MySQL で実行される OLAP キューブを使用して WebAnalytics を構築していました。さて、私が使用した OLAP キューブは、各行が基本的に測定値または測定値の集計セットである単純な大きなテーブルです (OK、それよりも少し賢く格納されています)。各測定値には、一連のディメンション (つまり、どのページ名、ユーザーエージェント、IP など) と一連の値 (つまり、ページビュー数、訪問者数など) があります。
このようなテーブルで実行するクエリは、通常、次の形式 (メタ SQL) です。
SELECT SUM(hits), SUM(bytes),
FROM MyCube
WHERE date='20090914' and pagename='Homepage' and browser!='googlebot'
GROUP BY hour
したがって、前述のフィルターを使用して、選択した日の各時間の合計を取得します。障害の 1 つは、これらのキューブは通常、完全なテーブル スキャンを意味し (さまざまな理由)、これは、これらのものを作成できるサイズ (MiB 単位) の実際的な制限を意味することでした。
私は現在、Hadoop などの詳細を学んでいます。
上記のクエリを BigTable で mapreduce として実行するのは簡単に見えます。「hour」をキーにして、マップをフィルター処理し、値を合計して reduce するだけです。
バッチ モードではなく、BigTable の種類のシステムで、上に示したような (または少なくとも同じ出力で) クエリを実行できますか?
そうでない場合; BigTable/Hadoop/HBase/Hive などの領域でこのようなことを行うための適切なテクノロジは何ですか?