Клиент-серверная синхронизация через REST
Этот вопрос о том, что, на мой взгляд, является очень распространенной проблемой в разработке под Android / iOS, но я пока не нашел "стандартного" решения.
Допустим, у нас довольно нормальный REST API. База данных сервера содержит (среди прочего) таблицыcountries
а такжеtowns
с отношением 1: N.
Клиент (мобильное приложение) хочет сохранить локальный снимок этих двух таблиц. Чтобы в автономном режиме он мог выполнять запросы, которые обычно выполняются через REST, например: «получить список австрийских городов с населением> = 100»?
Как подойти к этому?
Первая проблема: последовательность. У клиента должен быть снимок двух таблиц. Если клиент загружает обновленияtowns
переходит в автономный режим, некоторые города могут ссылаться на страны, которых нет в локальной копииcountries
Таблица.
Вторая проблема: клиент должен загружать только новые / удаленные / измененные строки. Откажитесь от REST и используйте несколько пользовательских вызовов RPC, таких какget_updates_since(...)
?
Третья проблема: как синхронизировать локальные изменения в клиентской копии базы данных (возможно, в автономном режиме) с сервером? Пользовательские вызовы RPC?