В прошлом я использовал для создания WebAnalytics использование кубов OLAP, работающих в MySQL. Теперь куб OLAP, который я использовал, это просто большая таблица (хорошо, она была немного более умна, чем та,), где каждая строка представляет собой в основном измерительный или или совокупный набор измерений. Каждое измерение имеет кучу размеров (например, pagename, useragent, ip и т.д.) И множество значений (например, количество просмотров страниц, количество посетителей и т.д.).
Запросы, которые вы запускаете в такой таблице, обычно имеют форму (meta-SQL):
SELECT SUM(hits), SUM(bytes),
FROM MyCube
WHERE date='20090914' and pagename='Homepage' and browser!='googlebot'
GROUP BY hour
Таким образом, вы получаете итоговые значения за каждый час выбранного дня с указанными фильтрами. Одна загвоздка заключалась в том, что эти кубы обычно означали полное сканирование таблицы (по разным причинам), и это означало практическое ограничение размера (в MiB), что вы могли бы сделать эти вещи.
В настоящее время я изучаю все возможности Hadoop и подобных.
Выполнение вышеуказанного запроса как mapreduce на BigTable выглядит достаточно просто: Просто сделайте "час" ключом, фильтруйте на карте и уменьшайте, суммируя значения.
Вы можете запустить такой запрос, как я показал выше (или, по крайней мере, с тем же выходом), что и система BigTable в режиме реального времени (то есть через пользовательский интерфейс и пользователь получает ответ ASAP) вместо пакетного режима
Если нет; какова соответствующая технология, чтобы сделать что-то подобное в области BigTable/Hadoop/HBase/Hive и подобных?