Как и где правильно хранить большое количество данных, поступающих из API?

Пишу приложение, которое тянет данные из апи, производит какие-то вычисления на стороне сервера и выдает пользователю, каждые 5-10 секунд.

Это некоторый объем числовых данных (от 5 до 15 пунктов), но, обновляемый каждые 5 или 10 секунд. Мне требуется показывать график в реально времени, его изменение и тд, различные круговые диаграммы, в общем статистику. Все графики на сайте имеют срок актуальности в один день, то есть каждый следующий день он заново перезаписывается, и показывается на сайте.

Я подумал сначала сохранять все эти данные в базу, потом их перезаписывать, но вполне возможно, что потребуется просто собирать эти данные для анализа.

Итак, если брать обычную бд, то за день таких данных с API накапает от 28 800 до 57 600 строк. И таких категорий данных у меня 3 (то есть 57к * 3).

Все это дело работает через вебсокеты, сервер просто отдает всем клиентам сформированный json, который каждые 5-10 секунд тянется из базы.

Я подумал, что можно, в принципе, данные для графика записывать только раз в минуту тогда получаем 4 320 записей в 3 таблицы (для каждой категории своя таблица) только для графиков, объем информации серьезно сокращается, однако, мне кажется к 23 часу ночи каждого дня не слишком круто вытягивать из базы почти 1440 записей и на его основе генерировать json массив и передавать его каждую минуту клиентам.

Я знаю, что есть базы с миллионами данными и все они нормально обрабатываются, но как поступить в моей ситуации? Будет ли это все дело сильно напрягать такой сервак: CPU: Xeon 1 core Память: 1 Gb Диск (ssd): 10 Gb? Есть ли какие-то статьи, что разобраться с методикой хранения и обработки большого количества данных? Может быть все мои сомнения напрасны и все будет быстро работать?
  • Вопрос задан
  • 133 просмотра
Решения вопроса 2
proudmore
@proudmore
Диска, конечно, хотелось бы побольше. Но вообще, такие объемы при грамотных индексах не проблема от слова совсем. В крайнем случае, можете по крону раз в неделю архивировать записи и чистить таблицу, если будет какая-то чувствительная просадка производительности.
Ответ написан
Комментировать
dasha_programmist
@dasha_programmist
ex Software Engineer at Reddit TS/React/GraphQL/Go
Есть специализированная БД InfluxDB
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы