Gestionnaire de migrations
Plan1. Motivations2. API3. Démo4. Stratégies pour lexistant
MotivationsModifier BDD en continuIndustrialiser ses migrationsRapprocher DBA et DÉV
MotivationsRefactoringModifier une portion de code, en maintenant lasémantique de celui-ci.
MotivationsRefactoringPrincipe de substitution de LiskovCouverture de tests...
MotivationsRefactoring de BDDModifier une partie du schéma (structures, données, triggers,procédures stockées...) tout en ...
MotivationsRefactoring de BDDContrats ?Tests ?Outillage ?http://databaserefactoring.com/
Outillage● Migrate4J BETA● FlywayDB● Liquibase
@author: Nathan Voxland@license: Apache License 2.0@source: Java (GITHUB)@currentVersion: 2.0.5 / 3.0.0.RC2@supports: Orac...
ConceptsHistoriqueChangelog / changesetsPreconditions / contexts
HistoriqueDATABASECHANGELOG+---------------+--------------+------+-----+---------+-------+| Field | Type | Null | Key | De...
Changelog ~ point(s) dentrée<databaseChangeLog xmlns...><include file="my/company/migrations/9.1/changelog.xml"relativeToC...
Changeset ~ unité de migrationIdentité = Path + ID + Auteur<changeSet id="exemple_de_changeset" author="florent.biville"><...
Changeset ~ unité de migrationPourquoi XML* ?1. indépendance vendor2. rollback automatique3. utilisation SQL possible ;-)*...
Changeset ~ rollbackRollback manuel (SQL ou tags Liquibase standards)<changeSet id="exemple_de_changeset" author="florent....
PreconditionsRequête custom ou tags Liquibase standard<changeSet id="only_as_system" author="florent.biville"><comment>Un ...
ContextContexte paramétré à lexécution<changeSet id="exemple_contexte" context="local,test"author="florent.biville"><!-- d...
DÉMOhttps://github.com/fbiville/liquibase-demo
Stratégies pour lexistant : initialisationStratégie n°1 Stratégie n°2 Stratégie n°3Définir 1 état deréférence.Définir tout...
Stratégies pour lexistant : initialisationStratégie n°1 Stratégie n°2 Stratégie n°3+ simple- récupération /exécution du du...
Stratégies pour lexistant : intégrationSpring Maven CLIUtiliser le beanSpringLiquibase.Idéal pourdéploiement surPAAS.Utili...
CONCLUSION
?
Prochain SlideShare
Chargement dans…5
×

Liquibase en action

1 090 vues

Publié le

Présentation Liquibase mise à jour pour être plus exhaustive (v2.0.5) avec une démo plus complète.

Merci de mentionner "Florent Biville" en tant qu'auteur original si vous souhaitez reprendre cette présentation.

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
1 090
Sur SlideShare
0
Issues des intégrations
0
Intégrations
12
Actions
Partages
0
Téléchargements
16
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Liquibase en action

  1. 1. Gestionnaire de migrations
  2. 2. Plan1. Motivations2. API3. Démo4. Stratégies pour lexistant
  3. 3. MotivationsModifier BDD en continuIndustrialiser ses migrationsRapprocher DBA et DÉV
  4. 4. MotivationsRefactoringModifier une portion de code, en maintenant lasémantique de celui-ci.
  5. 5. MotivationsRefactoringPrincipe de substitution de LiskovCouverture de tests...
  6. 6. MotivationsRefactoring de BDDModifier une partie du schéma (structures, données, triggers,procédures stockées...) tout en maintenant sa sémantique.
  7. 7. MotivationsRefactoring de BDDContrats ?Tests ?Outillage ?http://databaserefactoring.com/
  8. 8. Outillage● Migrate4J BETA● FlywayDB● Liquibase
  9. 9. @author: Nathan Voxland@license: Apache License 2.0@source: Java (GITHUB)@currentVersion: 2.0.5 / 3.0.0.RC2@supports: Oracle, MySQL, PostgreSQL, DB2, ...
  10. 10. ConceptsHistoriqueChangelog / changesetsPreconditions / contexts
  11. 11. HistoriqueDATABASECHANGELOG+---------------+--------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+---------------+--------------+------+-----+---------+-------+| ID | varchar(63) | NO | PRI | NULL | || AUTHOR | varchar(63) | NO | PRI | NULL | || FILENAME | varchar(200) | NO | PRI | NULL | || DATEEXECUTED | datetime | NO | | NULL | || ORDEREXECUTED | int(11) | NO | | NULL | || EXECTYPE | varchar(10) | NO | | NULL | || MD5SUM | varchar(35) | YES | | NULL | || DESCRIPTION | varchar(255) | YES | | NULL | || COMMENTS | varchar(255) | YES | | NULL | || TAG | varchar(255) | YES | | NULL | || LIQUIBASE | varchar(20) | YES | | NULL | |+---------------+--------------+------+-----+---------+-------+
  12. 12. Changelog ~ point(s) dentrée<databaseChangeLog xmlns...><include file="my/company/migrations/9.1/changelog.xml"relativeToChangelogFile="true" /><include file="my/company/migrations/10.0/changelog.xml"relativeToChangelogFile="true" /><!-- [...] --></databaseChangeLog>
  13. 13. Changeset ~ unité de migrationIdentité = Path + ID + Auteur<changeSet id="exemple_de_changeset" author="florent.biville"><comment>Vente en ligne de minitels</comment><createTable tableName="minitels"remarks="EVOL-42"><column name="id" type="INTEGER" /></createTable></changeSet>joué une seule fois sauf si runAlways="true"changements ensuite interdits sauf si runOnChange="true"
  14. 14. Changeset ~ unité de migrationPourquoi XML* ?1. indépendance vendor2. rollback automatique3. utilisation SQL possible ;-)* ou JSON/YAML/"SQL annoté"
  15. 15. Changeset ~ rollbackRollback manuel (SQL ou tags Liquibase standards)<changeSet id="exemple_de_changeset" author="florent.biville"><comment>Vente en ligne de minitels</comment><sql>UPDATE Persons SET age = age + 42;</sql><rollback>UPDATE Persons SET age = age - 42;</rollback><!-- <rollback /> pour désactiver le rollback sur un changeset --></changeSet>
  16. 16. PreconditionsRequête custom ou tags Liquibase standard<changeSet id="only_as_system" author="florent.biville"><comment>Un grand pouvoir implique...</comment><preConditions><!-- DRY: <xi:include href="../common/run_as_system.xml" /> --><dbms type="oracle" /><runningAs username="SYSTEM" /></preConditions><!-- danger! high voltage! --></changeSet>
  17. 17. ContextContexte paramétré à lexécution<changeSet id="exemple_contexte" context="local,test"author="florent.biville"><!-- danger! high voltage! --></changeSet>il suffit quun seul des contextes corresponde
  18. 18. DÉMOhttps://github.com/fbiville/liquibase-demo
  19. 19. Stratégies pour lexistant : initialisationStratégie n°1 Stratégie n°2 Stratégie n°3Définir 1 état deréférence.Définir toutes lesmigrations à partir decet état.Inclure un changesetde dump de la BDDde référence.Définir les migrationsensuite.Reconstruire toutesles migrationsmanuellement.Y ajouter ensuite unchangeset de dumpde données.
  20. 20. Stratégies pour lexistant : initialisationStratégie n°1 Stratégie n°2 Stratégie n°3+ simple- récupération /exécution du dump àla charge de chaqueuser+ simple- couplage fort avecle vendor de BDD+ indépendance vis-à-vis du vendor- fastidieux
  21. 21. Stratégies pour lexistant : intégrationSpring Maven CLIUtiliser le beanSpringLiquibase.Idéal pourdéploiement surPAAS.Utiliser le pluginMaven.Idéal pour la CI, aussiriche en options quele client CLI.Utiliser lutilitaire enligne de commandes."Implémentation" deréférence.autres modes disponibles: Ant, listener de Servlet
  22. 22. CONCLUSION
  23. 23. ?

×