Sobes.tech
Middle

¿Cuál es su experiencia trabajando con Liquibase?

sobes.tech AI

Respuesta de la IA

La experiencia con Liquibase incluye:

  • Gestión de versiones de esquemas de bases de datos: Uso de archivos changelog (XML, YAML, JSON) para scripts DDL y DML.
  • Automatización de migraciones: Integración de Liquibase en pipelines CI/CD para aplicar automáticamente cambios en el esquema durante los lanzamientos.
  • Trabajo con diferentes bases de datos: Experiencia en el uso de Liquibase con PostgreSQL, MySQL y Oracle.
  • Rollbacks: Creación y prueba de scripts de reversión (rollback o tag).
  • Uso de línea de comandos: Ejecución de migraciones, generación de archivos changelog y verificación del estado.

Ejemplo de estructura de un archivo 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>

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

Uso de línea de comandos:

# Aplicar todos los cambios disponibles
liquibase update

# Generar script para aplicación manual
liquibase updateSQL > update.sql

# Revertir a una etiqueta específica
liquibase rollback <tag_name>

# Mostrar estado de los cambios
liquibase status

Trabajo con tablas de referencia y datos de prueba mediante loadData.

Escenarios típicos de uso de Liquibase:

  • Despliegue de nuevas versiones de aplicaciones.
  • Corrección de errores en la base de datos.
  • Creación de entornos de prueba.

Ventajas principales de usar Liquibase:

  • Control de versiones del esquema de la base de datos.
  • Independencia de la SGBD específica.
  • Capacidad de revertir cambios.
  • Fácil integración en pipelines CI/CD.