Клиент-серверная синхронизация через REST

Этот вопрос о том, что, на мой взгляд, является очень распространенной проблемой в разработке под Android / iOS, но я пока не нашел "стандартного" решения.

Допустим, у нас довольно нормальный REST API. База данных сервера содержит (среди прочего) таблицыcountries а такжеtowns с отношением 1: N.

Клиент (мобильное приложение) хочет сохранить локальный снимок этих двух таблиц. Чтобы в автономном режиме он мог выполнять запросы, которые обычно выполняются через REST, например: «получить список австрийских городов с населением> = 100»?

Как подойти к этому?

Первая проблема: последовательность. У клиента должен быть снимок двух таблиц. Если клиент загружает обновленияtowns переходит в автономный режим, некоторые города могут ссылаться на страны, которых нет в локальной копииcountries Таблица.

Вторая проблема: клиент должен загружать только новые / удаленные / измененные строки. Откажитесь от REST и используйте несколько пользовательских вызовов RPC, таких какget_updates_since(...)?

Третья проблема: как синхронизировать локальные изменения в клиентской копии базы данных (возможно, в автономном режиме) с сервером? Пользовательские вызовы RPC?

Ответы на вопрос(2)

Ваш ответ на вопрос