Я использую iCloud с базовыми данными на основе дизайна приложения SQLite "Библиотечный стиль", как указано Apple. Хотя базовая функциональность работает очень хорошо, меня беспокоят журналы транзакций и способы их управления.
В то время как база данных для моего приложения невелика, она очень активна, и основной стек данных сохраняется много раз, пока приложение используется. Я заметил, что для каждого сохранения основных данных создается новый журнал транзакций. Конечным результатом является то, что у меня есть TON журналов транзакций, и они занимают гораздо больше места, чем фактическая база данных.
1) Всегда ли журналы транзакций автоматически обрезаются/объединяются, или они будут продолжать расти на неопределенный срок, в конечном счете, числиться в тысячах и занимать много мегабайт? Кажется, что единственный способ вручную очистить журналы транзакций и воссоздать архив .baseline - это отключить, а затем снова включить iCloud (удаление контейнера вездесущности и начало нового). Но это, очевидно, не очень хорошее решение.
2) Моя текущая архитектура часто сохраняет основной стек данных даже для незначительных изменений. В целом, это имеет смысл, так как моя база данных небольшая, и сохранение часто гарантирует, что файл базы данных всегда обновляется. Однако, учитывая вышеупомянутые проблемы с журналами транзакций, я думаю, что я, возможно, должен свести к минимуму сохранение базы данных. Возможно, это происходит по времени и/или в состояниях перехода приложений.
3) Даже если я минимизирую количество журналов транзакций, уменьшив, как часто я сохраняю базу данных, здесь, похоже, проблема, так как журналы будут продолжать расти со временем. В конечном итоге преимущество "журнала транзакций" станет бременем с точки зрения объема используемого хранилища iCloud и добавления начальной синхронизации iCloud в качестве нового устройства.
Поскольку Apple предоставила очень редкую информацию о iCloud и почти ничего в виде "лучших практик", я был бы признателен за понимание со стороны сообщества.