Zonor
@Zonor
Начинающий веб программист

Выбор базы данных для быстрой записи меняющихся данных?

Задача сделать что то похожее на майскор, сайт на котором показаны все коэффициенты по спортивным событиям. Соответственно получать их буду по api. Нет сервисов выдающих сразу одним запросом все. То есть сначала получить список событий, а потом получить коэффициенты по каждому событию по api. То есть будет очередь запросов. Я думал взять под это дело редис, так как в сохранности данных нужды нет, но есть нужда в быстрой записи, так как каждые 2-3 секунды нужно писать изменённые коэффициенты по 50-300 событиям в лайве. И держать информацию актуальной. Коэффициенты не всегда изменяются, значит нужно будет проверять, изменился ли коэффициент, и если нет - то не записывать. А если да - то определить вырос он или понизился, чтобы можно было отрисовать это на фронтенде. Я не уверен что MySQL подойдёт для этого. Так же думал про кликхаус, но пока мало с ним знаком, не знаю подойдёт ли.
Вообщем получается что нужно:
- Запрос по api всех событий (node js, асинхронно)
- дальше очередь запросов по каждому событию раз в 3 секунды (их может быть и 200 и 300, по прематчу раз в минуту запросы, может быть до 3000 событий)
- запись в бд события с коэффициентами, с проверкой изменилось ли что то или нет. И ответ с изменёнными данными.
То есть раз в 3 секунды обработка и запись 300 событий. И раз в минуту добавляется запись 3000 событий.
Сможет ли MySQL и я зря беспокоюсь, или редис все же лучше подходит под это дело. Может кто имел опыт разработки чего то подобного, или может знает как работают такие сервисы, или кто то писал что то подобное, подскажите куда копать пожалуйста :)
  • Вопрос задан
  • 205 просмотров
Решения вопроса 3
@Vitsliputsli
Это не должно быть проблемой для Mysql, это очень быстрая СУБД. С учётом, что это временные значения, которые не нужно хранить постоянно, то и классическая СУБД не нужна. Поэтому берите Redis. А Clickhouse это аналитическая СУБД, это здесь вообще не причём.
Ответ написан
Комментировать
SagePtr
@SagePtr
Еда - это святое
Если сохранность данных не нужна, то можно прямо в памяти держать нужную информацию
Ответ написан
@KingstonKMS
Для хранения/обновления/получения актуальных значений используйте redis, для сохранения истории mysql.
Nodejs по апи забирает исходные данные и обновляет их в redis, из редиса данные берутся во фронтенд и отдельным микросервисом складываются в mysql
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Miron11
Пишу sql 20 лет. Срок :)
и что, вы взяли коэффициент к в 0 часов, ав 0 часов 1'' коэффициент k поменялся k`, и кто-то тем старым коэффициентом k воспользовался.
Вы серьезно ок забыть, какой он был?
Наверное даже во время запроса по списку, часть коэффициентов изменится, по мере считывания, при том, что все, как задумано,но по-честному Вам бы наверное хотелось список "к" в 0 часов список в 0 часов + 1 версия + 2 ... n версия.
Учитывая 300 значений/3 секунды по 32 бита на каждый получаем 1,2МБ в час. В принципе копейки для MySQL
Редиску можно встроить для текущего слепка, если хочется немедленный ответ из буфера.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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