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.sqlund 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.sqlund 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?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage