DB Versionning

Outil de gestion de version de BD

Liquibase

"Liquibase provides a database agnostic way to deliver fast, safe, repeatable database deployments."

Liquibase repose sur deux tables :

Langage supportés : SQL ou YAML, JSON, XML

L’abstraction de schema via YAML, JSON ou XML est pertinente si l'on veut gérer la même base sur plusieurs moteurs différents.

Moteur : Java

Licence : Community edition + PRO payante

Versions :

Contributeurs : 1 seul contributeur

Flyway

"Version control for your database. Robust schema evolution across all your environments. With ease, pleasure and plain SQL."

FlyWay repose sur une table :

Support des scripts de migration en Java ou SQL. Les scripts on un numéro de version normalisé qui permet à FlyWay de s'y retrouver en :

Langage supportés : SQL ou JAVA

Moteur : Java

Licence : Community edition + payantes

Gestion des schémas au choix :

Versions :

Contributeurs : 5 contributeurs

Can I make structure changes to the DB outside of Flyway?

“No. One of the prerequisites for being able to rely on the metadata in the database and having reliable migrations is that ALL database changes are made by Flyway. No exceptions. The price for this reliability is discipline. Ad hoc changes have no room here as they will literally sabotage your confidence. Even simple things like adding an index can trip over a migration if it has already been added manually before.”

Synthèse

Comparaison

FlyWay LiquiBase
Contributeurs 5 1
Suivi de versions Bon Faible
Pull requests 21 105
Issues 179 ???
Wiki très light lights
Downloads 11,500,000 downloads in 2018 alone ?
Entreprise Acheté mi 2019 par Redgate Datical

"En terme d’utilisation, je préfère liquibase, je trouve qu’il est plus facile à mettre en place et à utiliser par rapport à flyway ; surtout il est plus permissif lorsque l’on développe. Faire du reverse engineering est également beaucoup plus simple avec liquibase."

"The catch with both tools is that both are mainly maintained by a single person and not by a large team."

Risques

Une fois qu'un script a été appliqué à une base (hors DEV) il ne peut plus être modifié. –> Comment gérer cela avec GIT ? Un fichier poussé sur Master ne devrait plus être modifiable