Оценка стратегии синхронизации основных данных с Dropbox
Этот вопрос касается использования Dropbox для синхронизации хранилища базовых данных sqlite между несколькими устройствами iOS. Рассмотрим эту договоренность:
Приложение использует хранилище Core Data, назовите егоlocal.sql
, сохраненные в приложениис собственнымиNSDocumentDirectory
Приложение использует API-интерфейс синхронизации Dropbox, чтобы наблюдать определенный файл вs Dropbox, скажем,user/myapp/synced.sql
Приложение наблюдаетNSManagedObjectContextDidSaveNotification
и при каждом сохранении копируетlocal.sql
вuser/myapp/synced.sql
тем самым заменив последний.
Когда API Dropbox уведомляет нас, чтоsynced.sql
изменилось, мы делаем противоположность части 3 более или менее: разрушить стек основных данных, заменитьlocal.sql
сsynced.sql
и воссоздать стек основных данных. Пользователь видитСинхронизации" или же "Loading» в интерфейсе тем временем.
Вопросы:
A. Является ли эта договоренность чрезвычайно неэффективной в той степени, в которой ее следует полностью избегать? Что, если мы можем гарантировать, что база данных не является большой по размеру?
B. Способствует ли этот механизм повреждению файлов? Больше, чем синхронизация через deltas / changelogs? Если да, объясните, пожалуйста, почему?