Sobes.tech
Middle

Quelle est votre expérience avec Liquibase?

sobes.tech IA

Réponse de l'IA

L'expérience avec Liquibase inclut :

  • Gestion des versions du schéma de la base de données : Utilisation de fichiers changelog (XML, YAML, JSON) pour les scripts DDL et DML.
  • Automatisation des migrations : Intégration de Liquibase dans les pipelines CI/CD pour appliquer automatiquement les modifications du schéma lors des déploiements.
  • Travail avec différentes bases de données : Expérience avec Liquibase sur PostgreSQL, MySQL et Oracle.
  • Rollback : Création et test de scripts de rollback (rollback ou tag).
  • Utilisation en ligne de commande : Exécution des migrations, génération de fichiers changelog et vérification du statut.

Exemple de structure d'un fichier 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>

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

Utilisation en ligne de commande :

# Appliquer toutes les modifications
liquibase update

# Générer un script pour une application manuelle
liquibase updateSQL > update.sql

# Revenir à une balise spécifique
liquibase rollback <tag_name>

# Afficher le statut des modifications
liquibase status

Travail avec des tables de référence et des données de test via loadData.

Scénarios typiques d'utilisation de Liquibase :

  • Déploiement de nouvelles versions d'applications.
  • Correction d'erreurs dans la base de données.
  • Création d'environnements de test.

Principaux avantages de l'utilisation de Liquibase :

  • Contrôle de version du schéma de la base de données.
  • Indépendance de la SGBD spécifique.
  • Capacité de revenir en arrière sur les modifications.
  • Intégration facile dans les pipelines CI/CD.