Ferramentas: Flyway, Liquibase, Sqitch
Compare ferramentas populares de migração de esquemas, seus modelos de versionamento e sua integração com CI.
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 failureLiquibase
"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 1Sqitch
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/mydbComparação entre as três
| Flyway | Liquibase | Sqitch | |
|---|---|---|---|
| Formato | SQL | XML/YAML/JSON | SQL |
| Versionamento | Sequencial | Sequencial | DAG |
| Reversão | Limitada | Nativa | Nativa |
| Etapa de verificação | Não | Opcional | Integrada |
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:
- O PR inclui um novo arquivo de migração
- A CI inicia um PostgreSQL vazio e executa todas as migrações
- Execute testes automatizados usando o esquema migrado
- 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?
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
- Migrações on-line: por que ALTER TABLE bloqueia
- Índices concorrentes (CREATE INDEX CONCURRENTLY)
- Renomeação de colunas sem indisponibilidade
- Ferramentas: Flyway, Liquibase, Sqitch