TDB Documentation portal logo
Помощь

Миграция схемы данных

Миграция — это любое изменение схемы базы данных и данных в ней, возникающее во время разработки. Примеры миграций: добавление и удаление поля или индекса, изменение формата поля, добавление персистентной функции.

В Tarantool DB загрузить миграции можно двумя способами:

  • в веб-интерфейсе Tarantool DB;
  • с помощью GraphQL (через POST-запрос).

В коде миграций на языке Lua описываются:

  • спейсы для хранения данных;
  • хранимые процедуры для доступа к данным с пользовательской логикой.

Дополнительная функциональность, например по устареванию данных или оценке производительности, доступна пользователю через встроенные технологические роли.

Подробная информация о миграциях в Tarantool приведена в соответствующем разделе документации Tarantool.

Способы выполнения миграции

В Tarantool DB выполнить миграции можно двумя способами:

  • в веб-интерфейсе Tarantool DB;
  • с помощью GraphQL.

Миграции выполняются в лексикографическом порядке, поэтому им рекомендуется давать нумерованные названия, например 0001_migration.lua или 2023_12_24_migr.lua. В примерах ниже используется файл миграции 002_test.lua.

Веб-интерфейс

  1. Откройте вкладку Code в меню слева.
  2. Добавьте в migrations/source файл миграции 002_test.lua.
  3. Скопируйте код из файла 002_test.lua в этот файл.
  4. Нажмите кнопку Apply.
  5. Конфигурация успешно применена.

GraphQL API

Для выполнения миграции запустите следующий запрос на изменение (мутацию):

curl -v --raw 'http://localhost:8081/admin/api' -X POST --data '{        "query":"mutation($sections: [ConfigSectionInput!]) {            cluster {                config(sections: $sections) {                    filename                    content                }            }        }",        "variables": {            "sections": [{                "filename":"migrations/source/002_test.lua",                "content":"'"$(cat 002_test.lua | sed 's/"/\\"/g' )"'"            }]        }}'

Чтобы выполнить старт миграции, запустите в консоли следующую команду:

curl -X POST localhost:8081/migrations/up

Дождитесь ответа:

{"applied":["002_test.lua"]}

Проверьте, что миграция прошла успешно.