Задать вопрос

Агрегация большого кол-ва записей из БД?

В общем суть такая, есть сырые данные от пользователей (дата, какой раздел открывал, какое действие совершал, продолжительность нахождения в разделах и т.п.) которые непрерывно пишутся в таблицу (сейчас это MySQL). Примерно 200 миллионов записей и оно неуклонно растет, к концу года будет уже 400-500 миллионов.

На основе этих данных, необходимо строить различные отчеты по неделям, месяцам, кварталам, годам и т.п. (Sum, AVG, Count, Count Distinct и т.п).

Понятно, что напрямую запросы не идут, т.к. очень тяжелые, сначала данные агрегируются в другие таблицы, проблема в том, что если агрегация определенных данных в разрезе месяца занимает несколько минут, то в разрезе года это несколько часов или даже дней (запросы к MySQL, индексы есть, они тут не спасают).

Какие тут могут быть решения? Вообще что обычно используют для сбора и аналитики подобных статистических данных? Уместно ли вообще использовать MySQL для хранения постоянного потока данных (думаю что нет)?
  • Вопрос задан
  • 1734 просмотра
Подписаться 8 Средний 3 комментария
Ответ пользователя sim3x К ответам на вопрос (6)
sim3x
@sim3x
Зачем raw-data вообще хранится в мускуле?

Такое нормально скидывается в текстовик и жмется архиватором

А в мускул кладется инфа в 3NF
Тогда и запросы будут идти секунды (на адеквктном железе и настройках)
Ответ написан