Evaluierung einer Strategie zur Synchronisation von Core-Daten mit Dropbox
In dieser Frage geht es um die Verwendung von Dropbox zum Synchronisieren eines SQLite-Core-Datenspeichers zwischen mehreren iOS-Geräten. Betrachten Sie diese Anordnung:
Eine App verwendet einen Core Data Store, nennen Sie eslocal.sql
, in der eigenen App gespeichertNSDocumentDirectory
Die App verwendet die Dropbox Sync-API, um eine bestimmte Datei in der Dropbox des Benutzers zu beobachten, z.user/myapp/synced.sql
Die App beobachtetNSManagedObjectContextDidSaveNotification
, und bei jedem Speichern wird es kopiertlocal.sql
zuuser/myapp/synced.sql
und ersetzt dadurch letztere.
Wenn die Dropbox-API uns das mitteiltsynced.sql
geändert, machen wir mehr oder weniger das Gegenteil von Teil 3: Den Core Data Stack abreißen, ersetzenlocal.sql
mitsynced.sql
und erstellen Sie den Core Data Stack neu. Der Benutzer sieht in der Zwischenzeit "Synchronisieren" oder "Laden" in der Benutzeroberfläche.
Fragen:
A. Ist diese Regelung in dem Maße ineffizient, in dem sie vollständig vermieden werden sollte? Was ist, wenn wir garantieren können, dass die Datenbank nicht groß ist?
B. Fördert diese Anordnung die Beschädigung von Dateien? Mehr als nur Synchronisation über Deltas / Changelogs? Wenn ja, erklären Sie bitte ausführlich, warum?