Этот вопрос проверяет знание процесса управления изменениями в структуре базы данных и понимание инструментов, применяемых для автоматизации этого процесса.
Миграции баз данных — это способ фиксировать и применять изменения в структуре БД (например, создание таблиц, изменение колонок). Они позволяют отслеживать историю изменений и синхронизировать схему между разными средами (разработка, тестирование, прод). Популярные инструменты: Flyway, Liquibase, Liquibase, Spring Boot Migrations, Sequelize (Node.js), Liquibase и Flyway — самые распространённые в Java-проектах.
Миграции — это управляемый способ внесения изменений в структуру базы данных с возможностью отката и истории версий.
1. Зачем нужны миграции
Изменения схемы должны быть контролируемыми.
Разные разработчики и среды (Dev, Test, Prod) должны иметь одинаковую структуру БД.
Возможность отката изменений критична при ошибках на продакшене.
История миграций позволяет понять, кто и зачем сделал каждое изменение.
2. Что может включать миграция
Создание или удаление таблиц
Добавление/удаление/изменение колонок
Создание индексов, связей (foreign keys)
Вставка начальных данных (seed)
3. Основные инструменты
Flyway
Прост в использовании
Миграции пишутся как SQL-файлы или Java-классы
Хорошо интегрируется с Spring Boot
Пример имени файла:V1__create_users_table.sql
Liquibase
Поддерживает SQL, XML, YAML, JSON
Более гибкий и мощный, но сложнее в освоении
Есть встроенные проверки совместимости и rollback
Пример на YAML:
databaseChangeLog:
- changeSet:
id: 1
author: dev
changes:
- createTable:
tableName: user
columns:
- column:
name: id
type: int
- column:
name: username
type: varchar(255)Spring Boot Migrations
Встроенная поддержка Flyway и Liquibase
Просто подключается через зависимость в pom.xml или build.gradle
4. Когда использовать миграции
При любом изменении схемы в реальном проекте
При командной работе над БД
Для CI/CD и автоматических деплоев
Вывод:
Миграции помогают держать схему базы под контролем, автоматизировать изменения и сохранять совместимость между средами. Flyway — хороший выбор для простоты, Liquibase — для гибкости.