Управление основными данными Журналы транзакций iCloud - PullRequest
11 голосов
/ 02 января 2012

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

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

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

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

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

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

1 Ответ

3 голосов
/ 19 января 2012

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...