vs.

Battle der Datenbankmigrationstools Techn. Projektleiter Leidenschaft sind neue Software- Technologien Architekt und Methoden

ISTQB, ISAQB, IREB und ITIL JEE – SOA - Host zertifiziert

Speaker & Autor Java seit 2002 Einleitung Funktionsweise BATTLE 1.Runde: Funktionen 2.Runde: Einbindung in bestehende Projekte 3.Runde: Integrationsmöglichkeiten 4.Runde: Inbetriebnahme und Handhabung 5.Runde: Verfügbare Plug-Ins 6.Runde: Rahmenbedingungen

http://games.on.net/2013/08/saints-row-4-steam-release-date-changes-again-now-just-says-september/ http://www.ihatecellulite.com/images/quick-fix-for-cellulite.jpg

http://games.on.net/2013/08/saints-row-4-steam-release-date-changes-again-now-just-says-september/ http://www.ihatecellulite.com/images/quick-fix-for-cellulite.jpg

http://www.oio.de/m/konf/diverse/Continuous-database-design-JUGH2015.pdf http://games.on.net/2013/08/saints-row-4-steam-release-date-changes-again-now-just-says-september/ Continuous Delivery?

 Kontrollierte DB-Änderungen

 Keine Downtime Quellcode wird versioniert, DB-Änderungen sollten auch!

 merken sich in einer von ihnen selbst verwalteten Metatabelle für jedes Schema den aktuellen Versionsstand der jeweiligen Datenbank

 Integration in eigene Anwendung (Migration on startup)

 Oder in den Build-Prozess (Command-Line, Ant, …) Kein Datenbank- Administrator mehr notwendig

Link

Funktionen Flyway zusätzlich: beide: LiquiBase zusätzlich:

SQL Azure Oracle Sybase_Enterprise

Google Cloud SQL SQL Server Sybase_Anywhere

HP Vertica DB2 Informix

AWS Redshift MySQL Firebird

DB2 on z/OS PostgreSQL

SolidDB H2

Sybase ASE * Hsql

SAP HANA * Derby

Apache Phoenix * SQLite

MariaDB Funktion Flyway LiquiBase Migration +++ +++ migrate update

Rollback - ++ rollback

Schema leeren + + clean dropAll

Dokumentation + ++ info DBDoc Funktion Flyway LiquiBase Vergleich zweier - ++ Datenbanken Diff

Validierung + - validate

Initialisierung + - baseline

Wartung + + repair clearChecksums Funktion Flyway LiquiBase Callbacks + -

Vorbedingungen - +

Kontexte - ++

Refactoring - ++ Flyway LiquiBase

Endergebnis 9 16

Außerhalb der Wertung: Die Funktion updateSQL von LiquiBase Ermöglicht, die anstehende Migration zunächst als SQL-Befehle auszugeben, z.B. zu Review- Zwecken. Ist bei Flyway nicht relevant, da Plain-SQL-Skripte verwendet werden

Einbindung in bestehende Projekte  Herausforderung

Die aktuellen Datenbank-Stände nachträglich versionieren Flyway LiquiBase

● Manuellen Abzug (DDL) der ● Stand der Produktion per Produktion erzeugen als Version 1 generateChangelog als Version 1 Skript taggen

● Per clean alle anderen Datenbanken ● Per Diff mit anderen Umgebungen leeren und auf Version 1 migrieren vergleichen und changelogs erzeugen ● Oder manuell auf den Stand der

Produktion bringen und per ● changelogs als „bereits gelaufen“ baseline-Befehl den Stand als markieren bzw. für neue Läufe Version 1 setzen ausschließen Integration bei LiquiBase durch geschickte Kombination mächtiger Funktionen deutlich vielversprechender

Integrationsmöglichkeiten Flyway: LiquiBase:

Java-API Java-API

Command-Line Command-Line

Maven Maven

Ant Ant

Gradle Spring (als Bean)

SBT Servlet-Listener

CDI Environment Flyway LiquiBase Java-API Command-Line Ant Maven SBT Spring Servlet-Listener CDI-Environment

Inbetriebnahme & Handhabung Flyway LiquiBase

● Archiv entpacken ● Archiv entpacken

● DB-Treiber inklusive ● DB-Treiber besorgen

● Sehr einfach für neue Projekte ● Konfigurationsdatei selbst anlegen

● Konfigurationsvorlage ● SQL-Skripte anpassen bzw. changelog.xml erstellen ● SQL-Skripte 1:1 verwendbar

● Aufruf mit einer Zeile in der ● Aufruf mit einer Zeile in der Konsole Konsole Vorteile Nachteile

Flyway - Einfache Konfiguration, vieles - Im Fehlerfall ist kein automatisches wird direkt mitgeliefert Rollback möglich - Die Einbindung in Java ist sehr einfach - Generell leicht zu erlernen und einzusetzen

LiquiBase - Automatisches Rollback - Viele Parameter für die erleichtert die Handhabung im Kommando-Zeile notwendig Fehlerfall - Schwerer zu erlernen (z.B. Syntax für Changelog-Datei) - Einbindung in Java ist nicht beschrieben, nur JavaDoc steht online bereit

Verfügbare Plug-Ins Flyway:

Spring Boot & Roo, , Play, DropWizard, ... http://flywaydb.org/documentation/pluginsThirdParty.html

LiquiBase:

Hauptsächlich DB-Extensions https://liquibase.jira.com/wiki/display/CONTRIB/Liquibase+Extensions+Portal

LiquiBase hat mehr, Flyway aber die interessanteren

Rahmenbedingungen ● Community

● Entwicklung

● Dokumentation

● Support 1. Community

LiquiBase ca. 3-4 mal so viele Contributor (189 zu 51) und Commits wie Flyway (4952 zu 1540) [Stand 08.03.16]

→ Vorteil LiquiBase 2. Entwicklung

LiquiBase deutlich mehr Tickets (auch offene) Aber auch deutlich weitere Verbreitung Releases bei beiden eher unregelmäßig

→ Unentschieden 3. Dokumentation Flyway: alles sehr gut beschrieben, kurz aber verständlich

LiquiBase: alles sehr gut beschrieben, mehr Umfang da mehr Features,

→ Unentschieden 4. professioneller Support

Flyway: ja, sogar auf deutsch LiquiBase: ja, Sprache Englisch, da Firmensitz Texas

→ Vorteil Flyway ● Community → LiquiBase

● Entwicklung → Unentschieden

● Dokumentation → Unentschieden

● Support → Flyway

→ insgesamt Unentschieden

Knapper Sieg für LiquiBase, aber … Entscheidung für Flyway oder LiquiBase hängt von anderen Faktoren ab:

● Wird im Projekt eine spezielle Datenbank verwendet, die nur ein Tool unterstützt?

● Will man seine bisherigen SQL-Skripte 1:1 weiterverwenden?

● Kann man auf Rollbacks verzichten? (z.B. durch geschickte Forward- Migrationen)

● Benötigt man deutschen Support?

● Will man seine Testdaten mit verwalten lassen?

● Will man diverse DBMS unterstützen?

● Wie groß ist das Entwicklerteam?  Unterstützung von NoSQL-Datenbanken ist noch offen

 Starten Sie mit einem kleinen neuen Projekt

 Machen Sie behutsam auf die Vorteile aufmerksam

 Es sind nicht nur technische Hürden zu überwinden Noch Fragen?

Artikel dazu in ObjektSpektrum 2/2015

Stephan Kaps | @kitenco1 | [email protected]

Vielen Dank an Rebecca Nöll für die Erstellung der Boxring-Grafiken ● ● Continuous Application ● Social- Delivery Lifecycle Collaboration Management

● Schulung ● JIRA ● Vorträge

● Coaching ● ● Artikel

● Training ● Confluence ● PoCs