Что такое миграция базы данных (Database Migration)?

«Что такое миграция базы данных (Database Migration)?» — вопрос из категории Базы данных, который задают на 23% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Миграция базы данных — это управляемое изменение схемы БД (таблиц, столбцов, отношений) для перехода от одной версии к другой без потери существующих данных.

Зачем нужна:

  • Добавление нового поля в таблицу.
  • Переименование таблицы или столбца.
  • Изменение типа данных.
  • Нормализация или денормализация схемы.

Типы миграций в Core Data:

  1. Легковесная миграция (Lightweight Migration):
    • Выполняется автоматически Core Data при совместимых изменениях (добавление optional-атрибута, новой сущности, нового отношения).
      let options: [AnyHashable: Any] = [
      NSMigratePersistentStoresAutomaticallyOption: true,
      NSInferMappingModelAutomaticallyOption: true
      ]
      // Эти опции включают автоматическое создание маппинг-модели и миграцию.
  2. Тяжёлая миграция (Heavyweight/Mapping Migration):
    • Требуется при несовместимых изменениях (удаление атрибута, изменение типа non-optional атрибута, сложные преобразования данных).
    • Необходимо вручную создать Mapping Model (.xcmappingmodel файл) для описания преобразований.

Лучшие практики:

  • Версионирование модели данных: Создавайте новую версию .xcdatamodel для каждого изменения схемы.
  • Резервное копирование: Перед миграцией на production создавайте бэкап БД.
  • Тестирование: Всегда тестируйте миграцию на реалистичных данных в среде, идентичной production.