db transformation und migration
play

DB Transformation und Migration Pedro Lafuente Blanco tarent - PowerPoint PPT Presentation

DB Transformation und Migration Pedro Lafuente Blanco tarent Solutions GmbH 02.04.12 | Pedro Lafuente Blanco tarent Solutions GmbH Agenda Problemstellung / Anforderungen Kandidaten Liquibase flyway Tests/Use Cases


  1. DB Transformation und Migration Pedro Lafuente Blanco tarent Solutions GmbH 02.04.12 | Pedro Lafuente Blanco – tarent Solutions GmbH

  2. Agenda Problemstellung / Anforderungen Kandidaten – Liquibase – flyway Tests/Use Cases – ServletListener – Spring Empfehlung Q&A 02.04.12 | Pedro Lafuente Blanco – tarent Solutions GmbH 2 von 22

  3. Problemstellung v1.2 v1.1 v1.0 v1.1 ? Spezifikation DEV QS X v1.0 v1.1 v1.0 02.04.12 | Pedro Lafuente Blanco – tarent Solutions GmbH 3 von 22

  4. Anforderungen .log Versionsverwaltung Breite DB Integration in & Protokolle Unterstützung unsere Toolchain Vereinfachung Rollback Unterstützung Graphische Modellierung (unmittelbar und später) der Änderungen 02.04.12 | Pedro Lafuente Blanco – tarent Solutions GmbH 4 von 22

  5. Kandidaten flyway MIGRATEdb Tarantino dbmaintain c5-db-migration migrate4j DBDeploy mybatis AutoPatch solidbase liquibase 02.04.12 | Pedro Lafuente Blanco – tarent Solutions GmbH 5 von 22

  6. ● XML Delta-Skipte (unterstützt auch SQL) ● JDBC-basiert ● Maven-Plugin, CLI, Java API, Spring, Grails ● Erzeugt Rollback-Skripte für viele SQL-Funktionen ● Änderungen und Version in Metadatentabelle abgebildet ● ServletListener Unterstützung ● Cluster-Safe ● Erweiterbar 02.04.12 | Pedro Lafuente Blanco – tarent Solutions GmbH 6 von 22

  7. XML XML db.tarentX.v1.1.xml db.tarentX.a.xml XML SQL XML db.tarentX.v1.2.xml aenderungen.sql db.tarentX.b.xml XML XML db.tarentX.c.xml db.tarentX.master.xml XML 02.04.12 | Pedro Lafuente Blanco – tarent Solutions GmbH 7 von 22

  8. Liquibase XML 02.04.12 | Pedro Lafuente Blanco – tarent Solutions GmbH 8 von 22

  9. ● SQL-basiert ● JDBC-basiert ● Maven-Plugin, CLI, Java API ● Änderungen und Version in Metadatentabelle abgebildet ● Cluster-Safe ● „It just works“ 02.04.12 | Pedro Lafuente Blanco – tarent Solutions GmbH 9 von 22

  10. Base Records SQL SQL V1__Base.sql V1_3__AddingUsers.sql V1 V1.1 NewTables V1.2 SQL V1.3 V1_2__AenderungenTableA.sql SQL V1_1__AenderungenTableB.sql 02.04.12 | Pedro Lafuente Blanco – tarent Solutions GmbH 10 von 22

  11. Testphase Typ Beschreibung Kurze B. 1 DB-Snapshot erzeugen Snapshot Erzeugen 2 Feld employees.testfield (integer) hinzufügen. Feld hinzufügen ... ... ... 5 Feld employees.emp_no entfernen PK/FK entfernen ... ... ... departments.dept_name tmanuel ändern, so dass ein Datensatz die 20char. überschreitet. Datentyp ändern 9 departments.dept_name von varchar(40) in varchar(20) (notok) umwandeln ... ... ... 13 dummytable.number von double in varchar(40) umwandeln Datentyp ändern Feld dummytable.fkemp hinzufügen, und eine Foreing-Key- 14 Beschränkung auf employee.emp_no festlegen. Dabei Rollback- Rollback Script erzeugen. Rollback-Script ausführen. 02.04.12 | Pedro Lafuente Blanco – tarent Solutions GmbH 12 von 22

  12. ServletListener (externes .war) <context-param> <param-name>liquibase.changelog</param-name> <param-value>de.tarent.tarentx.db-master.xml</param-value> </context-param> <context-param> <param-name>liquibase.datasource</param-name> web.xml <param-value>java:comp/env/liquibase/postgresdb</param-value> </context-param> <listener> <listener-class> liquibase.integration.servlet.LiquibaseServletListener + </listener-class> </listener> <Context> <Resource name= "liquibase/postgresdb" auth= "Container" type= "javax.sql.DataSource" context.xml username= "dbmgr" password= "superSecret" driverClassName= "org.postgresql.Driver" url= "jdbc:postgresql://dbserver/tarentx" + maxActive= "8" maxIdle= "4" /> </Context> sql/xml + liquibase.jar im classpath 02.04.12 | Pedro Lafuente Blanco – tarent Solutions GmbH 13 von 22

  13. Spring (im selben .war) <bean id= "liquibase" applicationContext.xml class= "liquibase.integration.spring.SpringLiquibase" > <property name= "dataSource" ref= "dataSource" /> <property name= "changeLog" value= "classpath:liquibase/db-master.xml" /> </bean> + (dataSource wurde vordefiniert) sql/xml + liquibase.jar im classpath 02.04.12 | Pedro Lafuente Blanco – tarent Solutions GmbH 14 von 22

  14. SWOT Strengths Weaknesses - ServletListener-Unterstützung - <include>-Tags benötigt für - Kein DBMS-spezifisches SQL „dependency tree“ - Delta-Dateien können in verschiedenen - Proprietäres XML „dependency trees“ benutzt werden - Fehlerhafte Updates werden nicht in - Snapshots Metadatentabelle abgebildet - „Future rollback“ Skripte - Automatisierung durch Hibernate- - Einige Bugs, obwohl Entwicklung ziemlich Integration aktiv ist - Versionverzweigung - Exportiert nicht alle Objekte: z.B: triggers,procedures und packages. - Versioning für verschiedene DBMS mit nur einem Fileset könnte Fehler anfällig sein. Oportunities Threats 02.04.12 | Pedro Lafuente Blanco – tarent Solutions GmbH 15 von 22

  15. SWOT Strengths Weaknesses - Protokolliert auch nicht erfolgreiche - Keine Möglichkeit, verschiedene Migrationen „dependency trees“ zu bauen, ohne Dateien - Flexibles „Version numbering“ zu duplizieren. - DBMS spezifische SQL ! - Abhängigkeiten werden automatisch erkannt - Keine „future rollback“ Skripte - Keine Snapshots - Narrensichere Implementierung für - Alle Deltas für verschiedene DBMS kleinere Projekte neuzuschreiben Oportunities Threats 02.04.12 | Pedro Lafuente Blanco – tarent Solutions GmbH 16 von 22

  16. Empfehlung Könnte das Skript-per-DBMS Löst nicht das Skript-per-DBMS Problem lösen Problem Evtl. mehr Arbeit auf Grund des XML Würde nicht bei Downgrades helfen Erleichtert Installation & Initialisierung, Kleiner Fortschritt im Vergleich zum auch bei Servlets Status Quo Besser für größere Projekte, Besser für kleinere Projekte, wo sich der Verwaltungsaufwand lohnt die DB-Versionsverwaltung nutzen wollen 02.04.12 | Pedro Lafuente Blanco – tarent Solutions GmbH 17 von 22

  17. Q&A ? XML .log db.tarentX.a.xml SQL aenderungen.sql 02.04.12 | Pedro Lafuente Blanco – tarent Solutions GmbH 18 von 22

  18. ¡Muchas gracias! p.lafuente@tarent.de 02.04.12 | Pedro Lafuente Blanco – tarent Solutions GmbH 19 von 22

Recommend


More recommend