Синхронизация данных между двумя хранилищами

Есть сайт, основная БД - MYSQL, прикручиваю поиск по сущностям, которые часто обновляются и добавляются новые. Elastic получается как второе хранилище данных. Вопрос. как избежать неконсистентности данных? то есть, в mysql одни значения в elastic другие, такое происходит из за гонки, когда приходят два конкурирующих запроса на обновление 1 сущности, в первом хранилище запрос оказался первым, втором второй запрос стал первым и данные побились. Можно строить очереди запросов, но это сильно скажется на производительности, и тогда появится задержка, что добавлено в mysql, еще нет в elastic, что по сути тоже рассинхрон данных. Кто как решал? Есть ли какие то мысли?

Теоретически, решить эту задачу не возможно так как elasticsearch не поддерживает транзакции. Поэтому всегда есть возможность, что в какой-то момент, что-то сработает в MySQL, но не сработает в elasticsearch или наоборот.

На практике, я бы начал с чтения этих блог постов. Если будут дополнительные вопросы - спрaшивайте.

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.