Comment ne pas se tirer une balle dans le pied avec Liquibase

Jamais été, et là encore!


Sur le prochain projet, nous avons décidé d'utiliser Liquibase dès le début pour éviter des problèmes à l'avenir. Il s'est avéré que tous les jeunes membres de l'équipe ne savent pas comment l'utiliser correctement. J'ai tenu un atelier interne, que j'ai ensuite décidé de transformer en article.


L'article comprend des conseils utiles et des descriptions des trois pièges les plus évidents dans lesquels vous pouvez tomber lorsque vous travaillez avec des outils de migration de bases de données relationnelles, en particulier Liquibase. Conçu pour les développeurs Java de niveau junior et intermédiaire, pour les développeurs plus expérimentés, il peut être intéressant de structurer et de répéter ce qui est probablement déjà connu.



Liquibase et Flyway sont les principales technologies concurrentes pour résoudre les problèmes de contrôle de version des structures relationnelles dans le monde Java. Le premier est entièrement gratuit, en pratique, il est le plus souvent choisi pour une utilisation, et donc Liquibase est choisi comme le héros de la publication. Cependant, certaines des pratiques décrites peuvent être universelles, selon l'architecture de votre application.


– . , . , , . , .


, :



, :




, , .


1. Liquibase


, , . , . , , . , Liquibase rollback . https://habr.com/ru/post/178665/ , rollback .


2. –


: « Persil — Persil». Liquibase — , . — , — . DBA Architect « », , , SQL Developer.


3. ,


pull , , — , . - — . - — Liquibase. -. , . SQL XML , , , . , .


4. ,


, , . , . Liquibase , , , . , .


5. ,


privacy, , — , , 100% .


6.


, . , , , . - — . , . code review.


7. , !


, , . , , . .



, , , , , -?


1.



4, . , pull request, . :



  1. - , , , .
  2. - 5. Cherry Pick .
  3. .
    Liquibase 4, . 4 . .

, Liquibase, , . validCheckSum, 1.7 - , . https://www.liquibase.org/documentation/changeset.html :


Add a checksum that is considered valid for this changeSet, regardless of what is stored in the database. Used primarily when you need to change a changeSet and don't want errors thrown on databases on which it has already run (not a recommended procedure)

-, .


2. ,



, . , pull request . , , . .


, . , - . , , . , , Foreign Key, . , 100% .



  • , . , - , . , , , .
  • — . , , , . , - .
  • — environment , , .

, , , . , , , , -.


3. Liquibase


, Liquibase, .


, , , , .



:



4.


, , Liquibase , . :


  • .
  • , , .
    . , , .


, , Liquibase . , Liquibase jar , , .


CI/CD \ . Liquibase https://www.liquibase.org/documentation/command_line.html. , .



, . , , . , . , , , – .


All Articles