Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL...

60
Flyway vs. LiquiBase Battle der Datenbankmigrationstools

Transcript of Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL...

Page 1: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase

Flyway

vs.

LiquiBase

Battle der Datenbankmigrationstools

Page 2: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase

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: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase

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: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase
Page 5: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase
Page 6: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase
Page 7: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase
Page 8: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase

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

Page 9: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase

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: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase

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: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase

Continuous Delivery?

Kontrollierte DB-Änderungen

Keine Downtime

Page 12: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase

Quellcode wird versioniert,

DB-Änderungen sollten auch!

Page 13: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase
Page 14: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase

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

Page 15: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase
Page 16: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase

Integration in eigene Anwendung

(Migration on startup)

Oder in den Build-Prozess

(Command-Line, Ant, …)

Page 17: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase

Kein Datenbank-Administrator mehr

notwendig

Page 18: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase
Page 19: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase
Page 20: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase
Page 21: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase
Page 22: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase
Page 23: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase

Link

Page 24: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase
Page 25: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase
Page 26: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase

Funktionen

Page 27: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase

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: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase

Funktion Flyway LiquiBase

Migration +++

migrate

+++

update

Rollback - ++

rollback

Schema leeren +

clean

+

dropAll

Dokumentation +

info

++

DBDoc

Page 29: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase

Funktion Flyway LiquiBase

Vergleich zweier Datenbanken

- ++

Diff

Validierung +

validate

-

Initialisierung +

baseline

-

Wartung +

repair

+

clearChecksums

Page 30: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase

Funktion Flyway LiquiBase

Callbacks + -

Vorbedingungen - +

Kontexte - ++

Refactoring - ++

Page 31: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase

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: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase
Page 33: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase

Einbindung in bestehende Projekte

Page 34: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase

Herausforderung

Die aktuellen Datenbank-Stände

nachträglich versionieren

Page 35: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase

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: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase

Integration bei LiquiBase

durch geschickte Kombination

mächtiger Funktionen

deutlich vielversprechender

Page 37: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase
Page 38: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase

Integrationsmöglichkeiten

Page 39: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase

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: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase

Flyway LiquiBase

Java-API

Command-Line

Ant

Maven

Gradle

SBT

Spring

Servlet-Listener

CDI-Environment

Page 41: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase
Page 42: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase

Inbetriebnahme & Handhabung

Page 43: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase

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: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase

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: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase
Page 46: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase

Verfügbare Plug-Ins

Page 47: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase

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: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase
Page 49: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase

Rahmenbedingungen

Page 50: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase

● Community

● Entwicklung

● Dokumentation

● Support

Page 51: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase

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: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase

2. Entwicklung

LiquiBase deutlich mehr Tickets (auch offene)

Aber auch deutlich weitere Verbreitung

Releases bei beiden eher unregelmäßig

→ Unentschieden

Page 53: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase

3. Dokumentation

Flyway:

alles sehr gut beschrieben, kurz aber verständlich

LiquiBase:

alles sehr gut beschrieben, mehr Umfang da mehr Features,

→ Unentschieden

Page 54: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase

4. professioneller Support

Flyway: ja, sogar auf deutsch

LiquiBase: ja, Sprache Englisch, da Firmensitz Texas

→ Vorteil Flyway

Page 55: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase

● Community → LiquiBase

● Entwicklung → Unentschieden

● Dokumentation → Unentschieden

● Support → Flyway

→ insgesamt Unentschieden

Page 56: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase
Page 57: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase

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: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase

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: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase

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: Flyway vs. LiquiBase - doag.org · PDF fileSybase ASE * SAP HANA * Apache Phoenix ... MySQL PostgreSQL H2 Hsql Derby SQLite MariaDB LiquiBase zusätzlich: Sybase_Enterprise Sybase

● Continuous

Delivery

● ApplicationLifecycleManagement

● Social-Collaboration

● Vorträge

● Artikel

● PoCs

● JIRA

● Jenkins

● Confluence

● Schulung

● Coaching

● Training