0

Мы создаем программное обеспечение для управления вызовами, которое позволяет различным людям получать вызовы, назначенные им, которые они могут редактировать на мобильном телефоне, а затем закрыть вызов с мобильного, который получает синхронизируется с сервером для центрального администратора для мониторинга. Для линейного потока данных i.e вызов, созданный на сервере> отправленный на мобильный> обновленный на мобильном телефоне>, отправленный обратно на сервер, мы смогли установить поток данных, и все в порядке.Синхронизация базы данных между клиентом (android) и сервером (rails PostgreSQL)

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

Аналогия, которую я могу извлечь, - это с git и версией кода (вытащите, прежде чем нажимать), но могут возникнуть конфликты слияния, которые необходимо решить вручную.

Оцените любую информацию об этой проблеме.

ps: Реализация на SQLite в android и PostgreSQL (рубины на рельсах) с мобильным доступом к структуре данных с сервера, хранящей соответствующие идентификаторы записей с сервера, для вызова API REST для обновления данных на сервере.

ответ

0

Таким образом, нам удалось написать множество пользовательских API для обработки всего обмена данными между сервером и клиентами. Мы придумали настраиваемое разрешение конфликтов, которое описывало более высокий приоритет для всех полей данных, редактируемых с мобильного устройства, поэтому каждый раз, когда данные синхронизируются с мобильным телефоном, данные с более высоким приоритетом сохраняются (т. Е. Если мобильный телефон изменил эти поля, то эти значения сохраняется, даже если сервер также изменил данные). Также мы делаем вывод данных с сервера перед редактированием данных на мобильном телефоне, чтобы обеспечить доступность последних данных. Это согласуется с бизнес-логикой, которую мы пытаемся реализовать, поэтому не можем обобщить это.