кросс-платформенное обновление в реальном времени для мобильных телефонов - PullRequest
5 голосов
/ 27 ноября 2011

Я ищу способ синхронизации элементов, хранящихся в базе данных, среди пользователей. так что любой из этих пользователей что-либо меняет со своего телефона, это изменение будет отражено в базе данных и SYNC со всеми связанными с ним пользователями в режиме реального времени. Каков наилучший способ синхронизации в реальном времени? Отправить уведомление ? городской дирижабль, что я ищу?

Ответы [ 2 ]

1 голос
/ 27 ноября 2011

Точная синхронизация данных часто зависит от вашего приложения и ваших данных. Это выходит за рамки SO вопроса, но вот некоторые мысли, если вы реализуете свой собственный ...

Некоторые интересные моменты дизайна:

  • Надежно получая дельту
  • Работа с конфликтами
  • Насколько в режиме реального времени?

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

Можно ли рассчитывать на правильность часов устройства iOS?

Объединять новые сущности легко, но если несколько человек редактируют одну и ту же сущность, вам нужно решить, как объединить. Для конфликтов вы можете в порядке предпочтения (1) автоматическое объединение - придумать алгоритм, который автоматически объединяет содержимое без вмешательства пользователя и в идеале без потери данных (2) полагаться на пользователя для объединения с интерфейс и (3) форма автоматического слияния: последняя запись выигрывает. Также есть варианты, в которых вы чередуете ревизии - это форма побед последней записи, но ревизии сохраняются. Вы также можете автоматически объединить на уровне поля сущности, если это уместно. Мой пост на вопрос выше касается чередования, но это зависит от ваших данных.

Насколько реально в реальном времени? При синхронизации время от времени подключенных устройств устройства будут все дальше и дальше устареть, и потребуется время, чтобы наверстать упущенное. Рассмотрим пакетные наборы изменений в шаблоне связи для оптимизации, но это все равно не будет в реальном времени. Примите это во внимание в проекте - видит ли пользователь, что данные оживляются в текущих представлениях при синхронизации данных?

С архитектурной точки зрения вы, вероятно, захотите представить свои данные в облаке через службы REST или веб-службы SOAP, поскольку они кроссплатформенные. Для платформ с несколькими устройствами вы, скорее всего, в конечном итоге перенесете алгоритм синхронизации. Лучшее, на что вы можете надеяться, это использовать что-то вроде Sqlite, чтобы вы могли делиться кодом схемы базы данных ваших устройств и операторами SQL.

0 голосов
/ 27 ноября 2011

Я бы начал с презентации Дэна Гровера «Кроссплатформенная синхронизация данных»: http://iphone2009.crowdvine.com/talk/presentation_file/5104/Grover_Syncing.pdf

...