Sobes.tech
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 (rollback ou tag).
  • Utilização via linha de comandos: Execução de migrações, geração de ficheiros changelog e 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.