Middle
Qual é a sua experiência com Liquibase?
sobes.tech IA
Resposta da IA
A experiência com Liquibase inclui:
- Gestão de versões do esquema da base de dados: Uso de ficheiros
changelog(XML, YAML, JSON) para scripts DDL e DML. - Automatização de migrações: Integração do Liquibase em pipelines CI/CD para aplicar automaticamente alterações no esquema durante os lançamentos.
- Trabalho com diferentes bases de dados: Experiência com Liquibase no PostgreSQL, MySQL e Oracle.
- Rollbacks: Criação e teste de scripts de reversão (
rollbackoutag). - Utilização via linha de comandos: Execução de migrações, geração de ficheiros
changeloge verificação do estado.
Exemplo de estrutura de um ficheiro changelog:
<!-- /changelog.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.0.xsd">
<include file="changeset/create_users_table.xml" relativeToChangelogFile="true"/>
<include file="changeset/add_index_to_users_table.xml" relativeToChangelogFile="true"/>
</databaseChangeLog>
Exemplo de changeset:
<!-- /changeset/create_users_table.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.0.xsd">
<changeSet id="create-users-table" author="devops-engineer">
<createTable tableName="users">
<column name="id" type="INT">
<constraints primaryKey="true" nullable="false"/>
</column>
<column name="username" type="VARCHAR(50)">
<constraints nullable="false" unique="true"/>
</column>
<column name="created_at" type="TIMESTAMP WITHOUT TIME ZONE" defaultValueComputed="CURRENT_TIMESTAMP"/>
</createTable>
<rollback>
<dropTable tableName="users"/>
</rollback>
</changeSet>
</databaseChangeLog>
Utilização na linha de comandos:
# Aplicar todas as alterações
liquibase update
# Gerar script para aplicação manual
liquibase updateSQL > update.sql
# Reverter até uma tag específica
liquibase rollback <tag_name>
# Mostrar o estado das alterações
liquibase status
Trabalho com tabelas de referência e dados de teste através de loadData.
Cenários típicos de aplicação do Liquibase:
- Desdobramento de novas versões de aplicações.
- Correção de erros na base de dados.
- Criação de ambientes de teste.
Principais vantagens do uso do Liquibase:
- Controle de versões do esquema da base de dados.
- Independência do SGBD específico.
- Capacidade de reverter alterações.
- Integração fácil em pipelines CI/CD.