Bandicoot
@Bandicoot
Вась-программист

Как грамотно организовать работу с большим количеством интенсивно обновляемых данных?

Суть проблемы: есть набор данных объемом в несколько сотен тысяч строк (десятков мегабайт), если разместить их в таблицу БД MySQL. Эти данные нужно получать со стороннего источника несколько раз в минуту, на лету производить переформатирование и некоторую аналитику, затем сохранять у себя - закешированные данные должны быть доступны в любой момент времени.

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

Пока остановился на решении с Redis, сохранении данных в оперативной памяти. В целом все работает, но является ли этот способ лучшим решением проблемы? Оперативная память тоже не бесплатная и не бесконечная. Подскажите, кто сталкивался.
  • Вопрос задан
  • 195 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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