60
Flyway vs. LiquiBase Battle der Datenbankmigrationstools

Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools

Embed Size (px)

Citation preview

Page 1: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools

Flyway

vs.

LiquiBase

Battle der Datenbankmigrationstools

Page 2: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools

Techn.

Projektleiter

Software-

Architekt

JEE – SOA - Host

Java seit 2002Speaker & Autor

ISTQB, ISAQB,

IREB und ITIL

zertifiziert

Leidenschaft

sind neue

Technologien

und Methoden

Page 3: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools

Einleitung

Funktionsweise

BATTLE1.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

Page 4: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools
Page 5: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools
Page 6: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools
Page 7: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools
Page 8: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools

http://games.on.net/2013/08/saints-row-4-steam-release-date-changes-again-now-just-says-september/

Page 9: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools

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

Page 10: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools

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

Page 11: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools

Continuous Delivery?

Kontrollierte DB-Änderungen

Keine Downtime

Page 12: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools

Quellcode wird versioniert,

DB-Änderungen sollten auch!

Page 13: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools
Page 14: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools

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

Page 15: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools
Page 16: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools

Integration in eigene Anwendung

(Migration on startup)

Oder in den Build-Prozess

(Command-Line, Ant, …)

Page 17: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools

Kein Datenbank-Administrator mehr

notwendig

Page 18: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools
Page 19: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools
Page 20: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools
Page 21: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools
Page 22: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools
Page 23: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools

Link

Page 24: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools
Page 25: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools
Page 26: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools

Funktionen

Page 27: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools

Flyway zusätzlich:

SQL Azure

Google Cloud SQL

HP Vertica

AWS Redshift

DB2 on z/OS

SolidDB

Sybase ASE *

SAP HANA *

Apache Phoenix *

beide:

Oracle

SQL Server

DB2

MySQL

PostgreSQL

H2

Hsql

Derby

SQLite

MariaDB

LiquiBase zusätzlich:

Sybase_Enterprise

Sybase_Anywhere

Informix

Firebird

Page 28: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools

Funktion Flyway LiquiBase

Migration +++

migrate

+++

update

Rollback - ++

rollback

Schema leeren +

clean

+

dropAll

Dokumentation +

info

++

DBDoc

Page 29: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools

Funktion Flyway LiquiBase

Vergleich zweier Datenbanken

- ++

Diff

Validierung +

validate

-

Initialisierung +

baseline

-

Wartung +

repair

+

clearChecksums

Page 30: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools

Funktion Flyway LiquiBase

Callbacks + -

Vorbedingungen - +

Kontexte - ++

Refactoring - ++

Page 31: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools

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

Flyway LiquiBase

Endergebnis 9 16

Page 32: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools
Page 33: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools

Einbindung in bestehende Projekte

Page 34: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools

Herausforderung

Die aktuellen Datenbank-Stände

nachträglich versionieren

Page 35: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools

LiquiBase

● Stand der Produktion per generateChangelog als Version 1 taggen

● Per Diff mit anderen Umgebungen vergleichen und changelogserzeugen

● changelogs als „bereits gelaufen“ markieren bzw. für neue Läufe ausschließen

Flyway

● Manuellen Abzug (DDL) der Produktion erzeugen als Version 1 Skript

● Per clean alle anderen Datenbanken leeren und auf Version 1 migrieren

● Oder manuell auf den Stand der Produktion bringen und per baseline-Befehl den Stand als Version 1 setzen

Page 36: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools

Integration bei LiquiBase

durch geschickte Kombination

mächtiger Funktionen

deutlich vielversprechender

Page 37: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools
Page 38: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools

Integrationsmöglichkeiten

Page 39: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools

Flyway:

Java-API

Command-Line

Maven

Ant

Gradle

SBT

LiquiBase:

Java-API

Command-Line

Maven

Ant

Spring (als Bean)

Servlet-Listener

CDI Environment

Page 40: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools

Flyway LiquiBase

Java-API

Command-Line

Ant

Maven

Gradle

SBT

Spring

Servlet-Listener

CDI-Environment

Page 41: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools
Page 42: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools

Inbetriebnahme & Handhabung

Page 43: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools

Flyway

● Archiv entpacken

● DB-Treiber inklusive

● Sehr einfach für neue Projekte

● Konfigurationsvorlage

● SQL-Skripte 1:1 verwendbar

● Aufruf mit einer Zeile in der Konsole

LiquiBase

● Archiv entpacken

● DB-Treiber besorgen

● Konfigurationsdatei selbst anlegen

● SQL-Skripte anpassen bzw. changelog.xml erstellen

● Aufruf mit einer Zeile in der Konsole

Page 44: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools

Vorteile Nachteile

Flyway - Einfache Konfiguration, vieles wird direkt mitgeliefert

- Die Einbindung in Java ist sehr einfach

- Generell leicht zu erlernen und einzusetzen

- Im Fehlerfall ist kein automatisches Rollback möglich

LiquiBase - Automatisches Rollback erleichtert die Handhabung im Fehlerfall

- Viele Parameter für die Kommando-Zeile notwendig

- Schwerer zu erlernen (z.B. Syntax für Changelog-Datei)

- Einbindung in Java ist nicht beschrieben, nur JavaDoc steht online bereit

Page 45: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools
Page 46: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools

Verfügbare Plug-Ins

Page 47: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools

Flyway:Spring Boot & Roo, Grails, 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

Page 48: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools
Page 49: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools

Rahmenbedingungen

Page 50: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools

● Community

● Entwicklung

● Dokumentation

● Support

Page 51: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools

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

Page 52: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools

2. Entwicklung

LiquiBase deutlich mehr Tickets (auch offene)

Aber auch deutlich weitere Verbreitung

Releases bei beiden eher unregelmäßig

→ Unentschieden

Page 53: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools

3. Dokumentation

Flyway:

alles sehr gut beschrieben, kurz aber verständlich

LiquiBase:

alles sehr gut beschrieben, mehr Umfang da mehr Features,

→ Unentschieden

Page 54: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools

4. professioneller Support

Flyway: ja, sogar auf deutsch

LiquiBase: ja, Sprache Englisch, da Firmensitz Texas

→ Vorteil Flyway

Page 55: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools

● Community → LiquiBase

● Entwicklung → Unentschieden

● Dokumentation → Unentschieden

● Support → Flyway

→ insgesamt Unentschieden

Page 56: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools
Page 57: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools

Knapper Sieg für LiquiBase, aber … Entscheidung für Flyway oder LiquiBasehä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?

Page 58: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools

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

Page 59: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools

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

Page 60: Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools

● Continuous

Delivery

● ApplicationLifecycleManagement

● Social-Collaboration

● Vorträge

● Artikel

● PoCs

● JIRA

● Jenkins

● Confluence

● Schulung

● Coaching

● Training