LINUX.ORG.RU

синхронизация двух БД

 


0

2

хочется получить набор одинаковых таблиц и содержимого на сервере и клиенте (мобилка (две) + вэб)

вопрос: есть какие-то готовые решения? или все все еще переизобретают велосипеды?

зы. ну понятно, есть связь, нет связи, пишут с друх сторон, клиент хочет отправить сообщеньку, сервер хочет что-то обновить.

Думаю, это на фабрику велосипедов, поскольку бог скрывается в деталях (когда в XX веке бога отменили, в них стал скрываться дьявол).

Как минимум, когда пишут с двух сторон, может возникнуть ситуация, когда при отсутствии связи в разных местах завели запись про Васю Пупкина с конфликтующими значениями. Когда связь появляется, становится понятно, что этот конфликт надо разрулить. Разрулить это идеально и автоматически нельзя.

Кроме того, иногда не пофиг, есть связь или нет. Например, если ты бронируешь последний билет на поезд, то нельзя считать, что ты его забронировал успешно, когда ты это сделал только на своей мобилке без связи. Или, например, денежный перевод.

den73 ★★★★★ ()
Последнее исправление: den73 (всего исправлений: 1)

Нету. Я про адекватные не слышал. Есть куча решений плана «просто добавь воды», то есть, напиши оставшиеся 99% кода сам. А вот так, чтобы фундаментально и вместо тебя...
https://github.com/automerge/automerge — близко к твоей тематике или нет?

byko3y ★★★ ()
Последнее исправление: byko3y (всего исправлений: 1)

есть какие-то готовые решения?

Есть. Называется отсоединённый набор данных. Модель портфеля. Когда пользователь может работать, отключившись от базы, модифицируя рабочий набор у себя локально, а после подключения к базе будет осуществлена синхронизация локальных данных у пользователя и на сервере с разрешением колизий записей.

iZEN ★★★★★ ()

https://raft.github.io/ например

Кроме того, описанная вами проблема с переменным успехом решается в блокчейнах.

В общем случае, проблема, естественно, либо неразрешима, либо консенсус ведет к неприемлемым проблемам с производительностью.

biglpfan ()