В какой базе данных хранить одну большую таблицу?

Привет!

Есть данные, одного типа, но их очень много. По сути, это события из системы метрик - у события есть timestamp, и с пяток полей описания. У событий только один тип, по сути это JSON документы.

Надо что-то, где можно будет события хранить (по сути это одна таблица), данных очень много (сотни миллионов, миллиарды строк) и за разумное время делать выборку (например, выбрать все записи с host = foobar, или с type = emergency).

Где разумнее всего такое хранить? Mongodb? Riak? Couchdb? Plain old SQL?

Спасибо!
  • Вопрос задан
  • 729 просмотров
Пригласить эксперта
Ответы на вопрос 3
sim3x
@sim3x
Postgresql

json разложить по таблицам (нормализовать -- избавиться от повторяющихся текстовых значений), сделать индексы, при необходимости, сделать партиционирование
Ответ написан
@lega
У Яндекса есть clickhouse для метрик, можете попробовать.

Какое железо хотите под это дело использовать?
миллиарды строк
например 10 миллиардов могут занять 600Гб на диске, один индекс 100-600Гб (оперативы), больше индексов - больше памяти. Т.е. тут стандартные подходы не рулят.

Я для подобного делал партицирование + сжатие + пред-кеширование, итого 600Гб превратились бы в 10Гб на диске и 0,4Гб на индексы. Ну и скорость выборки выросла в ~100 раз по сравнению с обычным подходом (выбирать по строкам из таблицы).
Ответ написан
Попробовать поискать на тему "time series database" (TSDB): может всякие типа Akumuli, InfluxDB и прочие.
Такие СУБД лучше справляются с большими объёмами данных временных рядов, нежели обычные РСУБД типа Постгрес.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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