SlideShare una empresa de Scribd logo
1 de 18
Datenbank-Refactoring mit LiquiBase
Agile Software-Entwicklung mit
RDBMS Refactoring & Change Management

Benjamin Schmid
Softwareentwicklung in der Praxis
Hervorragende Lösungen beim Programmcode für:
• Versionierung

SVN, CVS

• Build- und
Test-Automatisierung

Ant,Maven
CI-Server

• Abstraktion und Modellierung
• Refactoring

UML

Eclipse, IDEA

Und für die Datenbank?

Datenbank-Refactoring mit Liquibase, Benjamin Schmid

#2
Datenbank-Entwicklung in der Praxis
Welchen Stand hat die Datenbank?
‚Unknown column‘: Sind deine
Änderungen schon drin?
Wie nenne ich noch mal
schnell die Spalte um?
BIGINT in MySQL Und für Oracle?
Uuups! Können wir schnell
zurück zur vorigen Version?
Nerv! Geht das alles
nicht auch automatisch?
Datenbank-Refactoring mit Liquibase, Benjamin Schmid

#3
Open-Source (LGPL)-Lösung zur
Ausführung, Management und Dokumentation
von Datenbankänderungen
Kern-Features:
• Herstellerunabhängig

• Code-Branchfähig

• Automatisierung

• Teamfähig & ‚DBA-fähig‘

• Rollback-Strategie

• IDE Support

• Änderungsdokumentation

Datenbank-Refactoring mit Liquibase, Benjamin Schmid

#4
What‘s so special about LiquiBase?
• Kein Soll/Ist ‚Diff-Tool‘ sondern
Beschreibung der Änderungen
- Erhalt der Semantik
(name name2: rename oder drop+new ?)

• Änderungen werden einzeln betrachtet
- Keine linearer Versionierung ( Branches)
- Change Log wird sequentiell abgearbeitet;
die ausstehenden Änderungen ausgeführt

• … und in einer Tabelle protokolliert

Datenbank-Refactoring mit Liquibase, Benjamin Schmid

#5
Unterstützte Datenbanken
• Oracle

• HLSQL

• MS SQL

• Apache Derby

• MySQL

• H2

• PostgreSQL

• Caché

• DB2

• MaxDB

• Sybase

• SQLlite

Datenbank-Refactoring mit Liquibase, Benjamin Schmid

#6

-
Wie funktionierts? (1)
In einer XML-Datei/via IDE werden alle Änderungen
in als Change Sets beschrieben & gepflegt:

ID = id + author + filename
Change Set durch MD5 Hash gesichert
Datenbank-Refactoring mit Liquibase, Benjamin Schmid

#7
Verfügbare Refactorings
13 Structural Refactorings
Add/Rename/Drop: Colum/Table/View
Merge Columns, Stored Procedure

10 Data Quality Refactorings
Add/Drop: Constraint/Lookup-Table/Sequence/Default Value

4 Referential Integrity Refactorings
Add/Drop: Foreign & Primary Keys

5 Non-Refactoring Transformations
Insert/Load/Update/Delete Data

4 Custom Refactorings
Custom SQL/Refactoring Class/Shell Command

2 Index Refactorings
Datenbank-Refactoring mit Liquibase, Benjamin Schmid, eXXcellent solutions

#8
Wie funktionierts? (2)
Ausführung der Change Sets über LiquiBase Runner:
Ant, Maven, Kommandozeile,
Servlet Listener, via API, Spring, Grails.
Beispiel in Ant:

Datenbank-Refactoring mit Liquibase, Benjamin Schmid

#9
Wie funktionierts? (3)
Folgende Operationen sind möglich:
• Automatische Migration auf akt. Stand
• Nur Prüfung auf offene Änderungen
• DDL-Skript Generierung
(inkl. zugehörigem Rollback-Skript)

• Change Sets aus Datenbank-Diff erzeugen
(Special Feature: Diff gegen Hibernate-Mapping!)

• Rollback, Datenbankstand taggen,
Änderungsdokumentation, Drop-all, …

Datenbank-Refactoring mit Liquibase, Benjamin Schmid

#10
Änderung von Code & Datenbank über die Zeit
Codeänderung
Codeänderung

v 2.0

Codeänderung

LiquiBase
Change
LiquiBase Set
Change Set

VersionVerwaltung
Datenbank-Refactoring mit Liquibase, Benjamin Schmid

LiquiBase
Change Set

1.1

Codeänderung
Codeänderung

v 1.0

LiquiBase
Change
LiquiBase Set
Change Set

Effektives
LiquiBase
Change Log

Aktuelle
Datenbank
(+ Change Log)
#11
IDE Support
Hervorragende verwendbar mit IDE-Bordmitteln
Umfangreiches IntelliSense dank XML Schema
• IntelliJ IDEA Plugin
Aktuellste Fassung (v1.8.0) und größter Umfang
• Eclipse Plugin
Alpha-Status und aktuell veraltet (v0.6)
• Standalone IDE
Veraltet und eher Technolgie-Demo (v 0.6)

Datenbank-Refactoring mit Liquibase, Benjamin Schmid

#12
IDE Demo
PowerPoint iss‘ doof…

Datenbank-Refactoring mit Liquibase, Benjamin Schmid

#13
Tagging & Rollback
Rollback-Wege:
automatisch
create table drop table
drop table n/a
explizite Definition:
LiquiBase Refactorings
SQL Anweisungen
Re-do Change Set Y

Datenbank-Refactoring mit Liquibase, Benjamin Schmid

Rollbackpunkte:
• Datum / Uhrzeit
• Number of Changes
• Markierte Version
(Tag)

#14
Weitere Features
• MD5 gesicherte Change Sets
(Erkennen nachträglicher Änderungen)
• runalways bzw. runonchange
• Generierung einer Änderungsdokumentation
• Hibernate Support
(diff gegen Mapping Dateien: *.hbm.xml)
• Clusterfähig (Locking) und Contexts
• Preconditions und Assertions zur Zielplattform

Datenbank-Refactoring mit Liquibase, Benjamin Schmid

#15
Änderungsdokumentation

Datenbank-Refactoring mit Liquibase, Benjamin Schmid

#16
Fazit
Mit Liquibase können Sie spielend
• Automatisiert beim Start ihre Datenbanken migrieren
• Die Datenbank adäquat wie Ihren Code behandeln
• DBA-konform Migrations- & Rollback Skripte erzeugen
Und durch den Automatismus ideal für
• Software-Entwicklung im Team
• Continuous Integration und Testing
• einen agilen und
robusten Entwicklungsprozess
• regelmäßige Auslieferungen
Datenbank-Refactoring mit Liquibase, Benjamin Schmid

#17
Referenzen
Kontakt:
B.Schmid(at)exxcellent.de
oder an unserem Stand
LiquiBase
http://www.liquibase.org/

Materialien zum Thema
Refactoring & Code Qualität
Der 10 Punke Plan zum unwartbaren Code,
Automatisiertees GUI-Testing, Refactorings, …

http://www.exxcellent.de/download.html
Alternativen (OSS)
dbdeploy
http://dbdeploy.com
MIGRATEdb

http://migratedb.sourceforge.net/

Datenbank-Refactoring mit Liquibase, Benjamin Schmid

#18

Más contenido relacionado

Destacado

高速移動網路新時代 - 雲端與物聯網發展新趨勢 (An Integration Trend of Terminal Devices, IoT and C...
高速移動網路新時代  - 雲端與物聯網發展新趨勢 (An Integration Trend of Terminal Devices, IoT and C...高速移動網路新時代  - 雲端與物聯網發展新趨勢 (An Integration Trend of Terminal Devices, IoT and C...
高速移動網路新時代 - 雲端與物聯網發展新趨勢 (An Integration Trend of Terminal Devices, IoT and C...
William Liang
 
01 リスティング広告マニュアル 基礎編
01 リスティング広告マニュアル 基礎編01 リスティング広告マニュアル 基礎編
01 リスティング広告マニュアル 基礎編
wombase
 

Destacado (18)

QSpiders - Interacting with My SQL Database
QSpiders - Interacting with My SQL DatabaseQSpiders - Interacting with My SQL Database
QSpiders - Interacting with My SQL Database
 
Optimizing Your Workforce Productivity & Retention - Human Capital Insights -...
Optimizing Your Workforce Productivity & Retention - Human Capital Insights -...Optimizing Your Workforce Productivity & Retention - Human Capital Insights -...
Optimizing Your Workforce Productivity & Retention - Human Capital Insights -...
 
poster-linked
poster-linkedposter-linked
poster-linked
 
Diving into sql server 2016
Diving into sql server 2016Diving into sql server 2016
Diving into sql server 2016
 
CASD Research Writing Workshop.KA.2016.
CASD Research Writing Workshop.KA.2016.CASD Research Writing Workshop.KA.2016.
CASD Research Writing Workshop.KA.2016.
 
Jsp applet
Jsp appletJsp applet
Jsp applet
 
Trivadis TechEvent 2016 A few thoughts on the subject Continuous integration ...
Trivadis TechEvent 2016 A few thoughts on the subject Continuous integration ...Trivadis TechEvent 2016 A few thoughts on the subject Continuous integration ...
Trivadis TechEvent 2016 A few thoughts on the subject Continuous integration ...
 
Challenges and Best Practices of Database Continuous Delivery
Challenges and Best Practices of Database Continuous DeliveryChallenges and Best Practices of Database Continuous Delivery
Challenges and Best Practices of Database Continuous Delivery
 
Oracle Engineered Systems - Chance oder Risiko?
Oracle Engineered Systems - Chance oder Risiko?Oracle Engineered Systems - Chance oder Risiko?
Oracle Engineered Systems - Chance oder Risiko?
 
Lizenzfallen aus der Praxis - Was ist denn jetzt mit der Virtualisierung?
Lizenzfallen aus der Praxis - Was ist denn jetzt mit der Virtualisierung?Lizenzfallen aus der Praxis - Was ist denn jetzt mit der Virtualisierung?
Lizenzfallen aus der Praxis - Was ist denn jetzt mit der Virtualisierung?
 
Liquibase – a time machine for your data
Liquibase – a time machine for your dataLiquibase – a time machine for your data
Liquibase – a time machine for your data
 
QSpiders - Variable Length-Subnet-Masks
QSpiders - Variable Length-Subnet-MasksQSpiders - Variable Length-Subnet-Masks
QSpiders - Variable Length-Subnet-Masks
 
NoSQL Data Architecture Patterns
NoSQL Data ArchitecturePatternsNoSQL Data ArchitecturePatterns
NoSQL Data Architecture Patterns
 
高速移動網路新時代 - 雲端與物聯網發展新趨勢 (An Integration Trend of Terminal Devices, IoT and C...
高速移動網路新時代  - 雲端與物聯網發展新趨勢 (An Integration Trend of Terminal Devices, IoT and C...高速移動網路新時代  - 雲端與物聯網發展新趨勢 (An Integration Trend of Terminal Devices, IoT and C...
高速移動網路新時代 - 雲端與物聯網發展新趨勢 (An Integration Trend of Terminal Devices, IoT and C...
 
01 リスティング広告マニュアル 基礎編
01 リスティング広告マニュアル 基礎編01 リスティング広告マニュアル 基礎編
01 リスティング広告マニュアル 基礎編
 
New features of sql server 2016 bi features
New features of sql server 2016 bi featuresNew features of sql server 2016 bi features
New features of sql server 2016 bi features
 
Dan seracu autocontrolul pas cu pas
Dan seracu   autocontrolul pas cu pasDan seracu   autocontrolul pas cu pas
Dan seracu autocontrolul pas cu pas
 
コンテンツ マーケティング革命
コンテンツ マーケティング革命コンテンツ マーケティング革命
コンテンツ マーケティング革命
 

Similar a Datenbank-Refactoring mit LiquiBase

Die Datenbank unter Kontrolle - Gearconf
Die Datenbank unter Kontrolle - GearconfDie Datenbank unter Kontrolle - Gearconf
Die Datenbank unter Kontrolle - Gearconf
Stephan Hochdörfer
 
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
 
Skalierung & Performance
Skalierung & PerformanceSkalierung & Performance
Skalierung & Performance
glembotzky
 
AdminCamp 2014: Quo Vadis – Wohin mit IBM Notes/Domino?
AdminCamp 2014: Quo Vadis – Wohin mit IBM Notes/Domino?AdminCamp 2014: Quo Vadis – Wohin mit IBM Notes/Domino?
AdminCamp 2014: Quo Vadis – Wohin mit IBM Notes/Domino?
panagenda
 

Similar a Datenbank-Refactoring mit LiquiBase (20)

Die Datenbank unter Kontrolle - Gearconf
Die Datenbank unter Kontrolle - GearconfDie Datenbank unter Kontrolle - Gearconf
Die Datenbank unter Kontrolle - Gearconf
 
Best Practices SharePoint and SQL Installation
Best Practices SharePoint and SQL InstallationBest Practices SharePoint and SQL Installation
Best Practices SharePoint and SQL Installation
 
Infrastructure Solution Day | Core
Infrastructure Solution Day | CoreInfrastructure Solution Day | Core
Infrastructure Solution Day | Core
 
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
 
Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...
Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...
Ringvorlesung: FIO Systems AG stellt Projektziel zum Thema Software Design Pa...
 
Agile Methoden als Erfolgsfaktor für BI und Big Data Projekte
Agile Methoden als Erfolgsfaktor für BI und Big Data ProjekteAgile Methoden als Erfolgsfaktor für BI und Big Data Projekte
Agile Methoden als Erfolgsfaktor für BI und Big Data Projekte
 
Skalierung & Performance
Skalierung & PerformanceSkalierung & Performance
Skalierung & Performance
 
Meet Magento - High performance magento
Meet Magento - High performance magentoMeet Magento - High performance magento
Meet Magento - High performance magento
 
mongoDB im Einsatz - Grundlagen
mongoDB im Einsatz - GrundlagenmongoDB im Einsatz - Grundlagen
mongoDB im Einsatz - Grundlagen
 
"git.net" gibt's nicht?
"git.net" gibt's nicht?"git.net" gibt's nicht?
"git.net" gibt's nicht?
 
Database Change Management
Database Change ManagementDatabase Change Management
Database Change Management
 
2005 - NRW Conf: Design, Entwicklung und Tests
2005 - NRW Conf: Design, Entwicklung und Tests2005 - NRW Conf: Design, Entwicklung und Tests
2005 - NRW Conf: Design, Entwicklung und Tests
 
Webinar - ABAP Development Tools
Webinar - ABAP Development ToolsWebinar - ABAP Development Tools
Webinar - ABAP Development Tools
 
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...
 
Webinar - ABAP CDS Views
Webinar - ABAP CDS ViewsWebinar - ABAP CDS Views
Webinar - ABAP CDS Views
 
AdminCamp 2014: Quo Vadis – Wohin mit IBM Notes/Domino?
AdminCamp 2014: Quo Vadis – Wohin mit IBM Notes/Domino?AdminCamp 2014: Quo Vadis – Wohin mit IBM Notes/Domino?
AdminCamp 2014: Quo Vadis – Wohin mit IBM Notes/Domino?
 
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturContinuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
 
Web-Anwendungen mit BSP
Web-Anwendungen mit BSPWeb-Anwendungen mit BSP
Web-Anwendungen mit BSP
 
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
 

Más de Benjamin Schmid

Der 10-Punkte Plan für den sicheren Weg zum nicht-wartbaren Code
Der 10-Punkte Plan für den sicheren Weg zum nicht-wartbaren CodeDer 10-Punkte Plan für den sicheren Weg zum nicht-wartbaren Code
Der 10-Punkte Plan für den sicheren Weg zum nicht-wartbaren Code
Benjamin Schmid
 
Automatisierte GUI-Tests mit Selenium
Automatisierte GUI-Tests mit SeleniumAutomatisierte GUI-Tests mit Selenium
Automatisierte GUI-Tests mit Selenium
Benjamin Schmid
 
Next Generation Java - Ceylon, Kotlin, Scala & Fantom im Überblick
Next Generation Java - Ceylon, Kotlin, Scala & Fantom im ÜberblickNext Generation Java - Ceylon, Kotlin, Scala & Fantom im Überblick
Next Generation Java - Ceylon, Kotlin, Scala & Fantom im Überblick
Benjamin Schmid
 

Más de Benjamin Schmid (14)

Power catch up - Everything Practical and Important in Java 9 to 13
Power catch up - Everything Practical and Important in Java 9 to 13Power catch up - Everything Practical and Important in Java 9 to 13
Power catch up - Everything Practical and Important in Java 9 to 13
 
Schnelle Winkel: 10x schnellere Webapps mit AngularJS und JEE
Schnelle Winkel: 10x schnellere Webapps mit AngularJS und JEESchnelle Winkel: 10x schnellere Webapps mit AngularJS und JEE
Schnelle Winkel: 10x schnellere Webapps mit AngularJS und JEE
 
Komponentenorientierte Webanwendungen mit wingS 2.0
Komponentenorientierte Webanwendungen mit wingS 2.0 Komponentenorientierte Webanwendungen mit wingS 2.0
Komponentenorientierte Webanwendungen mit wingS 2.0
 
Der 10-Punkte Plan für den sicheren Weg zum nicht-wartbaren Code
Der 10-Punkte Plan für den sicheren Weg zum nicht-wartbaren CodeDer 10-Punkte Plan für den sicheren Weg zum nicht-wartbaren Code
Der 10-Punkte Plan für den sicheren Weg zum nicht-wartbaren Code
 
Automatisierte GUI-Tests mit Selenium
Automatisierte GUI-Tests mit SeleniumAutomatisierte GUI-Tests mit Selenium
Automatisierte GUI-Tests mit Selenium
 
Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg!
Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg!Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg!
Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg!
 
Vital und fit bis ins hohe Alter: Refactoring im Projekt
Vital und fit bis ins hohe Alter: Refactoring im ProjektVital und fit bis ins hohe Alter: Refactoring im Projekt
Vital und fit bis ins hohe Alter: Refactoring im Projekt
 
Vielfalt vs. Abstraktion - Der Jakobsweg der modellbasierten GUI-Entwicklung
Vielfalt vs. Abstraktion - Der Jakobsweg der modellbasierten GUI-EntwicklungVielfalt vs. Abstraktion - Der Jakobsweg der modellbasierten GUI-Entwicklung
Vielfalt vs. Abstraktion - Der Jakobsweg der modellbasierten GUI-Entwicklung
 
Scharfe Anmerkungen für Java 6 mit Lombok
Scharfe Anmerkungen für Java 6 mit LombokScharfe Anmerkungen für Java 6 mit Lombok
Scharfe Anmerkungen für Java 6 mit Lombok
 
Das lustige Überlebenshandbuch für JavaScript
Das lustige Überlebenshandbuch für JavaScriptDas lustige Überlebenshandbuch für JavaScript
Das lustige Überlebenshandbuch für JavaScript
 
Trittsicher auf allen Mobilen Pfaden mit HTML5 & jQuery Mobile
Trittsicher auf allen Mobilen Pfaden mit HTML5 & jQuery MobileTrittsicher auf allen Mobilen Pfaden mit HTML5 & jQuery Mobile
Trittsicher auf allen Mobilen Pfaden mit HTML5 & jQuery Mobile
 
Hybride Schönheit - Das Java/JavaScript Webframeworks Echo
Hybride Schönheit - Das Java/JavaScript Webframeworks EchoHybride Schönheit - Das Java/JavaScript Webframeworks Echo
Hybride Schönheit - Das Java/JavaScript Webframeworks Echo
 
Next Generation Java - Ceylon, Kotlin, Scala & Fantom im Überblick
Next Generation Java - Ceylon, Kotlin, Scala & Fantom im ÜberblickNext Generation Java - Ceylon, Kotlin, Scala & Fantom im Überblick
Next Generation Java - Ceylon, Kotlin, Scala & Fantom im Überblick
 
'Git started' für Fortgeschrittene!
'Git started' für Fortgeschrittene!'Git started' für Fortgeschrittene!
'Git started' für Fortgeschrittene!
 

Datenbank-Refactoring mit LiquiBase

  • 1. Datenbank-Refactoring mit LiquiBase Agile Software-Entwicklung mit RDBMS Refactoring & Change Management Benjamin Schmid
  • 2. Softwareentwicklung in der Praxis Hervorragende Lösungen beim Programmcode für: • Versionierung SVN, CVS • Build- und Test-Automatisierung Ant,Maven CI-Server • Abstraktion und Modellierung • Refactoring UML Eclipse, IDEA Und für die Datenbank? Datenbank-Refactoring mit Liquibase, Benjamin Schmid #2
  • 3. Datenbank-Entwicklung in der Praxis Welchen Stand hat die Datenbank? ‚Unknown column‘: Sind deine Änderungen schon drin? Wie nenne ich noch mal schnell die Spalte um? BIGINT in MySQL Und für Oracle? Uuups! Können wir schnell zurück zur vorigen Version? Nerv! Geht das alles nicht auch automatisch? Datenbank-Refactoring mit Liquibase, Benjamin Schmid #3
  • 4. Open-Source (LGPL)-Lösung zur Ausführung, Management und Dokumentation von Datenbankänderungen Kern-Features: • Herstellerunabhängig • Code-Branchfähig • Automatisierung • Teamfähig & ‚DBA-fähig‘ • Rollback-Strategie • IDE Support • Änderungsdokumentation Datenbank-Refactoring mit Liquibase, Benjamin Schmid #4
  • 5. What‘s so special about LiquiBase? • Kein Soll/Ist ‚Diff-Tool‘ sondern Beschreibung der Änderungen - Erhalt der Semantik (name name2: rename oder drop+new ?) • Änderungen werden einzeln betrachtet - Keine linearer Versionierung ( Branches) - Change Log wird sequentiell abgearbeitet; die ausstehenden Änderungen ausgeführt • … und in einer Tabelle protokolliert Datenbank-Refactoring mit Liquibase, Benjamin Schmid #5
  • 6. Unterstützte Datenbanken • Oracle • HLSQL • MS SQL • Apache Derby • MySQL • H2 • PostgreSQL • Caché • DB2 • MaxDB • Sybase • SQLlite Datenbank-Refactoring mit Liquibase, Benjamin Schmid #6 -
  • 7. Wie funktionierts? (1) In einer XML-Datei/via IDE werden alle Änderungen in als Change Sets beschrieben & gepflegt: ID = id + author + filename Change Set durch MD5 Hash gesichert Datenbank-Refactoring mit Liquibase, Benjamin Schmid #7
  • 8. Verfügbare Refactorings 13 Structural Refactorings Add/Rename/Drop: Colum/Table/View Merge Columns, Stored Procedure 10 Data Quality Refactorings Add/Drop: Constraint/Lookup-Table/Sequence/Default Value 4 Referential Integrity Refactorings Add/Drop: Foreign & Primary Keys 5 Non-Refactoring Transformations Insert/Load/Update/Delete Data 4 Custom Refactorings Custom SQL/Refactoring Class/Shell Command 2 Index Refactorings Datenbank-Refactoring mit Liquibase, Benjamin Schmid, eXXcellent solutions #8
  • 9. Wie funktionierts? (2) Ausführung der Change Sets über LiquiBase Runner: Ant, Maven, Kommandozeile, Servlet Listener, via API, Spring, Grails. Beispiel in Ant: Datenbank-Refactoring mit Liquibase, Benjamin Schmid #9
  • 10. Wie funktionierts? (3) Folgende Operationen sind möglich: • Automatische Migration auf akt. Stand • Nur Prüfung auf offene Änderungen • DDL-Skript Generierung (inkl. zugehörigem Rollback-Skript) • Change Sets aus Datenbank-Diff erzeugen (Special Feature: Diff gegen Hibernate-Mapping!) • Rollback, Datenbankstand taggen, Änderungsdokumentation, Drop-all, … Datenbank-Refactoring mit Liquibase, Benjamin Schmid #10
  • 11. Änderung von Code & Datenbank über die Zeit Codeänderung Codeänderung v 2.0 Codeänderung LiquiBase Change LiquiBase Set Change Set VersionVerwaltung Datenbank-Refactoring mit Liquibase, Benjamin Schmid LiquiBase Change Set 1.1 Codeänderung Codeänderung v 1.0 LiquiBase Change LiquiBase Set Change Set Effektives LiquiBase Change Log Aktuelle Datenbank (+ Change Log) #11
  • 12. IDE Support Hervorragende verwendbar mit IDE-Bordmitteln Umfangreiches IntelliSense dank XML Schema • IntelliJ IDEA Plugin Aktuellste Fassung (v1.8.0) und größter Umfang • Eclipse Plugin Alpha-Status und aktuell veraltet (v0.6) • Standalone IDE Veraltet und eher Technolgie-Demo (v 0.6) Datenbank-Refactoring mit Liquibase, Benjamin Schmid #12
  • 13. IDE Demo PowerPoint iss‘ doof… Datenbank-Refactoring mit Liquibase, Benjamin Schmid #13
  • 14. Tagging & Rollback Rollback-Wege: automatisch create table drop table drop table n/a explizite Definition: LiquiBase Refactorings SQL Anweisungen Re-do Change Set Y Datenbank-Refactoring mit Liquibase, Benjamin Schmid Rollbackpunkte: • Datum / Uhrzeit • Number of Changes • Markierte Version (Tag) #14
  • 15. Weitere Features • MD5 gesicherte Change Sets (Erkennen nachträglicher Änderungen) • runalways bzw. runonchange • Generierung einer Änderungsdokumentation • Hibernate Support (diff gegen Mapping Dateien: *.hbm.xml) • Clusterfähig (Locking) und Contexts • Preconditions und Assertions zur Zielplattform Datenbank-Refactoring mit Liquibase, Benjamin Schmid #15
  • 17. Fazit Mit Liquibase können Sie spielend • Automatisiert beim Start ihre Datenbanken migrieren • Die Datenbank adäquat wie Ihren Code behandeln • DBA-konform Migrations- & Rollback Skripte erzeugen Und durch den Automatismus ideal für • Software-Entwicklung im Team • Continuous Integration und Testing • einen agilen und robusten Entwicklungsprozess • regelmäßige Auslieferungen Datenbank-Refactoring mit Liquibase, Benjamin Schmid #17
  • 18. Referenzen Kontakt: B.Schmid(at)exxcellent.de oder an unserem Stand LiquiBase http://www.liquibase.org/ Materialien zum Thema Refactoring & Code Qualität Der 10 Punke Plan zum unwartbaren Code, Automatisiertees GUI-Testing, Refactorings, … http://www.exxcellent.de/download.html Alternativen (OSS) dbdeploy http://dbdeploy.com MIGRATEdb http://migratedb.sourceforge.net/ Datenbank-Refactoring mit Liquibase, Benjamin Schmid #18