Das wichtigste Unterscheidungsmerkmal zwischen einem selbst verwalteten Schema erstellen Datei und Liquibase (oder einem anderen Schema Migration Tool) ist , dass letztere ein Schema Changelog liefert. Dies ist eine Aufzeichnung der Schemaänderungen im Laufe der Zeit. Es ermöglicht dem Datenbankdesigner, Änderungen im Schema anzugeben und das Programm bei Bedarf programmgesteuert zu aktualisieren oder herunterzustufen.
Es gibt andere Vorteile, wie zum Beispiel:
- Unabhängigkeit des Datenbankanbieters (dies ist fraglich, aber sie versuchen es)
- automatisierte Dokumentation
- Datenbankschema unterscheidet sich
Ein alternatives Werkzeug ist Flyway .
Sie würden ein Schema-Migrationstool verwenden, wenn Sie Schema-Updates automatisch verwalten möchten oder müssen, ohne Daten zu verlieren. Das heißt, Sie erwarten, dass sich das Schema ändert, nachdem Ihr System in einer langlebigen Umgebung wie einem Kundenstandort oder einer stabilen Testumgebung bereitgestellt wurde.
Ich habe gesehen, dass Liquibase unter den Entwicklern Disziplin schafft, wenn es darum geht, das Schema zu ändern. Sie können die Änderungen anderer Entwickler einfach nicht überschreiben und ausführen. Stattdessen erstellen Sie Ihr eigenes Änderungsset und fügen es am Ende der Sequenz der auszuführenden Änderungen hinzu. Dies bringt auch Klarheit darüber, welche Änderung wann kam und wer sie gebracht hat.
Ein sehr "versionierter" Ansatz zur Schemaerhaltung.
Für den Anfang vermittelt es jedoch den Eindruck von "unnötiger Arbeit".
quelle
Wenn Sie mehrere Datenbankinstanzen in dev, qa, Production haben und ein Tool zum automatischen Verfolgen des Änderungsverlaufs und zum intelligenten Anwenden von Änderungen (Anwenden des Unterschieds zwischen aktuellem Schema und endgültigem Schema) benötigen, sind Tools wie Liquibase oder Flyway sehr nützlich .
quelle
Ich glaube, Liquibase ist großartig, wenn Ihre Philosophie ist, dass die Datenbank ein nachträglicher Gedanke ist. Diese Philosophie hat die meisten schlechten Datenbanken in der Produktion verursacht - und die meisten von ihnen sind schlecht. Eine Datenbank sollte mit einer vollständigen Ansicht des gesamten Geschäftssystems entworfen werden und nicht von Anwendungsentwicklern zusammengestellt werden, die jeweils in ihren eigenen Silos arbeiten. Die letztere Methode führt zu Problemumgehungen, denormalisierten Daten, schlechten Beziehungen zwischen Tabellen, doppelten Geschäftsbereichen und einem insgesamt chaotischen System mit hohen Wartungskosten, das der Client kurz nach der Bereitstellung aufgrund der dadurch verursachten Probleme hassen wird. Wenn eine Datenbank so konzipiert ist, dass sie Geschäftsbeziehungen GENAU widerspiegelt, ist ihre Lebensdauer fünfmal so lang und erfüllt ihren Zweck fünfmal besser als eine Datenbank, die leider stückweise entworfen wurde, wie es leider die meisten sind.
Liquibase ist an sich kein Problem, ermöglicht jedoch die Praxis, dass Anwendungsentwickler die Datenbank entwerfen. Das ist das Problem.
quelle
Ich denke, warum Liquibase beantwortet werden kann, wenn Sie den folgenden Artikel http://shengwangi.blogspot.com/2016/04/liquibase-helloworld-example.html durchgehen
Wenn Sie es sorgfältig lesen, ist die Möglichkeit, mithilfe einfacher MVN- oder CLI-Befehle von einer höheren Version auf eine niedrigere Version herunterzustufen, sehr nützlich, die Sie nicht erhalten, wenn Sie den Ansatz durchlaufen, Ihre SQL-Datei in GIT festzuschreiben, weil Sie es dann tun Sie müssen diese Skripte manuell ausführen, und Sie haben die Änderung nicht wie folgt festgelegt: - Wer hat die Änderungen vorgenommen?
quelle
Als DevOps-Person meines Teams würde ich es vorziehen, alle meine SQL-Dateien an einem Ort zu haben, dh in meinem SCM (Source Code Management).
Auch während der CI / CD-Phase spart das DB-Schema viel Zeit und Ressourcen, wenn es zusammen mit ihm erstellt wird. Sie müssten keine andere Person haben, die Ihre Datenbank für diesen Client verwaltet.
ORM wie Flyway, Liquibase, EF usw. helfen dabei.
quelle