Liquibase : un gestionnaire de changements de base de données

J’ai découvert ce matin Liquibase qui est un gestionnaire de mise à jour de base de données.
Cela permet donc d’avoir un historique des modifications effectuées dans la base.

Le principe est simple :
1) On dispose d’un fichier .xml qui contient toutes les modification effectuées, par exemple :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?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-2.0.xsd">
 
     <changeSet id="1" author="marc">
        <createTable tableName="department">
            <column name="id" type="int">
                <constraints primaryKey="true" nullable="false"/>
            </column>
            <column name="name" type="varchar(50)">
                <constraints nullable="false"/>
            </column>
            <column name="active" type="boolean" defaultValueBoolean="true"/>
        </createTable>
    </changeSet>
</databaseChangeLog>

2) Ensuite on lance Liquibase qui se charge d’effectuer les opérations de mise à jour de la base. Pour effectuer cette opération, il est possible d’utiliser par exemple un plugin maven :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
<plugin>
    <groupId>org.liquibase</groupId>
    <artifactId>liquibase-maven-plugin</artifactId>
    <version>2.0.3</version>
    <configuration>
        <changeLogFile>src/test/resources/liquibase_test.xml</changeLogFile>
        <driver>com.mysql.jdbc.Driver</driver>
        <url>jdbc:mysql://localhost:3306/orioai_indexing_test</url>
        <username>orioai</username>
        <password>orioai</password>
    </configuration>
    <executions>
        <execution>
            <phase>process-resources</phase>
            <goals>
                <goal>update</goal>
            </goals>
        </execution>
    </executions>
</plugin>

Parmi les options proposées très intéressantes, grâce à Liquibase on va pouvoir :

  • Connaitre le statut de la base par rapport aux opérations décrites dans le fichier xml (mvn liquibase:status)
  • Effectuer la mise à jour (mvn liquibase:update)
  • Effectuer un rollback à un point donné (mvn -DrollbackCount=1 liquibase:rollback)

Il existe également la possibilité d’utiliser Liquibase via Spring.

Vus : 2428
Publié par Marco : 47