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