© Excellent backgrounds/Shutterstock.com
Java Magazin
Continuous Database Integration mit Liquibase

Wechseln ist nicht schwer

Wenn neue Anforderungen hereinkommen, versuchen viele Entwickler, diese gemäß dem existierenden Datenmodell abzuändern. Dabei liegt die Herausforderung aber nicht darin, den Code an ein neues Modell anzupassen, sondern in der Struktur der Datenbank oder in der Migration von Daten. Das muss aber nicht sein: Ein flexibles Datenmodell ist einer der wichtigsten Eckpfeiler, um schnell und dynamisch fachliche Anforderungen zu implementieren.

Steffen Mall


Der Ansatz alter Entwicklerschule ist es, ein Datenbankschema mit Skripten zu verwalten. Daraus ergeben sich jedoch verschiedene Nachteile. Dieser Ansatz lässt sich häufig nicht automatisiert in den Build- und Deployment-Prozess integrieren. Außerdem ist es eine Herausforderung, verschiedene Datenbanktypen – lokale leichtgewichtige Datenbanken versus produktive Enterprise-Versionen – zu unterstützen. Bei der Ausführung auf verschiedenen Stages ist man auf den Betrieb angewiesen, und es wird keine Versionskontrolle zur Verfügung gestellt.

Alternativ dazu besteht die Möglichkeit, die Kontrolle des Schemas JPA zu überlassen. Das wird in der Regel allerdings nur für lokale Stages empfohlen. Der Vorteil dieser Herangehensweise liegt insbesondere in der engen Kopplung zum Implementierungsmodell. Wer diesen Ansatz schon genutzt hat, weiß aber, dass man bei einem Refactoring schnell an die Grenzen stößt.

Mit Liquibase ist es möglich, eine Datenbankschemabeschreibung zu deklarieren und automatisiert ausführen zu lassen. Zusätzlich ist eine Versionskontrolle an Bord. Damit ist es möglich, das Datenbankmodell ohne Probleme kontinuierlich weiterzuentwickeln. Hierbei können nicht nur Schemaänderungen (DDL) durchgeführt, sondern auch Daten manipuliert werden (DML). Zudem lassen sich mit Bedingungen verschiedene Szenarien spezifisch behandeln. Mit CDI lässt sich die Ausführung von Liquibase nahtlos in das Deployment einer Applikation integrieren. Nicht zuletzt gewährleistet das Tool mittels JUnit das erfolgreiche Ausführen der Änderungen.

Die Grundlagen von Liquibase

In Liquibase werden alle Änderungen in einer Datei gemanagt. Dafür stehen verschiedene Formate zur Verfügung: XML, YAML, JSON und SQL. Für mein Beispiel habe ich das Format XML gewählt. Diese Datei ist die so genannte databaseChangeLog-Datei (Listing 1).

Listing 1: Rumpf einer leeren „databaseChangeLog“-Datei 

Innerhalb dieses databaseChangeLog lassen sich beliebig viele changeSets definieren. Ein changeSet ist, wie der Name schon sagt, ein Set an Änderungen. Jedes changeSet hat eine eindeutige ID und wird jeweils nur einmal gegen eine Datenbank ausgeführt. Beispiele sind das Anlegen einer neuen Tab...

Java Magazin
Continuous Database Integration mit Liquibase

Wechseln ist nicht schwer

Wenn neue Anforderungen hereinkommen, versuchen viele Entwickler, diese gemäß dem existierenden Datenmodell abzuändern. Dabei liegt die Herausforderung aber nicht darin, den Code an ein neues Modell anzupassen, sondern in der Struktur der Datenbank oder in der Migration von Daten. Das muss aber nicht sein: Ein flexibles Datenmodell ist einer der wichtigsten Eckpfeiler, um schnell und dynamisch fachliche Anforderungen zu implementieren.

Steffen Mall


Der Ansatz alter Entwicklerschule ist es, ein Datenbankschema mit Skripten zu verwalten. Daraus ergeben sich jedoch verschiedene Nachteile. Dieser Ansatz lässt sich häufig nicht automatisiert in den Build- und Deployment-Prozess integrieren. Außerdem ist es eine Herausforderung, verschiedene Datenbanktypen – lokale leichtgewichtige Datenbanken versus produktive Enterprise-Versionen – zu unterstützen. Bei der Ausführung auf verschiedenen Stages ist man auf den Betrieb angewiesen, und es wird keine Versionskontrolle zur Verfügung gestellt.

Alternativ dazu besteht die Möglichkeit, die Kontrolle des Schemas JPA zu überlassen. Das wird in der Regel allerdings nur für lokale Stages empfohlen. Der Vorteil dieser Herangehensweise liegt insbesondere in der engen Kopplung zum Implementierungsmodell. Wer diesen Ansatz schon genutzt hat, weiß aber, dass man bei einem Refactoring schnell an die Grenzen stößt.

Mit Liquibase ist es möglich, eine Datenbankschemabeschreibung zu deklarieren und automatisiert ausführen zu lassen. Zusätzlich ist eine Versionskontrolle an Bord. Damit ist es möglich, das Datenbankmodell ohne Probleme kontinuierlich weiterzuentwickeln. Hierbei können nicht nur Schemaänderungen (DDL) durchgeführt, sondern auch Daten manipuliert werden (DML). Zudem lassen sich mit Bedingungen verschiedene Szenarien spezifisch behandeln. Mit CDI lässt sich die Ausführung von Liquibase nahtlos in das Deployment einer Applikation integrieren. Nicht zuletzt gewährleistet das Tool mittels JUnit das erfolgreiche Ausführen der Änderungen.

Die Grundlagen von Liquibase

In Liquibase werden alle Änderungen in einer Datei gemanagt. Dafür stehen verschiedene Formate zur Verfügung: XML, YAML, JSON und SQL. Für mein Beispiel habe ich das Format XML gewählt. Diese Datei ist die so genannte databaseChangeLog-Datei (Listing 1).

Listing 1: Rumpf einer leeren „databaseChangeLog“-Datei 

Innerhalb dieses databaseChangeLog lassen sich beliebig viele changeSets definieren. Ein changeSet ist, wie der Name schon sagt, ein Set an Änderungen. Jedes changeSet hat eine eindeutige ID und wird jeweils nur einmal gegen eine Datenbank ausgeführt. Beispiele sind das Anlegen einer neuen Tab...

Neugierig geworden?


    
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang