Инструменты: Flyway, Liquibase, Sqitch
Сравните популярные инструменты миграции схем, их модели версионирования и интеграцию с CI
«Инструменты: Flyway, Liquibase, Sqitch» — бесплатный урок SQL Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения SQL Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс SQL Academy содержит 4 уроков всего.
Зачем нужны инструменты миграции
Изменения схемы должны:
- Иметь версии в системе контроля исходного кода
- Применяться в детерминированном порядке
- Автоматически выполняться в CI/CD
- Допускать откат (в некоторых случаях)
Flyway
Миграции на Java, основанные на файлах. Каждый файл получает имя с префиксом версии:
-- V1__create_users.sql
CREATE TABLE users (id BIGSERIAL PRIMARY KEY, email TEXT NOT NULL);
-- V2__add_full_name.sql
ALTER TABLE users ADD COLUMN full_name TEXT;
-- Flyway tracks applied migrations in a flyway_schema_history table.Командная строка Flyway
Применение миграций:
flyway -url=jdbc:postgresql://localhost/mydb -user=app migrate
flyway info # show what would run
flyway repair # fix the history table after a failureLiquibase
«Наборы изменений» на основе XML/YAML/JSON (или SQL). Они более многословны, чем Flyway, но поддерживают абстракции для разных баз данных:
<!-- changeset alice:001 -->
<createTable tableName="users">
<column name="id" type="bigserial" autoIncrement="true">
<constraints primaryKey="true"/>
</column>
<column name="email" type="text"><constraints nullable="false"/></column>
</createTable>Поддержка отката в Liquibase
Каждый набор изменений может объявить действие отката. Liquibase может откатить последние N изменений:
liquibase rollbackCount 1Sqitch
Собственный SQL без упорядочивания по номерам версий — используется явный DAG зависимостей. Для каждого изменения предусмотрены сценарии развёртывания, проверки и отмены:
sqitch add add_users -n 'Add users table'
# edits deploy/add_users.sql, verify/add_users.sql, revert/add_users.sql
sqitch deploy db:pg://localhost/mydbСравнение трёх инструментов
| Flyway | Liquibase | Sqitch | |
|---|---|---|---|
| Формат | SQL | XML/YAML/JSON | SQL |
| Версионирование | Последовательное | Последовательное | DAG |
| Откат | Ограниченный | Встроенный | Встроенный |
| Шаг проверки | Нет | Необязательный | Встроенный |
Инструменты фреймворков
Многие веб-фреймворки имеют собственные инструменты:
- Rails: миграции ActiveRecord
- Django: встроенные миграции
- Node: knex, sequelize, prisma migrate
- NestJS: миграции TypeORM
Процесс CI
Стандартный конвейер:
- PR содержит новый файл миграции
- CI запускает пустой экземпляр PostgreSQL и выполняет все миграции
- Запустите автоматические проверки для схемы после миграции
- После слияния выполните развёртывание и миграции в тестовой среде, затем в рабочей
Повторяемые миграции
В Flyway есть повторяемые миграции «R__» — они запускаются заново при каждом изменении. Подход хорошо подходит для представлений и хранимых процедур:
-- R__users_view.sql (re-applied whenever its checksum changes)
CREATE OR REPLACE VIEW active_users AS
SELECT id, email FROM users WHERE deleted_at IS NULL;Обнаружение расхождений схемы
Используйте migra, schemahero или pgquarrel, чтобы обнаруживать расхождения между ожидаемой и фактической схемой.
Итоги
Выберите один инструмент и придерживайтесь его.
- Flyway — ориентирован на SQL, прост
- Liquibase — декларативный, с уровнями абстракции
- Sqitch — зависимости в виде DAG, приоритет отката
- Всегда: храните версии в системе контроля исходного кода и автоматизируйте процесс в CI
Быстрая проверка
Какой инструмент изначально использует явный DAG зависимостей между миграциями вместо последовательных номеров версий?
Изучай SQL с ИИ-репетитором — бесплатно
Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.
- Курсы
- 46
- Уроки
- 183
Часто задаваемые вопросы
Урок «Инструменты: Flyway, Liquibase, Sqitch» бесплатный?
Да — полный текст урока «Инструменты: Flyway, Liquibase, Sqitch» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс SQL Academy, подпишись на CoddyKit PRO. Курс SQL Academy содержит 4 уроков всего.
Чему я научусь в уроке «Инструменты: Flyway, Liquibase, Sqitch»?
Сравните популярные инструменты миграции схем, их модели версионирования и интеграцию с CI Ты практикуешь SQL Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать SQL Academy?
Предыдущий опыт не требуется. SQL Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Инструменты: Flyway, Liquibase, Sqitch»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке SQL Academy?
Да. Каждый урок SQL Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Миграции без остановки: почему ALTER TABLE блокирует таблицы
- Параллельное создание индексов (CREATE INDEX CONCURRENTLY)
- Переименование столбцов без остановки
- Инструменты: Flyway, Liquibase, Sqitch