Pourquoi et quand Liquibase?

98

J'ai essayé de rechercher cette question sur le débordement de pile, mais je n'ai trouvé aucune question à ce sujet.
Je suis nouveau Liquibaseet veut savoir

  • Pourquoi Liquibase?
  • Quand exactement doit-on utiliser Liquibasedans le projet?

Je sais qu'il s'agit de conserver toutes les modifications de la base de données au même endroit, mais la même chose peut être faite en créant des SQLfichiers simples dans un système de référentiel et en continuant à le mettre à jour avec le temps.

Shakeel Shahzad
la source

Réponses:

69

Le différenciateur clé entre un fichier de création de schéma autogéré et Liquibase (ou d'autres outils de migration de schéma ) est que ce dernier fournit un journal des modifications de schéma. Il s'agit d'un enregistrement des changements de schéma au fil du temps. Il permet au concepteur de base de données de spécifier les changements de schéma et permet la mise à niveau ou la rétrogradation par programme du schéma à la demande.

Il existe d'autres avantages, tels que:

  • Indépendance du fournisseur de base de données (cela est discutable, mais ils essaient)
  • documentation automatisée
  • diffs de schéma de base de données

Un outil alternatif est flyway .

Vous choisirez d'utiliser un outil de migration de schéma lorsque vous souhaitez ou devez gérer automatiquement les mises à jour de schéma sans perdre de données. Autrement dit, vous vous attendez à ce que le schéma change une fois que votre système a été déployé dans un environnement de longue durée tel qu'un site client ou un environnement de test stable.

Synesso
la source
1
Mais supposons que nous créions un fichier et écrivions notre premier script dedans et le commettions pour dire git. Maintenant, avec le temps, le schéma sera mis à jour et nous pouvons revenir à n'importe quel intervalle de temps et modifier le schéma aussi, non?
Shakeel Shahzad
1
Avec cette approche, vous pouvez recréer le schéma, mais vous ne pouvez pas rétrograder / mettre à niveau. La différence est la perte de données.
Synesso
1
Mais l'autre partie, quand l'utiliser manque-t-elle?
Shakeel Shahzad
1
Synesso Je ne vois pas encore comment vous pouvez rétrograder automatiquement une base de données de production après qu'elle a été utilisée pendant un certain temps et que des décisions ont été prises sur les données en utilisant, par exemple, des colonnes nouvellement ajoutées. Vous ne pouvez pas simplement les laisser tomber maintenant nécessairement. De plus, je ne vois pas pourquoi c'est mieux qu'une simple série de scripts SQL versionnés conservés dans le contrôle de code source qui incluent une simple insertion dans une table de version au début et une mise à jour à la fin pour suivre ce qui a été appliqué.
Khorkrak
Une autre question ajoutant ... comment pouvons-nous enregistrer l'erreur par e-mail en java. quand les changements SQL changent via XML?
UmaShankar
18

J'ai vu liquibase créer une discipline parmi les développeurs lorsqu'il s'agit de modifier le schéma. Vous ne pouvez tout simplement pas écraser les modifications des autres développeurs et les exécuter. Au lieu de cela, vous créez votre propre ensemble de modifications et l'ajoutez à la fin de la séquence de modifications à exécuter. Cela permet également de clarifier quel changement est survenu quand et qui l'a apporté.

Une approche très "versionnée" de la maintenance des schémas.

Pour commencer, cela donne une impression de "travail inutile".

iCrus
la source
4
Qui est moi (Cela me donne l'impression exacte que vous avez mentionnée: P) +1 pour cette détermination cruciale
Ismail Sahin
vous avez raison, nous pouvons garder une trace de tous les changements qui ont fait les derniers changements et quand. si nous devons revenir à un point spécifique, liquibase sera utile
Anoop PS
7

Lorsque vous avez plusieurs instances de base de données en développement, qa, production et que vous souhaitez disposer d'un outil pour suivre automatiquement l'historique des modifications et appliquer les modifications intelligemment (appliquez la différence du schéma actuel et du schéma final), des outils comme liquibase ou flyway seront très utiles .

Ted Xu
la source
3

Je pense que Liquibase est génial lorsque votre philosophie est que la base de données est une réflexion après coup. Cette philosophie est à l'origine de la majorité des mauvaises bases de données en production - et la plupart d'entre elles sont mauvaises. Une base de données doit être conçue avec une vue complète de l'ensemble du système d'entreprise, et non par des développeurs d'applications travaillant chacun dans leurs propres silos. Cette dernière méthode entraîne des solutions de contournement, des données dénormalisées, de mauvaises relations entre les tables, la duplication des domaines d'activité et un système global désordonné et à coût de maintenance élevé que le client détestera peu après le déploiement en raison des problèmes qu'il provoque. Si une base de données est conçue pour refléter EXACTEMENT les relations commerciales, sa durée de vie sera 5 fois plus longue et servira à son objectif 5 fois mieux qu'une base conçue au coup par coup comme malheureusement la plupart le sont.

Liquibase n'est pas un problème en soi, mais il permet aux développeurs d'applications de concevoir la base de données. C'est le problème.

Bob Barry
la source
19
Les spécifications changent, de nouvelles fonctionnalités sont ajoutées, les bogues sont corrigés. Même en supposant "qu'une base de données est conçue pour refléter EXACTEMENT les relations commerciales", il est normal et prévisible que vous deviez apporter des modifications à la base de données au fil du temps, car les entreprises et les relations commerciales changent avec le temps. Liquibase vous aide simplement à gérer ces changements. C'est tout.
Steven Byks
D'après mon expérience, très peu de DBA et toute une série de développeurs utilisent Liquibase - je pense que @ bob-barry est parfait avec la majorité des résultats finaux. Les administrateurs de base de données qui utilisent des outils comme Liquibase (ou simplement un ancien git pour l'historique des modifications) le trouveront utile.
PhillipHolmes
Les pratiques de base de données évolutives, et agiles en général, encouragent et permettent les évaluations par les pairs. Pour une base de données avec des besoins de performances, les administrateurs de base de données travaillent toujours avec les équipes d'application pour les modifications de base de données. Des outils comme Liquibase permettent une refactorisation plus facile, allant à l'encontre de votre argument de dénormalisation. Il y a 10 ans, j'ai travaillé pour un produit installé chez plus de 20 clients, chacun avec ses propres cycles de correctifs et de mise à niveau. Après 2 ans de cauchemar, et en essayant d'écrire un tel outil à la main, nous avons sauté sur liquibase dès que nous en avons eu connaissance. Et nous avions des tables avec 200 millions d'enregistrements, pas énormes pour l'époque non plus, mais quelque chose qui avait besoin de DBA.
user6317694
3
J'espère vous rencontrer là-bas au paradis un jour. Bien sûr, ça sonne bien.
Bijan
3

Je pense que pourquoi liquibase peut être répondu si vous passez par l'article ci-dessous http://shengwangi.blogspot.com/2016/04/liquibase-helloworld-example.html

Si vous le lisez attentivement, la possibilité de rétrograder vers une version inférieure à partir d'une version supérieure à l'aide de simples commandes mvn ou CLI est très utile, ce que vous n'obtenez pas si vous passez par l'approche consistant à valider votre fichier sql dans GIT car alors vous devez exécuter manuellement ces scripts et vous n'avez pas non plus le jeu de modifications comme: - qui a fait l'auteur des changements, etc.

Shikhar Chaudhary
la source
0

En tant que DevOps Person de mon équipe, je préférerais avoir tous mes fichiers SQL au même endroit, c'est-à-dire dans mon SCM (Source Code Management)

Aussi pendant la phase CI / CD, si le schéma de base de données est créé avec lui, cela économise beaucoup de temps et de ressources. Vous n'auriez pas besoin d'avoir une autre personne pour gérer votre base de données pour ce client.

ORM comme Flyway, Liquibase, EF etc. aide à atteindre cet objectif.

Sloka Roy
la source