Управление журналами транзакций iCloud Core Data

Я использую iCloud с базовыми данными на основе дизайна приложения SQLite "Библиотечный стиль", как указано Apple. Хотя базовая функциональность работает очень хорошо, меня беспокоят журналы транзакций и способы их управления.

В то время как база данных для моего приложения невелика, она очень активна, и основной стек данных сохраняется много раз, пока приложение используется. Я заметил, что для каждого сохранения основных данных создается новый журнал транзакций. Конечным результатом является то, что у меня есть TON журналов транзакций, и они занимают гораздо больше места, чем фактическая база данных.

1) Всегда ли журналы транзакций автоматически обрезаются/объединяются, или они будут продолжать расти на неопределенный срок, в конечном счете, числиться в тысячах и занимать много мегабайт? Кажется, что единственный способ вручную очистить журналы транзакций и воссоздать архив .baseline - это отключить, а затем снова включить iCloud (удаление контейнера вездесущности и начало нового). Но это, очевидно, не очень хорошее решение.

2) Моя текущая архитектура часто сохраняет основной стек данных даже для незначительных изменений. В целом, это имеет смысл, так как моя база данных небольшая, и сохранение часто гарантирует, что файл базы данных всегда обновляется. Однако, учитывая вышеупомянутые проблемы с журналами транзакций, я думаю, что я, возможно, должен свести к минимуму сохранение базы данных. Возможно, это происходит по времени и/или в состояниях перехода приложений.

3) Даже если я минимизирую количество журналов транзакций, уменьшив, как часто я сохраняю базу данных, здесь, похоже, проблема, так как журналы будут продолжать расти со временем. В конечном итоге преимущество "журнала транзакций" станет бременем с точки зрения объема используемого хранилища iCloud и добавления начальной синхронизации iCloud в качестве нового устройства.

Поскольку Apple предоставила очень редкую информацию о iCloud и почти ничего в виде "лучших практик", я был бы признателен за понимание со стороны сообщества.

Ответ 1

Я подал радар по этому вопросу и получил следующий ответ. Они отметили, что он должен корректно работать в iOS 5.1, хотя я еще не подтвердил это сам.

Прояснение для любого, кто может неправильно понять следующее. Журналы транзакций будут очищены внутренними внутренними данными. Это НЕ то, что должно выполняться самим приложением.

Инженерия предоставила следующие отзывы по этой проблеме:

Журналы транзакций предназначены для удаления после того, как все активные сверстники имели возможность прочитать их, и они превышают порог занимаемое пространство. Был предыдущий вопрос, который помешал устройствам от правильного выполнения.