Структура синхронизации данных / алгоритм для сервера <-> устройства? - PullRequest
8 голосов
/ 25 марта 2009

Я хочу реализовать синхронизацию данных между серверами и распределенными клиентами. Источником данных на сервере является mysql с django сверху. Клиент может меняться. Обновления могут выполняться как на клиенте, так и на сервере, и соединение между сервером и клиентом ненадежно (например, изменения могут быть сделаны на отключенном сотовом телефоне, который должен синхронизироваться при повторном подключении сотового телефона). *

S. Лотт предлагает использовать шаблон проектирования управления версиями в в этом вопросе , что имеет смысл. Мне интересно, если есть какие-либо существующие пакеты / реализации этого я могу использовать. Или я должен напрямую использовать svn / git / etc?

Есть ли другие альтернативы? Должны быть рамки синхронизации или подробные описания алгоритмов, но мне не повезло, что я их нашел. Буду признателен, если вы укажете мне правильное направление.

Ответы [ 2 ]

1 голос
/ 05 июня 2009

У AFAIK нет универсального решения этой проблемы, в основном из-за различных требований к синхронизации.

В одном из наших более ранних проектов мы реализовали механизм синхронизации на основе Spring * , основанный на последнем обновленном поле отметки времени в каждой из таблиц (которые участвуют в синхронизации).

Я слышал о SyncML , но не имею большого опыта с этим.

Если у вас один сервер и несколько клиентов, вы можете подумать о подходе на основе JMS. Данные объединяются и помещаются в очереди (или разделы), и их будут получать клиенты.

В вашем случае, поскольку обновления носят двунаправленный характер, вам также необходимо учитывать обнаружение конфликтов. Это приносит дополнительные сложности.

1 голос
/ 05 июня 2009

Возможно, достаточно простого старого rsync .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...