SlideShare ist ein Scribd-Unternehmen logo
1 von 61
Downloaden Sie, um offline zu lesen
www.informatik-aktuell.de
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
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://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
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
◦ Welche Skripte wurden in welcher Reihenfolge ausgeführt
 Integration in eigene Anwendung
(Migration on startup)
 Oder in den Build-Prozess
(Command-Line)
Kein Datenbank-
Administrator mehr
notwendig
Funktionen
Flyway zusätzlich:
SQL Azure
Google Cloud SQL
HP Vertica
AWS Redshift
DB2 on z/OS
SolidDB
beide:
Oracle
SQL Server
DB2
MySQL
PostgreSQL
H2
Hsql
Derby
SQLite
MariaDB
LiquiBase zusätzlich:
Sybase_Enterprise
Sybase_Anywhere
Informix
Firebird
Funktion Beschreibung Flyway LiquiBase
Migration Migriert die Datenabnk auf eine neue Verison anhand
vorliegender SQL-Skripte oder Java-Klassen mit
programmierten Migrationen.
+++
migrate
+++
update
Rollback Versetzt die Datenbank in einen vorherigen Stand - ++
rollback
Schema leeren Löscht alle Objekte (Tabellen, Views, Prozeduren, …)
im konfigurierten Schema
+
clean
+
dropAll
Dokumentation Flyway gibt Details und Statusinformationen
(Metadaten) bisheriger Migrationen aus
LiquiBase erzeugt eine JavaDoc ähnliche
Dokumentation darüber, welche Änderungen an
welchen Tabellen stattgefunden haben.
+
info
++
DBDoc
Funktion Beschreibung Flyway LiquiBase
Vergleich zweier
Datenbanken
Vergleicht zwei Datenbanken im Hinblick darauf, in
welcher Datenbank noch Tabellen, Spalten, Views usw.
fehlen oder zu viel sind. Dabei kann eine Changelog-
Datei erzeugt werden, um im Anschluss die eine DB
auf den Stand der anderen zu bringen
- ++
Diff
Validierung Prüfung, ob DB sich auf dem aktuellsten Stand
befinden oder ob noch Änderungen anstehen
(pending)
+
validate
-
Initialisierung Sofern schon Datenbanken vorhanden sind, erstellt
und initialisiert diese Funktion die dazugehörige
Metadaten-Tabelle
+
baseline
-
Wartung Repariert die Metadaten-Tabelle, d.h. entfernt alle
fehlgeschlagenen Migrationen und korrigiert falsche
Checksummen
+
repair
+
clearChecksums
Funktion Beschreibung Flyway LiquiBase
Callbacks Erlauben es, Aktionen vor oder nach einem
Kommando regelmäßig ausführen zu lassen (z.B.
afterEachMigrate), z.B. für die Vergabe von
Standardrechten an neuen Tabellen
+ -
Vorbedingungen Müssen erfüllt sein, bevor eine Migration startet.
Dadurch kann z.B. geprüft werden, ob ein bestimmtes
DBMS existiert
- +
Kontexte Bewirkt, dass ein Set an Änderungen nur in einer
bestimmten Umgebung ausgeführt wird (z.B. Test
oder Produktion). Es kann auch dafür genutzt werden,
eine Datenbank mit Testdaten zu versorgen.
- ++
Refactoring Bietet Kommandos an, um automatisiert
Optimierungen an der DB durchzuführen.
z.B. addLookupTable: kann aus einer Spalte mit
Referenzdaten eine eigene Tabelle erzeugen und diese
per Fremdschlüssel mit der aktuellen verknüpfen
- ++
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
Einbindung in bestehende Projekte
 Herausforderung
Die aktuellen Datenbank-Stände
nachträglich versionieren
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
LiquiBase
● Stand der Produktion per
generateChangelog als
Version 1 taggen
● Per Diff mit anderen
Umgebungen vergleichen
und changelogs erzeugen
● changelogs als „bereits
gelaufen“ markieren bzw. für
neue Läufe ausschließen
 Flyway geht davon aus, dass die Datenbank-
Version der Produktion die aktuellste ist
 Trifft bei den meisten Projekten nicht zu
 Manuelles Anpassen ist großer Schwachpunkt
 Integration bei LiquiBase durch geschickte
Kombination mächtiger Funktionen deutlich
vielversprechender
Integrationsmöglichkeiten
Flyway:
Java-API
Command-Line
Maven
Ant
Gradle
SBT
LiquiBase:
Java-API
Command-Line
Maven
Ant
Spring (als Bean)
Servlet-Listener (startet, wenn die Seite
deployed wird)
CDI Environment (startet wenn der CDI
Container Bootet)
Flyway LiquiBase
Java-API
Command-Line
Ant
Maven
Gradle
SBT
Spring
Servlet-Listener
CDI-Environment
Inbetriebnahme & Handhabung
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
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
Verfügbare Plug-Ins
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
Rahmenbedingungen
● Community
● Entwicklung
● Dokumentation
● Support
1. Community
LiquiBase ca. 3-4 mal so viele Contributor (152 zu 39)
und Commits wie Flyway (4400 zu 1350)
→ 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 | info@kitenco.de
Vielen Dank an Rebecca Nöll für die Erstellung der Boxring-Grafiken
● Continuous
Delivery
● Application
Lifecycle
Management
● Social-
Collaboration
● Vorträge
● Artikel
● PoCs
● JIRA
● Jenkins
● Confluence
● Schulung
● Coaching
● Training

Weitere ähnliche Inhalte

Was ist angesagt?

EntwicklerCamp 2014 - DOTS reloaded
EntwicklerCamp 2014 - DOTS reloadedEntwicklerCamp 2014 - DOTS reloaded
EntwicklerCamp 2014 - DOTS reloaded
René Winkelmeyer
 
Flexibilitaet mit CDI und Apache DeltaSpike
Flexibilitaet mit CDI und Apache DeltaSpikeFlexibilitaet mit CDI und Apache DeltaSpike
Flexibilitaet mit CDI und Apache DeltaSpike
os890
 

Was ist angesagt? (20)

TYPO3 CMS 6.0 - Die Neuerungen (typovision GmbH)
TYPO3 CMS 6.0 - Die Neuerungen (typovision GmbH)TYPO3 CMS 6.0 - Die Neuerungen (typovision GmbH)
TYPO3 CMS 6.0 - Die Neuerungen (typovision GmbH)
 
Was ist Docker ?
Was ist Docker ?Was ist Docker ?
Was ist Docker ?
 
TYPO3 Migration in komplexen Upgrade- und Relaunch-Projekten
TYPO3 Migration in komplexen Upgrade- und Relaunch-ProjektenTYPO3 Migration in komplexen Upgrade- und Relaunch-Projekten
TYPO3 Migration in komplexen Upgrade- und Relaunch-Projekten
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-Patterns
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
 
C++ Dependency Management 2.0
C++ Dependency Management 2.0C++ Dependency Management 2.0
C++ Dependency Management 2.0
 
Dnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbookDnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbook
 
Typo3 4.3 Die Neuerungen im Überblick
Typo3 4.3 Die Neuerungen im ÜberblickTypo3 4.3 Die Neuerungen im Überblick
Typo3 4.3 Die Neuerungen im Überblick
 
Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit Vagrant
Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit VagrantDeployment von Entwicklungsumgebungen eines TYPO3-Intranets mit Vagrant
Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit Vagrant
 
Back to the future - Plone 5.2 und Python 3 Migration am Beispiel Onkopedia
Back to the future - Plone 5.2 und Python 3 Migration am Beispiel OnkopediaBack to the future - Plone 5.2 und Python 3 Migration am Beispiel Onkopedia
Back to the future - Plone 5.2 und Python 3 Migration am Beispiel Onkopedia
 
TYPO3 Performance (TYPO3camp München)
TYPO3 Performance (TYPO3camp München)TYPO3 Performance (TYPO3camp München)
TYPO3 Performance (TYPO3camp München)
 
Jenkins Acceleration
Jenkins AccelerationJenkins Acceleration
Jenkins Acceleration
 
Fix & fertig: Best Practises für "XPages-Migranten"
Fix & fertig: Best Practises für "XPages-Migranten"Fix & fertig: Best Practises für "XPages-Migranten"
Fix & fertig: Best Practises für "XPages-Migranten"
 
Deploy Magento Shops with Capistrano v3
Deploy Magento Shops with Capistrano  v3Deploy Magento Shops with Capistrano  v3
Deploy Magento Shops with Capistrano v3
 
Git vs SVN - Eine vergleichende Einführung
Git vs SVN - Eine vergleichende EinführungGit vs SVN - Eine vergleichende Einführung
Git vs SVN - Eine vergleichende Einführung
 
EntwicklerCamp 2014 - DOTS reloaded
EntwicklerCamp 2014 - DOTS reloadedEntwicklerCamp 2014 - DOTS reloaded
EntwicklerCamp 2014 - DOTS reloaded
 
Welches Versionskontrollsystem sollte ich nutzen? (SVN, Git, Hg)
Welches Versionskontrollsystem sollte ich nutzen? (SVN, Git, Hg)Welches Versionskontrollsystem sollte ich nutzen? (SVN, Git, Hg)
Welches Versionskontrollsystem sollte ich nutzen? (SVN, Git, Hg)
 
Our way to 19c - DOAG 2020
Our way to 19c - DOAG 2020Our way to 19c - DOAG 2020
Our way to 19c - DOAG 2020
 
Flexibilitaet mit CDI und Apache DeltaSpike
Flexibilitaet mit CDI und Apache DeltaSpikeFlexibilitaet mit CDI und Apache DeltaSpike
Flexibilitaet mit CDI und Apache DeltaSpike
 
oVirt 3.5 - Einführung und Evaluierungsergebnisse
oVirt 3.5 - Einführung und EvaluierungsergebnisseoVirt 3.5 - Einführung und Evaluierungsergebnisse
oVirt 3.5 - Einführung und Evaluierungsergebnisse
 

Ähnlich wie Stephan Kaps – IT-Tage 2015 – Flyway vs. LiquiBase – Battle der Datenbankmigrationstools

Best Practices SharePoint and SQL Installation
Best Practices SharePoint and SQL InstallationBest Practices SharePoint and SQL Installation
Best Practices SharePoint and SQL Installation
Samuel Zürcher
 
Java Magazin 5 / 2010 - Twitter nachgebaut mit Lift
Java Magazin 5 / 2010 - Twitter nachgebaut mit LiftJava Magazin 5 / 2010 - Twitter nachgebaut mit Lift
Java Magazin 5 / 2010 - Twitter nachgebaut mit Lift
Johannes Hohenbichler
 
Boost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with DockerBoost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with Docker
Steven Grzbielok
 

Ähnlich wie Stephan Kaps – IT-Tage 2015 – Flyway vs. LiquiBase – Battle der Datenbankmigrationstools (20)

Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools
Javaland 2016 - Flyway vs. LiquiBase - Battle der DatenbankmigrationstoolsJavaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools
Javaland 2016 - Flyway vs. LiquiBase - Battle der Datenbankmigrationstools
 
DWX 2016 -Build and Release Management
DWX 2016 -Build and Release ManagementDWX 2016 -Build and Release Management
DWX 2016 -Build and Release Management
 
20160310_ModernApplicationDevelopment_NoSQL_KPatenge
20160310_ModernApplicationDevelopment_NoSQL_KPatenge20160310_ModernApplicationDevelopment_NoSQL_KPatenge
20160310_ModernApplicationDevelopment_NoSQL_KPatenge
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-Patterns
 
Java magazin9 2012_wls 12c_das_dutzend_ist_voll
Java magazin9 2012_wls 12c_das_dutzend_ist_vollJava magazin9 2012_wls 12c_das_dutzend_ist_voll
Java magazin9 2012_wls 12c_das_dutzend_ist_voll
 
Dnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyondDnug35 ak-dev.071111-beyond
Dnug35 ak-dev.071111-beyond
 
Best Practices SharePoint and SQL Installation
Best Practices SharePoint and SQL InstallationBest Practices SharePoint and SQL Installation
Best Practices SharePoint and SQL Installation
 
Java Magazin - Lift
Java Magazin - LiftJava Magazin - Lift
Java Magazin - Lift
 
Java Magazin 5 / 2010 - Twitter nachgebaut mit Lift
Java Magazin 5 / 2010 - Twitter nachgebaut mit LiftJava Magazin 5 / 2010 - Twitter nachgebaut mit Lift
Java Magazin 5 / 2010 - Twitter nachgebaut mit Lift
 
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im ÜberblickBig Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
 
20190604_DOAGDatabase2019_OracleNoSQLDB_for_DBAs
20190604_DOAGDatabase2019_OracleNoSQLDB_for_DBAs20190604_DOAGDatabase2019_OracleNoSQLDB_for_DBAs
20190604_DOAGDatabase2019_OracleNoSQLDB_for_DBAs
 
.NET zu .NET Core
.NET zu .NET Core.NET zu .NET Core
.NET zu .NET Core
 
Icinga 2009 at Nagios Workshop
Icinga 2009 at Nagios WorkshopIcinga 2009 at Nagios Workshop
Icinga 2009 at Nagios Workshop
 
Boost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with DockerBoost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with Docker
 
C / C++ Api for Beginners
C / C++ Api for BeginnersC / C++ Api for Beginners
C / C++ Api for Beginners
 
Was gibt es Neues im Docker-Universum
Was gibt es Neues im Docker-UniversumWas gibt es Neues im Docker-Universum
Was gibt es Neues im Docker-Universum
 
iJUG Java Aktuell [Februar 2015] Lukas Eder - jOOQ - ein alternativer Weg mit...
iJUG Java Aktuell [Februar 2015] Lukas Eder - jOOQ - ein alternativer Weg mit...iJUG Java Aktuell [Februar 2015] Lukas Eder - jOOQ - ein alternativer Weg mit...
iJUG Java Aktuell [Februar 2015] Lukas Eder - jOOQ - ein alternativer Weg mit...
 
Sql Server GrundlagenfüR Share Point Admins
Sql Server GrundlagenfüR Share Point AdminsSql Server GrundlagenfüR Share Point Admins
Sql Server GrundlagenfüR Share Point Admins
 
Sql Server Grundlagen für Sharepoint Administratoren
Sql Server Grundlagen für Sharepoint AdministratorenSql Server Grundlagen für Sharepoint Administratoren
Sql Server Grundlagen für Sharepoint Administratoren
 
Migration zum Zend Framework 3
Migration zum Zend Framework 3Migration zum Zend Framework 3
Migration zum Zend Framework 3
 

Stephan Kaps – IT-Tage 2015 – Flyway vs. LiquiBase – Battle der Datenbankmigrationstools