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