Этот вопрос касается того, что я считаю очень распространенной проблемой в разработке Android/iOS, но пока не нашел «стандартного» решения.Синхронизация клиент-сервер через REST
Предположим, что у нас нормальный REST API. База данных сервера содержит (среди прочих) таблицы countries
и towns
с отношением 1: N.
Клиент (мобильное приложение) хочет сохранить локальный снимок этих двух таблиц. Таким образом, когда он отключен, он может выполнять запросы, которые обычно выполняются над REST, например: «получить список австрийских городов с населением> = 100»?
Как подойти к этому?
Первая проблема: консистенция. Клиент должен иметь моментальный снимок двух таблиц. Если клиент загружает обновления таблицы towns
и переходит в автономный режим, некоторые города могут ссылаться на страну, которая не находится в локальной копии таблицы countries
.
Вторая проблема: клиент должен загружать только новые/удаленные/измененные строки. Отключите REST и используйте какой-то пользовательский вызов RPC, например get_updates_since(...)
?
Третья проблема: как следует синхронизировать локальные изменения в копии базы данных клиента (возможно, в автономном режиме) с сервером? Пользовательские вызовы RPC?
meaby [IT] (http://www.dmytrodanylyk.com/android-data-sync-part-2/?utm_source=Android+Weekly&utm_campaign=55f0ff46e4-Android_Weekly_201&utm_medium=email&utm_term=0_4eb677ad19-55f0ff46e4-337928757) поможет – murt