PRO

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

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

Определение

Миграция базы данных — это изменение схемы БД (таблиц, столбцов, индексов, ограничений), оформленное как отдельный версионируемый шаг. Обычно это файл со скриптом SQL (например, ALTER TABLE, CREATE TABLE, CREATE INDEX) или Python‑скрипт, который выполняет те же команды.

Примеры миграций:

  • добавить новую таблицу orders через CREATE TABLE orders (...);

  • добавить столбец status в таблицу users командой ALTER TABLE users ADD COLUMN status TEXT DEFAULT 'active';

  • создать индекс CREATE INDEX idx_users_email ON users(email).

Зачем нужны миграции

  • поддерживать схему БД в синхроне с кодом — каждая версия приложения знает, какие миграции должны быть применены;

  • иметь историю изменений схемы и возможность отката (обратные миграции с DROP TABLE/ALTER TABLE ... DROP COLUMN и т.п.);

  • применять изменения безопасно и в правильном порядке на разных окружениях: dev, staging, production;

  • минимизировать ручные изменения в БД и количество ошибок.

Инструменты миграций

Миграции часто поддерживаются фреймворками и библиотеками:

  • alembic — инструмент миграций для SQLAlchemy;

  • django делает миграции через python manage.py makemigrations / migrate;

  • Flyway, Liquibase и др. для разных языков и стеков.

Обычно у таких инструментов есть специальная таблица версий (например, alembic_version), где хранится, какие миграции уже применены.

Как ответить на собеседовании

Миграция — это версионируемый шаг изменения структуры базы данных: создание и изменение таблиц, столбцов, индексов и ограничений. Мы описываем эти изменения в виде скриптов SQL или Python‑кода и применяем их по мере обновления приложения. Это позволяет эволюционировать схему вместе с кодом и безопасно раскатывать изменения на все окружения.

Оцени свой прогресс

Честно оцени своё понимание этого вопроса, чтобы мы могли построить твой учебный трек максимально эффективно.
Читать в блоге