Sincronización bidireccional entre la aplicación para iPhone y la aplicación web

Tengo una aplicación web que se basa en una base de datos MySQL, para lo cual estoy pensando en crear una aplicación para iPhone. Esta aplicación permitiría a los usuarios navegar / insertar / actualizar / eliminar datos en su cuenta en la aplicación web.

La forma más fácil sería construir la aplicación para iPhone simplemente como una interfaz para la aplicación web, es decir, cada operación requiere estar conectado a la web. Sin embargo, me gustaría que la aplicación para iPhone tenga su propia versión "fuera de línea" de la base de datos. Esto no solo permitiría al usuario trabajar sin conexión, sino que también proporcionaría una mejor experiencia, ya que tener todo localmente significa una aplicación más rápida y receptiva.

Manejaría los conflictos usando una marca de tiempo y manteniendo la última versión (ya uso la eliminación por software, es decir, cuando el usuario elimina un registro, simplemente configuro una bandera), pero no he descubierto cómo manejar las inserciones. De hecho, si el usuario inserta nuevos elementos en las bases de datos fuera de línea (aplicación para iPhone) y en línea (aplicación web), habrá un conflicto de clave principal (todas mis tablas tienen un campo INTEGER con incremento automático como clave principal). ¿Cómo puedo manejar este problema?

Estaba pensando en tener una clave principal de dos columnas, una es el número entero auto-incrementado y la segunda es específica del "dispositivo". De esta forma, los nuevos registros agregados a través de la aplicación web tendrían ID 1-web, 2-web, etc. y los creados a través de la aplicación para iPhone 1-iphone, 2-iphone, etc. Esto permitiría fusionar los dos. bases de datos sin tener conflictos. Qué piensas de esta idea ?

Respuestas a la pregunta(1)

Su respuesta a la pregunta