Bandicoot
@Bandicoot
Backend-разработчик (PHP)

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

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

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

Пока остановился на решении с Redis, сохранении данных в оперативной памяти. В целом все работает, но является ли этот способ лучшим решением проблемы? Оперативная память тоже не бесплатная и не бесконечная. Подскажите, кто сталкивался.
  • Вопрос задан
  • 181 просмотр
Пригласить эксперта
Ответы на вопрос 1
zettend
@zettend
Дизайн. Разработка. Бизнес!
Текущая скорость SSD тебе позволит обрабатывать сотни мегабайт в секунду. Любой многопоточный обработчик Node JS на Raspberry Pi будет чувствовать себя хорошо.

То, что вы написали будет себя хорошо чувствовать на любом хостинге за доллар.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
17 окт. 2019, в 03:16
37500 руб./за проект
16 окт. 2019, в 22:58
3200 руб./за проект
16 окт. 2019, в 22:43
3000 руб./за проект