Synchronizacja klient-serwer nad REST

To pytanie dotyczy tego, co uważam za bardzo powszechny problem w rozwoju Androida / iOS, ale nie znalazłem jeszcze żadnego „standardowego” rozwiązania.

Powiedzmy, że mamy dość normalny REST API. Baza danych serwera zawiera (między innymi) tabelecountries itowns z relacją 1: N.

Klient (aplikacja mobilna) chce zachować lokalną migawkę tych dwóch tabel. Czyli gdy jest offline, może wykonywać zapytania, które normalnie byłyby wykonywane przez REST, np .: „uzyskać listę austriackich miast o populacji> = 100”?

Jak do tego podejść?

Pierwszy problem: spójność. Klient powinien mieć migawkę dwóch tabel. Jeśli klient pobierze aktualizacjetowns i przejdzie do trybu offline, niektóre miasta mogą odwoływać się do kraju, którego nie ma w lokalnej kopiicountries stół.

Drugi problem: klient powinien pobierać tylko nowe / usunięte / zmienione wiersze. Porzuć REST i użyj niestandardowego wywołania RPC, takiego jakget_updates_since(...)?

Trzeci problem: w jaki sposób lokalne zmiany w kopii bazy danych klienta (ewentualnie w trybie offline) powinny być zsynchronizowane z serwerem? Niestandardowe połączenia RPC?

questionAnswers(2)

yourAnswerToTheQuestion