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