TDB Documentation portal logo
Помощь
Обновлена 30 июля 2026 г. в 16:49

Миграция данных с помощью space:upgrade()

Метод space:upgrade() позволяет вносить несовместимые изменения в формат спейса, например изменить название спейса или удалить его.

Особенности метода space:upgrade()

Метод space:upgrade() принимает следующие аргументы:

  • format: новый формат спейса. Он может конфликтовать с предыдущим, но индексируемые поля должны быть неизменными. Данные, записываемые в спейс, должны соответствовать новому формату во время миграции.
  • func: название функции выполнения миграций. Функция должна быть персистентной. Она принимает исходный кортеж, а возвращает измененный кортеж. Функция должна быть идемпотентной, чтобы избежать ошибки миграции или получения некорректных данных при чтении данных из спейса во время миграции. а из этого следует, что func может быть применена к tuple несколько раз.
    • mode: режим работы space:upgrade. Возможные значения:
      • dryrun — проверка корректности миграции. Функция func выполняется на каждом кортеже, но данные не меняются;
      • upgrade — обновление данных;
      • dryrun+upgrade — запуск проверки миграции, после которой при отсутствии ошибок выполняется upgrade.
  • is_async - булевый флаг неблокируемого выполнения space:upgrade().

space:upgrade() возвращает объект future. По нему можно узнать статус миграции (future:info), отменить миграцию (future:cancel) или дождаться окончания миграции (future:wait).

Подробная информация о методе space:upgrade() приведена в документации Tarantool.