Published on

August 3, 2021

Gestion des modifications de base de données SQL Server avec Liquibase

Dans le développement logiciel agile, les modifications fréquentes de la structure de la base de données SQL Server sont inévitables. Cependant, gérer ces modifications manuellement peut être long et sujet aux erreurs. C’est là que Liquibase intervient.

Présentation de Liquibase

Liquibase est un outil de gestion et de déploiement des modifications de base de données open-source qui offre une solution élégante au problème de gestion des modifications de base de données. Il fonctionne avec plusieurs plates-formes de base de données, y compris Microsoft SQL Server.

Le cœur de Liquibase est le concept d’un fichier de journal des modifications de base de données. Ce fichier comprend un ou plusieurs ensembles de modifications, qui représentent l’unité de base du changement pour une base de données. Un ensemble de modifications peut être un changement de schéma, tel que l’ajout ou la suppression de tables, ou il peut s’agir d’un changement des données elles-mêmes.

Liquibase est indépendant de la plate-forme, ce qui signifie qu’il peut appliquer le même changement à plusieurs plates-formes de base de données. Le changement réel est effectué par le code généré par le moteur Liquibase et transmis au pilote de base de données.

Comment fonctionne Liquibase

Lorsque Liquibase s’exécute pour la première fois sur une base de données, il crée deux nouvelles tables : DATABASECHANGELOG et DATABASECHANGELOGLOCK. La table DATABASECHANGELOG permet de suivre les ensembles de modifications qui ont été appliqués à la base de données, tandis que la table DATABASECHANGELOGLOCK est utilisée pour gérer l’accès concurrent au journal des modifications.

À chaque fois que Liquibase s’exécute, il examine les ensembles de modifications dans le fichier de journal des modifications et vérifie ce qui est stocké dans la table DATABASECHANGELOG. Si un ensemble de modifications a déjà été appliqué, Liquibase le saute et passe au suivant. Si le contenu d’un ensemble de modifications a été modifié, Liquibase génère une erreur pour garantir l’intégrité des données.

En mettant à jour de manière incrémentielle la base de données avec chaque nouvel ensemble de modifications du journal des modifications, Liquibase permet de gérer la version de la base de données. Le fichier de journal des modifications devient un document vivant de chaque modification apportée à la base de données, soutenu par la table DATABASECHANGELOG.

Installation de Liquibase

L’installation de Liquibase est un processus simple. Tout d’abord, assurez-vous d’avoir Java installé et configuré sur votre poste de travail. Ensuite, téléchargez et installez le pilote JDBC pour Microsoft SQL Server. Enfin, téléchargez la distribution Liquibase pour votre système d’exploitation et extrayez-la dans un répertoire.

Rédaction d’un fichier de journal des modifications

Un fichier de journal des modifications peut être rédigé en XML, YAML, JSON ou SQL formaté. Il comprend un ou plusieurs ensembles de modifications, chacun représentant un changement spécifique apporté à la base de données. L’ensemble de modifications contient des métadonnées sur le changement, telles que l’identifiant et l’auteur, ainsi que l’instruction de changement elle-même.

Par exemple, un ensemble de modifications au format XML pourrait ressembler à ceci :


<changeSet id="1" author="john_doe">
  <createTable tableName="customers">
    <column name="id" type="int">
      <constraints primaryKey="true" nullable="false"/>
    </column>
    <column name="name" type="varchar(50)">
      <constraints nullable="false"/>
    </column>
  </createTable>
</changeSet>

Cet ensemble de modifications crée une nouvelle table appelée “customers” avec deux colonnes : “id” et “name”.

Application des modifications avec Liquibase

Pour appliquer les modifications d’un fichier de journal des modifications à une base de données, utilisez l’outil en ligne de commande Liquibase. Spécifiez les options nécessaires, telles que le pilote, le classpath, l’URL, le nom d’utilisateur, le mot de passe et le fichier de journal des modifications. Par exemple :


liquibase --driver=com.microsoft.sqlserver.jdbc.SQLServerDriver \
          --classpath="path/to/sqljdbc.jar" \
          --url="jdbc:sqlserver://localhost:1433;databaseName=mydatabase" \
          --username=myusername \
          --password=mypassword \
          --changeLogFile="path/to/changelog.xml" \
          update

Cette commande appliquera les modifications du fichier de journal des modifications spécifié à la base de données.

Génération de journaux des modifications

Liquibase peut également générer des journaux des modifications à partir d’une base de données existante. Utilisez la commande generateChangeLog et spécifiez les options nécessaires, telles que le pilote, le classpath, l’URL, le nom d’utilisateur, le mot de passe, le fichier de journal des modifications et le nom du schéma par défaut. Par exemple :


liquibase --driver=com.microsoft.sqlserver.jdbc.SQLServerDriver \
          --classpath="path/to/sqljdbc.jar" \
          --url="jdbc:sqlserver://localhost:1433;databaseName=mydatabase" \
          --username=myusername \
          --password=mypassword \
          --changeLogFile="path/to/changelog.xml" \
          --defaultSchemaName=mydatabase \
          generateChangeLog

Cette commande générera un fichier de journal des modifications à partir de la base de données spécifiée, incluant le schéma, les tables et autres objets.

Conclusion

Liquibase est un outil puissant pour gérer les modifications de base de données SQL Server. En utilisant un fichier de journal des modifications et des mises à jour incrémentielles, Liquibase contribue à garantir l’intégrité des données et facilite le suivi et la gestion des modifications de base de données. Avec Liquibase, vous pouvez automatiser le processus de déploiement et réduire les risques d’erreurs et d’incohérences.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.