28
Liquibase Source control for your database

Liquibase

Embed Size (px)

Citation preview

LiquibaseSource control for your database

Liquibase

● L’existant

● Les problèmes rencontrés

● La solution : Liquibase

● Et après

● Questions

L’existant

L’existant

● Réalisation d’un schéma sous powerAMC (MPD)

○ Permet de normaliser les relations○ Partage du schéma via le référentiel (internes /

service stats / RAP)○ Ajout des schémas dans confluence

L’existant

● Récupération des scripts SQL depuis PowerAMC

○ Dans le meilleur des cas : génération de tous les scripts si “from scratch”

○ Récupération de morceau de script via la prévisualisation

L’existant

● Création des script pour la base H2○ Permet de monter une base de données et de

charger un jeu de données à chaud pour la réalisation des tests d’intégration

● Création des scripts pour la MEP ○ Ajout de ces scripts au document de MEP sous

confluence

Les problèmes rencontrés

Les problèmes rencontrés

● PowerAMC

○ Génération des scripts ok si “from scratch” mais gestion des deltas très peu intuitive et aléatoire

○ Suivi des évolutions et des versions compliquées et peu intuitive

Les problèmes rencontrés

● H2

○ Script de chargement à maintenir spécifiquement pour les tests

○ Retravaille des scripts depuis PowerAMC systématique

Les problèmes rencontrés

● Script pour la MEP○ Demande une grande rigueur dans la maintenance

des scripts○ Retour arrière presque jamais réalisé○ Exécution manuelle uniquement○ Partage et suivi des évolutions des scripts

laborieuses

La solution : Liquibase

La solution : Liquibase

● Langage XML pour décrire les scripts à exécuter en base

○ Même langage de script quelque soit la base de données (MySQL, H2, etc.)

○ Format arborescent pour une meilleur lisibilité des blocs de chargement

La solution : Liquibase

La solution : Liquibase

● Permet de suivre les évolutions des scripts via SVN

○ Utilisation d’outils connus et standards (SVN)

○ Meilleur suivi des évolutions des schémas

La solution : Liquibase

La solution : Liquibase

● Lancement des scripts au chargement de l’application

○ Permet de faire des exécutions conditionnelles et de prévoir des scripts de retour arrière

○ Intégration des scripts de chargement de la base de données dans les livrables (WAR)

○ Un pas vers l’industrialisation des livrables

La solution : Liquibase

La solution : Liquibaseweb.xml

applicationContext.xml

La solution : Liquibase

● Suivi des scripts déjà chargés directement dans des tables spécifiques Liquibase

○ Création par Liquibase de deux tables : lock de chargement, suivi des scripts

○ Tolérance au clustering○ Possibilité de faire un reverse engineering sur l’

existant et de considéré les scripts obtenus déjà exécutés

La solution : Liquibase

La solution : Liquibase

Et après

Et après

● Suppression des droits en écriture en intégration et production○ Oblige à la réalisation des scripts via liquibase pour

livraison en intégration○ Permet de garantir le suivi des évolutions en base

de données○ Fonctionnement par alter

Et après

● Un super-user connu par 3 personnes avec les droits en écriture en secours○ Permet de prévoir les cas ou Liquibase n’est pas

approprié○ Permet d’intervenir en urgence sur des problèmes

de production

Et après

● Réalisation des scripts de chargement H2 à l’aide de Liquibase○ Plus de maintenance des scripts spécifiques H2 en

dehors des données de test○ Une méthode, un seul type de fichier pour charger

les bases H2 et charger/mettre à jour les bases MySQL

Et après

● Quelques limites○ Chargement des scripts au démarrage des

applications => scripts à exécution relativement rapide

○ Autres limites à découvrir

Et après

MISE EN PLACE ASAP !!!!

Questions ?