Title: Desenvolvimento de Software / Liquibase
Tags: Desenvolvimento_de_Software Resumo
On every note of this deck, unless a note says otherwise:
tldr: - Liquibase é uma ferramenta open-source para versionamento e migração de schema de banco, aplicando mudanças de forma controlada, rastreável e automatizada (sem depender de scripts soltos e ordem “na mão”).
- Principal diferencial vs Flyway: abstração e portabilidade
- Em vez de focar só em SQL puro, permite definir mudanças em XML/YAML/JSON (intenção da mudança), e o Liquibase gera o SQL no dialeto do SGBD (PostgreSQL, MySQL, Oracle, SQL Server etc.).
- Conceitos centrais:
- Changelog: arquivo “mestre” que lista/inclui todas as mudanças (geralmente db.changelog-master.*).
- Changeset: unidade atômica de mudança; identificado por (id + author + path/filename) e não deve ser alterado após aplicado.
- Execução:
- Changesets são transacionais por padrão; em caso de erro, tenta rollback (melhor em bancos com DDL transacional).
- Formatos suportados:
- Abstrato (XML/YAML/JSON) com tags/estruturas como createTable, addColumn.
- SQL formatado (SQL puro + comentários especiais para delimitar changesets).
- Tabelas de controle:
- DATABASECHANGELOG: histórico dos changesets aplicados (inclui MD5SUM/checksum para detectar alterações indevidas).
- DATABASECHANGELOGLOCK: lock de concorrência para garantir que só uma instância rode migrations por vez.
- CLI (principais comandos):
- update (aplica pendentes), validate, status, changelogSync (baseline), rollback, tag.
- Mapeamento rápido Liquibase vs Flyway:
- Migration ⇄ Changeset
- flyway_schema_history ⇄ DATABASECHANGELOG
- migrate ⇄ update
- baseline ⇄ changelogSync
link: https://documentacao.online/estudos/grvh.html

front: (PROF. VINICIUS BORGES / INÉDITA - 2025) O Liquibase é uma ferramenta de versionamento de banco de dados que, assim como o Flyway, baseia sua principal funcionalidade na execução de scripts SQL puros.
response: Errado
comment: O principal diferencial do Liquibase é justamente sua capacidade de abstração, permitindo que as migrações sejam definidas em formatos como XML, YAML ou JSON. Embora ele também suporte SQL puro (formatado), sua força reside na abstração.
title: Liquibase
Other fields (not shown on cards):
back: Errado - O principal diferencial do Liquibase é justamente sua capacidade de abstração, permitindo que as migrações sejam definidas em formatos como XML, YAML ou JSON. Embora ele também suporte SQL puro (formatado), sua força reside na abstração.

front: (PROF. VINICIUS BORGES / INÉDITA - 2025) Em um ambiente de microsserviços onde múltiplas instâncias da aplicação podem ser iniciadas simultaneamente, a tabela DATABASECHANGELOG é a principal responsável por gerenciar o "lock" e impedir a execução concorrente de migrações.
response: Errado
comment: A tabela responsável pelo controle de concorrência (lock) é a DATABASECHANGELOGLOCK. A tabela DATABASECHANGELOG é responsável por armazenar o histórico das migrações (changesets) que já foram aplicadas.
title: Liquibase
Other fields (not shown on cards):
back: Errado - A tabela responsável pelo controle de concorrência (lock) é a DATABASECHANGELOGLOCK. A tabela DATABASECHANGELOG é responsável por armazenar o histórico das migrações (changesets) que já foram aplicadas.

front: (PROF. VINICIUS BORGES / INÉDITA - 2025) No Liquibase, a unidade atômica de mudança que é rastreada e executada transacionalmente é conhecida como:
a) Changelog
b) Changeset
c) Update
d) Lock
e) Tag
response: Alternativa B
comment: O Changeset é a unidade atômica de mudança (como criar uma tabela ou adicionar uma coluna). O Changelog é o arquivo que contém a lista de changesets.
title: Liquibase
Other fields (not shown on cards):
back: Alternativa B - O Changeset é a unidade atômica de mudança (como criar uma tabela ou adicionar uma coluna). O Changelog é o arquivo que contém a lista de changesets.

front: (PROF. VINICIUS BORGES / INÉDITA - 2025) Ao definir um changeset, o Liquibase utiliza uma combinação de três atributos para identificá-lo unicamente e verificar se ele já foi aplicado. Que combinação é essa?
a) id, author e path/filename
b) id, checksum e dateExecuted
c) author, context e label
d) id, author e checksum
e) author, id e dateExecuted
response: Alternativa A
comment: O Liquibase rastreia a execução de um changeset pela combinação única do id (definido por você), author (definido por você) e o path/filename (o caminho do arquivo changelog onde ele está).
title: Liquibase
Other fields (not shown on cards):
back: Alternativa A - O Liquibase rastreia a execução de um changeset pela combinação única do id (definido por você), author (definido por você) e o path/filename (o caminho do arquivo changelog onde ele está).

front: (PROF. VINICIUS BORGES / INÉDITA - 2025) A principal vantagem de utilizar os formatos abstratos do Liquibase (XML, YAML, JSON) em vez de SQL puro é a portabilidade, pois a ferramenta pode traduzir a intenção da mudança (ex: ) para o dialeto SQL específico do SGBD de destino.
response: Certo
comment: A abstração permite que o Liquibase gere o SQL correto para PostgreSQL, Oracle, MySQL, etc., a partir de uma definição única, tornando as migrações portáteis entre diferentes bancos de dados.
title: Liquibase
Other fields (not shown on cards):
back: Certo - A abstração permite que o Liquibase gere o SQL correto para PostgreSQL, Oracle, MySQL, etc., a partir de uma definição única, tornando as migrações portáteis entre diferentes bancos de dados.

front: (PROF. VINICIUS BORGES / INÉDITA - 2025) Um desenvolvedor deseja utilizar SQL puro no Liquibase (SQL Formatado). Para que a ferramenta reconheça os changesets dentro do arquivo
.sql, ele deve utilizar comentários especiais, como -- liquibase formatted sql e -- changeset author:id.
response: Certo
comment: O Liquibase suporta SQL puro, desde que o arquivo seja "formatado" com esses comentários especiais, permitindo que a ferramenta identifique o início do arquivo e os limites de cada changeset.
title: Liquibase
Other fields (not shown on cards):
back: Certo - O Liquibase suporta SQL puro, desde que o arquivo seja "formatado" com esses comentários especiais, permitindo que a ferramenta identifique o início do arquivo e os limites de cada changeset.

front: (PROF. VINICIUS BORGES / INÉDITA - 2025) A tabela DATABASECHANGELOG armazena o histórico de changesets aplicados. Uma de suas colunas mais importantes é a MD5SUM, que armazena um checksum do conteúdo do changeset. Se um changeset já aplicado for alterado, o Liquibase detectará a divergência de checksum e interromperá a migração.
response: Certo
comment: Essa é a garantia de imutabilidade das migrações. O Liquibase calcula o checksum do changeset no momento da aplicação e o armazena. Em execuções futuras, ele recalcula e compara. Se for diferente, ele falha, pois assume que uma migração já aplicada foi alterada indevidamente.
title: Liquibase
Other fields (not shown on cards):
back: Certo - Essa é a garantia de imutabilidade das migrações. O Liquibase calcula o checksum do changeset no momento da aplicação e o armazena. Em execuções futuras, ele recalcula e compara. Se for diferente, ele falha, pois assume que uma migração já aplicada foi alterada indevidamente.

front: (PROF. VINICIUS BORGES / INÉDITA - 2025) Qual é o comando do Liquibase é o principal responsável por aplicar todas as migrações (changesets) pendentes que ainda não foram executadas no banco de dados?
a) migrate
b) run
c) changelogSync
d) update
e) apply
response: Alternativa D
comment: O comando update é o comando principal, análogo ao migrate do Flyway. Ele lê o changelog, compara com a tabela DATABASECHANGELOG e aplica os changesets que faltam.
title: Liquibase
Other fields (not shown on cards):
back: Alternativa D - O comando update é o comando principal, análogo ao migrate do Flyway. Ele lê o changelog, compara com a tabela DATABASECHANGELOG e aplica os changesets que faltam.

front: (PROF. VINICIUS BORGES / INÉDITA - 2025) Ao iniciar o uso do Liquibase em um banco de dados legado que já possui uma estrutura existente, qual comando deve ser utilizado para marcar os changesets atuais como "executados" na tabela de controle, sem, no entanto, rodar o SQL contido neles?
a) baseline
b) status
c) tag
d) update
e) changelogSync
response: Alternativa E
comment: O comando changelogSync é o equivalente ao baseline do Flyway. Ele "sincroniza" o changelog com o banco, marcando os changesets como executados na tabela DATABASECHANGELOG sem rodar o SQL, evitando que o Liquibase tente criar tabelas que já existem.
title: Liquibase
Other fields (not shown on cards):
back: Alternativa E - O comando changelogSync é o equivalente ao baseline do Flyway. Ele "sincroniza" o changelog com o banco, marcando os changesets como executados na tabela DATABASECHANGELOG sem rodar o SQL, evitando que o Liquibase tente criar tabelas que já existem.

front: (PROF. VINICIUS BORGES / INÉDITA - 2025) A tabela DATABASECHANGELOGLOCK serve para armazenar o histórico detalhado de todas as migrações, incluindo o tempo de execução e o checksum de cada changeset.
response: Errado
comment: A tabela que armazena o histórico, checksum, etc., é a DATABASECHANGELOG. A DATABASECHANGELOGLOCK é usada exclusivamente para controle de concorrência (lock).
title: Liquibase
Other fields (not shown on cards):
back: Errado - A tabela que armazena o histórico, checksum, etc., é a DATABASECHANGELOG. A DATABASECHANGELOGLOCK é usada exclusivamente para controle de concorrência (lock).

front: (PROF. VINICIUS BORGES / INÉDITA - 2025) O arquivo-mestre do Liquibase, que funciona como um índice e lista todos os changesets (ou inclui outros arquivos que os contêm), é chamado de:
a) Changeset
b) Changelog
c) DatabaseChangelog
d) UpdateScript
e) LockFile
response: Alternativa B
comment: O Changelog (geralmente db.changelog-master.xml) é o arquivo-mestre que organiza a ordem de todos os Changesets.
title: Liquibase
Other fields (not shown on cards):
back: Alternativa B - O Changelog (geralmente db.changelog-master.xml) é o arquivo-mestre que organiza a ordem de todos os Changesets.

front: (PROF. VINICIUS BORGES / INÉDITA - 2025) O comando tag do Liquibase é utilizado para aplicar uma "etiqueta" de versão no estado atual do banco, criando um ponto de restauração que pode ser utilizado futuramente para operações de rollback.
response: Certo
comment: É exatamente essa a função do tag. Você pode, por exemplo, aplicar a tag "v2.1_release" após uma migração bem-sucedida, e se algo der errado na v2.2, você pode usar o comando rollback v2.1_release para reverter o banco até aquele ponto (desde que os rollbacks estejam definidos).
title: Liquibase
Other fields (not shown on cards):
back: Certo - É exatamente essa a função do tag. Você pode, por exemplo, aplicar a tag "v2.1_release" após uma migração bem-sucedida, e se algo der errado na v2.2, você pode usar o comando rollback v2.1_release para reverter o banco até aquele ponto (desde que os rollbacks estejam definidos).

front: (PROF. VINICIUS BORGES / INÉDITA - 2025) O comando status do Liquibase é análogo ao validate do Flyway, pois verifica a integridade dos checksums das migrações já aplicadas.
response: Errado
comment: O comando status lista os changesets pendentes (análogo ao info do Flyway, que mostra o status). O comando validate (que existe no Liquibase) é o que verifica erros de sintaxe no changelog.
title: Liquibase
Other fields (not shown on cards):
back: Errado - O comando status lista os changesets pendentes (análogo ao info do Flyway, que mostra o status). O comando validate (que existe no Liquibase) é o que verifica erros de sintaxe no changelog.

front: (PROF. VINICIUS BORGES / INÉDITA - 2025) Por padrão, o Liquibase tenta executar cada changeset como uma unidade transacional. Isso significa que, se ocorrer um erro durante a execução de um changeset, a ferramenta tentará aplicar um rollback automático das operações daquele changeset específico (em bancos que suportam DDL transacional).
response: Certo
comment: O Liquibase "envolve" a execução do changeset em uma transação. Se o SGBD suportar (como o PostgreSQL), um erro no meio do changeset causará um rollback automático de tudo que foi feito dentro daquele changeset.
title: Liquibase
Other fields (not shown on cards):
back: Certo - O Liquibase "envolve" a execução do changeset em uma transação. Se o SGBD suportar (como o PostgreSQL), um erro no meio do changeset causará um rollback automático de tudo que foi feito dentro daquele changeset.