Sincronización cliente-servidor sobre REST
Esta pregunta es sobre lo que creo que es un problema muy común en el desarrollo de Android / iOS, pero todavía no he encontrado ninguna solución "estándar".
Digamos que tenemos una API REST bastante normal. La base de datos del servidor contiene (entre otras) las tablas.countries
ytowns
con una relación 1: N
El cliente (aplicación móvil) desea mantener una instantánea local de estas dos tablas. De modo que cuando está fuera de línea, puede hacer consultas que normalmente se realizarían sobre REST, por ejemplo: "obtener una lista de ciudades austriacas con población> = 100"?
¿Cómo abordar esto?
Primer problema: la consistencia. El cliente debe tener una instantánea de las dos tablas. Si el cliente descarga actualizaciones de latowns
y se desconecta, algunas ciudades pueden hacer referencia a un país que no se encuentra en la copia local delcountries
mesa.
Segundo problema: el cliente solo debe descargar las filas nuevas / eliminadas / modificadas. Deshazte del RESTO y usa alguna llamada RPC personalizada comoget_updates_since(...)
?
Tercer problema: ¿cómo deben sincronizarse los cambios locales en la copia de la base de datos del cliente (posiblemente sin conexión) con el servidor? ¿Llamadas RPC personalizadas?