Evaluación de una estrategia para sincronizar Core Data con Dropbox
Esta pregunta trata sobre el uso de Dropbox para sincronizar un almacén de datos principales de sqlite entre varios dispositivos iOS. Considere este arreglo:
Una aplicación utiliza un almacén de Core Data, llámalolocal.sql
, guardado en la propia aplicaciónNSDocumentDirectory
La aplicación utiliza la API de sincronización de Dropbox para observar un determinado archivo en el Dropbox del usuario, por ejemplo,user/myapp/synced.sql
La aplicación observaNSManagedObjectContextDidSaveNotification
, y en cada copia se guarda.local.sql
auser/myapp/synced.sql
, sustituyendo así a este último.
Cuando la API de Dropbox nos notifica quesynced.sql
cambiado, hacemos lo opuesto a la parte 3 más o menos: arrancar la pila de Datos del Núcleo, reemplazarlocal.sql
consynced.sql
, y recrear la pila Core Data. El usuario ve "Sincronizar" o "Cargando" en la interfaz de usuario mientras tanto.
Preguntas:
A. ¿Es esta disposición enormemente ineficiente, en la medida en que debe evitarse por completo? ¿Qué pasa si podemos garantizar que la base de datos no es de gran tamaño?
B. ¿Es este arreglo conducente a la corrupción del archivo? ¿Más que sincronizar vía deltas / changelogs? Si es así, ¿podría explicar en detalle por qué?