# Liquibase

Liquibase ist eine datenbankunabhängige Programmbibliothek unter Open-Source-Lizenz zur Nachverfolgung von Datenbankstruktur-Änderungen. Es wurde 2006 zur agilen Softwareentwicklung eingeführt.

## Überblick

Alle Änderungen an der Datenbank werden in Textdateien (XML, YAML, JSON oder SQL) gespeichert und durch eine Kombination aus einem „id“- und „author“-Tag sowie dem Namen der Datei selbst gekennzeichnet. In jeder Datenbank wird eine Liste aller vorgenommenen Änderungen gespeichert, die bei jeder Aktualisierung der Datenbank konsultiert wird, um festzustellen, welche neuen Änderungen vorgenommen werden müssen. Infolgedessen gibt es keine Versionsnummer in der Datenbank, aber dieser Ansatz ermöglicht es, in Umgebungen mit mehreren Entwicklern und Codezweigen zu arbeiten.
Liquibase erstellt automatisch die DatabaseChangeLog Tabelle und die DatabaseChangeLogLock Tabelle, wenn man zum ersten Mal eine ChangeLog Datei ausführt.

## Hauptfunktionen

* Über 30 integrierte Datenbank-Refactorings
* Erweiterbarkeit zur Erstellung benutzerdefinierter Änderungen
* Aktualisierung der Datenbank auf die aktuelle Version
* Rollback der letzten X Änderungen an der Datenbank
* Rollback von Datenbankänderungen zu einem bestimmten Datum/Uhrzeit
* Rollback der Datenbank zu einem „Tag“
* SQL für Datenbank-Updates und Rollbacks kann zur manuellen Überprüfung gespeichert werden
* Eigenständige IDE und Eclipse-Plugin
* „Kontexte“ zum Einschließen/Ausschließen von auszuführenden Änderungsgruppen
* Datenbank-Diff-Bericht
* Erzeugung eines Datenbank-Diff-Changelogs
* Möglichkeit zur Erstellung eines Änderungsprotokolls für eine bestehende Datenbank
* Generierung von Datenbank-Änderungsdokumentation
* Vorbedingungen für DBMS-Check, Benutzerprüfung und SQL-Check
* Möglichkeit der Aufteilung des Änderungsprotokolls in mehrere Dateien zur einfacheren Verwaltung
* Ausführbar über Kommandozeile, Apache Ant, Apache Maven, servlet container oder Spring Framework.
* Unterstützung für häufig eingesetzte 10 Datenbanksysteme

## Kommerzielle Version

Liquibase (einst Datical) ist der größte Mitwirkende am Liquibase-Projekt als auch der Entwickler von Liquibase Enterprise [1] - einem kommerziellen Produkt, das die Kernfunktionalität von Liquibase sowie zusätzliche Funktionen bietet.
* Vorhersage von Änderungen: Prognostizieren Sie Änderungen, bevor sie ausgeführt werden, um zu erkennen, wie sich dies auf die Daten auswirken wird.
* Rules Engine zur Durchsetzung von Unternehmensstandards und -richtlinien.
* Unterstützt gespeicherte Datenbanklogik: Funktionen, gespeicherte Prozeduren, Pakete, Tabellenbereiche, Trigger, Sequenzen, benutzerdefinierte Typen, Synonyme usw.
* Mit dem Datenbankvergleich können zwei Datenbankschemata verglichen werden, um Änderungen zu identifizieren und in das Änderungsprotokoll zu übertragen.
* Change Set Wizard zur datenbankunabhängigen und einfachen Definition und Erfassung von Datenbankänderungen.
* Einrichtungsplan-Assistent zur Modellierung und Verwaltung des logischen Einrichtungs-Arbeitsflusses
* Plug-ins für Jenkins, Bamboo, UrbanCode, CA Release Automation (Nolio), Serena Release Automation, BMC Bladelogic, Puppet, Chef, sowie alle gängigen Versionskontrollsysteme wie SVN, Git, TFS, CVS etc.
Liquibase-Produkte, einschließlich Liquibase Enterprise (früher bekannt als Datical DB), werden von DBAs, Release Managern, DevOps-Teams, Anwendungseigentümern, Architekten und Entwicklern eingesetzt, die am Prozess der Anwendungsfreigabe beteiligt sind. Es verwaltet Datenbankschema-Änderungen zusammen mit dem Anwendungscode auf eine programmatische Art und Weise, die Fehler und Verzögerungen eliminiert und schnelle agile Releases ermöglicht. Die kommerziellen Produkte von Liquibase bauen auf dem Liquibase Data Model Approach auf, um datenstrukturspezifische Inhalte über Anwendungsversionen hinweg zu verwalten, während diese von der Entwicklungs- über die Test- bis zur Produktionsumgebung fortschreiten. Datical zeigt die Auswirkungen von Schema-Änderungen in jeder Umgebung vor der Bereitstellung an, was das Risiko mindert und zu reibungsloseren und schnelleren Anwendungsänderungen führt.

## Vergleichbare Werkzeuge

* alembic
* DBmaestro
* Flyway