SQL Academy · Aula

Ferramentas: Flyway, Liquibase, Sqitch

Compare ferramentas populares de migração de esquemas, seus modelos de versionamento e sua integração com CI.

Aula 4 de 413 etapas

Ferramentas: Flyway, Liquibase, Sqitch é uma aula grátis de SQL Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de SQL Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de SQL Academy inclui 4 aulas no total.

Por que usar ferramentas de migração?

As alterações de esquema precisam ser:

  • Versionadas no controle de código-fonte
  • Aplicadas em uma ordem determinística
  • Executadas automaticamente na CI/CD
  • Reversíveis (às vezes)

Flyway

Migrações baseadas em Java e em arquivos. Cada arquivo recebe um nome com um prefixo de versão:

-- 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.

CLI do Flyway

Aplique as migrações:

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

"Conjuntos de alterações" baseados em XML/YAML/JSON (ou SQL). Mais detalhado que o Flyway, mas oferece suporte a abstrações entre bancos de dados:

<!-- 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>

Suporte a reversão no Liquibase

Cada conjunto de alterações pode declarar uma ação de reversão. O Liquibase pode reverter as últimas N alterações:

liquibase rollbackCount 1

Sqitch

SQL nativo, sem ordenação por números de versão — usa um DAG explícito de dependências. Cada alteração tem scripts de implantação, verificação e reversão:

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

Comparação entre as três

FlywayLiquibaseSqitch
FormatoSQLXML/YAML/JSONSQL
VersionamentoSequencialSequencialDAG
ReversãoLimitadaNativaNativa
Etapa de verificaçãoNãoOpcionalIntegrada

Ferramentas nativas das estruturas de desenvolvimento

Muitas estruturas de desenvolvimento web têm suas próprias ferramentas:

  • Rails: migrações do ActiveRecord
  • Django: migrações integradas
  • Node: knex, sequelize, prisma migrate
  • NestJS: migrações do TypeORM

Fluxo de trabalho da CI

Fluxo padrão:

  1. O PR inclui um novo arquivo de migração
  2. A CI inicia um PostgreSQL vazio e executa todas as migrações
  3. Execute testes automatizados usando o esquema migrado
  4. Após a mesclagem, faça a implantação e execute as migrações no ambiente de homologação e, depois, em produção

Migrações repetíveis

O Flyway tem migrações repetíveis "R__" — executadas novamente a cada alteração. São adequadas para exibições e procedimentos armazenados:

-- 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;

Detecção de divergências do esquema

Use migra, schemahero ou pgquarrel para detectar divergências entre o esquema esperado e o esquema real.

Resumo

Escolha uma ferramenta e mantenha-se nela.

  • Flyway — orientado a SQL, simples
  • Liquibase — declarativo, com camadas de abstração
  • Sqitch — dependências em DAG, prioriza a reversão
  • Sempre: versione no controle de código-fonte e automatize na CI

Verificação rápida

Qual ferramenta usa nativamente um DAG explícito de dependências entre migrações, em vez de números de versão sequenciais?

Grátis para começar

Aprenda SQL com um tutor de IA — grátis

Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.

Cursos
46
Aulas
183

Perguntas Frequentes

A aula “Ferramentas: Flyway, Liquibase, Sqitch” é grátis?

Sim — o texto completo de “Ferramentas: Flyway, Liquibase, Sqitch” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de SQL Academy, atualize para CoddyKit PRO. O curso de SQL Academy inclui 4 aulas no total.

O que vou aprender em “Ferramentas: Flyway, Liquibase, Sqitch”?

Compare ferramentas populares de migração de esquemas, seus modelos de versionamento e sua integração com CI. Você pratica SQL Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar SQL Academy?

Nenhuma experiência prévia é necessária. SQL Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.

Quanto tempo leva a aula “Ferramentas: Flyway, Liquibase, Sqitch”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de SQL Academy?

Sim. Cada aula de SQL Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Migrações on-line: por que ALTER TABLE bloqueia
  2. Índices concorrentes (CREATE INDEX CONCURRENTLY)
  3. Renomeação de colunas sem indisponibilidade
  4. Ferramentas: Flyway, Liquibase, Sqitch
← Voltar para SQL Academy