Ответ
Миграция базы данных — это управляемое изменение схемы БД (таблиц, столбцов, отношений) для перехода от одной версии к другой без потери существующих данных.
Зачем нужна:
- Добавление нового поля в таблицу.
- Переименование таблицы или столбца.
- Изменение типа данных.
- Нормализация или денормализация схемы.
Типы миграций в Core Data:
- Легковесная миграция (Lightweight Migration):
- Выполняется автоматически Core Data при совместимых изменениях (добавление optional-атрибута, новой сущности, нового отношения).
let options: [AnyHashable: Any] = [ NSMigratePersistentStoresAutomaticallyOption: true, NSInferMappingModelAutomaticallyOption: true ] // Эти опции включают автоматическое создание маппинг-модели и миграцию.
- Выполняется автоматически Core Data при совместимых изменениях (добавление optional-атрибута, новой сущности, нового отношения).
- Тяжёлая миграция (Heavyweight/Mapping Migration):
- Требуется при несовместимых изменениях (удаление атрибута, изменение типа non-optional атрибута, сложные преобразования данных).
- Необходимо вручную создать Mapping Model (
.xcmappingmodelфайл) для описания преобразований.
Лучшие практики:
- Версионирование модели данных: Создавайте новую версию
.xcdatamodelдля каждого изменения схемы. - Резервное копирование: Перед миграцией на production создавайте бэкап БД.
- Тестирование: Всегда тестируйте миграцию на реалистичных данных в среде, идентичной production.