Оценка стратегии синхронизации основных данных с 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? Если да, объясните, пожалуйста, почему?

Ответы на вопрос(1)

Ваш ответ на вопрос