2. Plan
• Refactoring sur bases de données : une pratique oubliée ?
• Liquibase to the rescue !
• La preuve en live ;)
2
3. About.me
• Depuis 1986, Florent Biville - @fbiville
• Depuis 2009, utilisateur de Liquibase
• Depuis 2012, développeur padawan à @LateralThoughts
3
4. Question pour un champion
« Acronyme anglais, je désigne un mécanisme permettant de contrôler,
versionner et rapporter les changements effectués sur un système
logiciel. Je suis, je suis... »
4
5. Refactoring et BDD
Refactoring ?
Changements d'une structure existante sans altération de son
1
comportement observable
1
http://martinfowler.com/bliki/DefinitionOfRefactoring.html
5
6. Refactoring et BDD
Refactoring sur base de données ?
Changements d'une structure existante sans altération de son
comportement et de ses informations
6
7. Refactoring et BDD
Ça se complique
• Pas de « bug » à proprement parler
• 1 BDD est souvent partagée par plusieurs applications
• Équipes de DBA souvent séparées des équipes de dév.
7
8. Refactoring et BDD
Il était une fois l'évolution
• Collaboration étroite entre DBAs et dévs (voire suppression des DBA ?)
• À chacun son instance de BDD
• Automatisation des refactorings et autres mises à jour
8
9. Liquibase
• Gestionnaire incrémental de migrations
• Opérations décrites par fichiers XML (donc versionnables !)
• Découpage des opérations en changesets (transactionnels)
1
http://www.liquibase.org/databases
9
10. Liquibase
En quelques faits
• Projet Java, https://github.com/liquibase/liquibase/
• Première release : 2006
• Version actuelle : 2.0.3 (10 Octobre 2011), licence Apache 2.0
• Support : MySQL, Oracle, PostgreSQL, DB2, MSSQL... 1
1
http://www.liquibase.org/databases
10
12. Liquibase
Under the hood
Changeset identifié par son ID, auteur, timestamp d'exécution et
checksum.
Changeset joué une seule fois, modification interdite (valeurs par défaut de runAlways
et runOnChange).
Historique stocké dans la table DATABASECHANGELOG.
12
13. Liquibase
Intégration
• Ligne de commande, Ant, plugin Maven
• Listener de Servlets
• Spring
13
14. Le poids démo
But : persister les votes des électeurs de 2012 !
14
15. Et ailleurs ?
• Rails Migrations (guides.rubyonrails.org/migrations.html)
• Grails Database Migration (dérivé de Liquibase, grails-plugins.github.com/grails-database-
migration/)
• Et bien plus encore... (http://www.quora.com/What-are-the-alternatives-to-LiquiBase)
15