Versionierung mit Liquibase
Diese Seite ist ein Teil der IsyFact-Standards. Alle Inhalte der Seite, insbesondere Texte und Grafiken, sind urheberrechtlich geschützt. Alle urheberrechtlichen Nutzungs- und Verwertungsrechte liegen beim Bundesverwaltungsamt.
Die Nutzung ist unter den Lizenzbedingungen der Creative Commons Namensnennung 4.0 International gestattet.
Liquibase ist eine Bibliothek zum Management von Änderungen an Datenbankschemas. Hierfür werden die Datenbankänderungen in sequenzieller Ordnung in Change Logs aufgelistet. Diese können in SQL, XML, JSON oder YAML geschrieben sein. Änderungen werden im Format des Changesets angelegt. Diese enthalten Change Types, Definitionen von Änderungen, die auf die Datenbank angewandt werden sollen. Um die richtige Reihenfolge sowie die Datenbankumgebung der Änderungen kontrollieren zu können werden Kontext, Label und Precondition Tags verwendet.
Die wichtigsten Befehle von Liquibase sind: update
, rollback
, snapshot
, diff
, status
und utility
.
Beim initialen Update-Befehl kontrolliert Liquibase die Datenbankverbindungsinformationen, inklusive der Berechtigungen, die Datenbank-URL und die JDBC Treiber.
Bei der Verteilung von Änderungen werden zwei Tabellen in der Datenbank erstellt:
-
DATABASECHANGELOG
, in der die Änderungen festgehalten werden, und -
DATABASECHANGELOGLOCK
, blockiert die Datenbank um zeitgleiche Änderungen durch mehrere Liquibase-Instanzen zu verhindern.
1. Change Logs in Liquibase
In den Change Logs speichert Liquibase sequenziell alle Änderungen, Changesets genannt, an der Datenbank. Hierdurch überwacht die Bibliothek, auf welchem Stand sich die Datenbank befindet und führt noch nicht angewendete Änderungen an dieser durch.
In den Changelogs können die folgenden Elemente eingebettet werden:
Tag | Beschreibung |
---|---|
|
Voraussetzungen, die erfüllt sein müssen, bevor der Changelog ausgeführt wird. Der Autor kann hierdurch festhalten, welche Annahmen zum Status des Changelogs er trifft und sicherstellen, dass die Änderungen nur ausgeführt werden, wenn diese stimmen. Ebenfalls können hierdurch Datenprüfungen vor unwiderrufliche Änderungen gekoppelt werden. |
|
Wird zum Einsetzen von Properties genutzt. Soll dasselbe Changelog für mehrere Umgebungen genutzt werden kann dies hierdurch abgebildet werden. |
|
Die auszuführenden Änderungen. |
|
Zusätzliche Dateien, die Changesets enthalten und inkludiert werden sollen. Hierdurch ist es möglich, Change Logs in übersichtliche Teile aufzugliedern. |
|
Gibt an, in welchem Kontext ein Changeset ausgeführt wird. Bestimmte Änderung können hiermit z.B. nur während eines Testes ausgeführt werden. |
Liquibase verarbeitet während der Laufzeit das Change Log. Zunächst werden Preconditions überprüft. Sind nicht alle Preconditions erfüllt, bricht Liquibase die Ausführung ab. Andernfalls werden die Changesets in der Reihenfolge ihrer Definition nach ausgeführt.