Как/чем аггрегировать большие объемы данных (а в реалтайме?)?

Есть несколько серверов, на них postgresql. В таблицу в них валятся логи - примерно по тысячи записей/секунду.
Нужно написать к ней статистику. Сатистика представляет собой GROUP BY по нескольким произвольным полям и суммирование значений полей, за произвольный период времени.
Проблема... На каждом сервере это занимает непозволительно много времени - если взять интервал год - то будет на каждом выполняться по несколько минут (это еще быстро, т.к. есть индексы по всем полям), а групповая статистика - уже боль и страдание - из-за больших объемов уже лежащих данных, который к тому же быстро растет. А пользователю всё это надо отдавать в разумное время.

Какие есть решения по аггрегации данных?
Посматриваю на hadoop (для меня это скорее волшебное слово), но что конкретно использовать из его экосистемы не знаю.

Что-то похожее я вижу у Influxdb... Но как я понимаю, там основной упор сделан на timeseries, и аггрегация данных по произвольным полям будет не быстрее.

В качестве бонуса, может есть решения по реалтайм аггрегации?
  • Вопрос задан
  • 2855 просмотров
Пригласить эксперта
Ответы на вопрос 4
begemot_sun
@begemot_sun
Программист в душе.
Посмотрите в сторону OLAP . Это как-раз аггрегация данных в различных разрезах.
Ответ написан
Комментировать
dizballanze
@dizballanze
Software developer at Yandex
leahch
@leahch
3Д специалист. Долго, Дорого, Дерьмово.
А что значит "реалтайм агрегация"? Мы же не можем в реальном времени агрегировать по непонятным условиям... Если хоть какие-то параметры имеются, то можно использовать хранилища key/value типа redis или mongo. А если нужны отчеты в виде графиков, то настоятельно рекомендую посмотреть в сторону graphite. Ну и как минимум можно агрегацию кластеризовать методом map/reduce.
Ответ написан
Комментировать
@realfreeman
Привет.
Ну как вариант можно действительно использовать hadoop. Только вот ничего даже близкого к realtime вы не получите. Ну по крайней мере просто и быстро по времени реализации (можно конечно попробовать hive over spark).
Как вариант рассмотрите cassandra.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы