SQL Academy · Урок

Инструменты: Flyway, Liquibase, Sqitch

Сравните популярные инструменты миграции схем, их модели версионирования и интеграцию с CI

Урок 4 из 413 шагов

«Инструменты: 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 failure

Liquibase

«Наборы изменений» на основе 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 1

Sqitch

Собственный 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

Сравнение трёх инструментов

FlywayLiquibaseSqitch
ФорматSQLXML/YAML/JSONSQL
ВерсионированиеПоследовательноеПоследовательноеDAG
ОткатОграниченныйВстроенныйВстроенный
Шаг проверкиНетНеобязательныйВстроенный

Инструменты фреймворков

Многие веб-фреймворки имеют собственные инструменты:

  • Rails: миграции ActiveRecord
  • Django: встроенные миграции
  • Node: knex, sequelize, prisma migrate
  • NestJS: миграции TypeORM

Процесс CI

Стандартный конвейер:

  1. PR содержит новый файл миграции
  2. CI запускает пустой экземпляр PostgreSQL и выполняет все миграции
  3. Запустите автоматические проверки для схемы после миграции
  4. После слияния выполните развёртывание и миграции в тестовой среде, затем в рабочей

Повторяемые миграции

В 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 — локальная установка не требуется.

Все уроки этого курса

  1. Миграции без остановки: почему ALTER TABLE блокирует таблицы
  2. Параллельное создание индексов (CREATE INDEX CONCURRENTLY)
  3. Переименование столбцов без остановки
  4. Инструменты: Flyway, Liquibase, Sqitch
← Назад к SQL Academy