2015-04-21 24 views
43

Ich habe versucht, diese Frage auf Stack-Überlauf zu suchen, konnte aber keine Frage dazu finden. Ich bin neu auf liquibase und will wissen, warum liquibase? Und wann genau sollte man Liquibase im Projekt verwenden?Warum und wann Liquibase?

Ich weiß, dass dies ist, um alle Datenbankänderungen an einem Ort zu behalten, aber die ähnliche kann durch Erstellen einer einfachen SQL-Datei in einem Repository-System und aktualisieren Sie es mit der Zeit.

Antwort

26

Das wichtigste Unterscheidungsmerkmal zwischen einer selbst verwalteten Schema-Erstellungsdatei und Liquibase (oder anderen schema migration-Tools) besteht darin, dass letztere ein Schema-Änderungsprotokoll bereitstellt. Dies ist eine Aufzeichnung der Schemaänderungen im Laufe der Zeit. Er ermöglicht dem Datenbankentwickler, Änderungen in Schema anzugeben. & ermöglicht programmgesteuertes Upgrade oder Downgrade des Schemas bei Bedarf.

Es gibt noch andere Vorteile, wie zum Beispiel:

  • Database Herstellerunabhängigkeit (dies ist fraglich, aber sie versuchen)
  • automatisierte Dokumentation
  • Datenbankschema diffs

Ein alternatives Werkzeug ist flyway.

Sie würden ein Schema-Migrationstool verwenden, wenn Sie Schemaaktualisierungen 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.

+0

Aber nehmen wir an, wir erstellen eine Datei und schreiben unser erstes Skript darin und verpflichten es, sagen wir git. Jetzt, mit der Zeit, wird das Schema aktualisiert und wir können zu jedem Zeitintervall zurückgehen und das Schema auch zurück ändern, nein? – dosdebug

+0

Mit diesem Ansatz können Sie das Schema _recreate_, aber Sie können nicht downgraden/upgraden. Der Unterschied ist der Verlust von Daten. – Synesso

+0

Aaah, ich verstehe .... Ich habe deinen Standpunkt verstanden. – dosdebug

6

Ich habe gesehen, Liquibase Disziplin unter den Entwicklern zu schaffen, wenn es darum geht, Schema zu ändern. Sie können einfach nicht gehen und andere Änderungen des Entwicklers überschreiben und ausführen. Stattdessen erstellen Sie einen eigenen Änderungssatz und fügen ihn am Ende der Abfolge der auszuführenden Änderungen hinzu. Dies bringt auch Klarheit darüber, welche Veränderung wann und wer es gebracht hat.

Eine sehr "versionierte" Herangehensweise an Schema-Maintenance.

Für den Anfang macht es jedoch einen Eindruck von "unnötiger Arbeit".

+3

Welches bin ich (es gibt mir den genauen Eindruck, dass du erwähnt hast: P) +1 für diese entscheidende Bestimmung – ismail

0

Ich glaube, dass Liquibase großartig ist, wenn Ihre Philosophie ist, dass die Datenbank ein nachträglicher Einfall 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 Sicht auf das gesamte Geschäftssystem entworfen werden und nicht von Anwendungsentwicklern, die jeweils in ihren eigenen Silos arbeiten. Die letztgenannte Methode führt zu Work-arounds, denormalisierten Daten, schlechten Beziehungen zwischen Tabellen, doppelten Geschäftsbereichen und einem insgesamt unordentlichen, kostenintensiven System, das der Kunde kurz nach der Bereitstellung wegen der damit verbundenen Probleme hassen wird. Wenn eine Datenbank entworfen wird, um Geschäftsbeziehungen GENAU zu reflektieren, wird ihre Lebensdauer 5-mal so lang sein und wird ihren Zweck 5-mal besser erfüllen als einer, der stückweise entworfen wurde, wie leider die meisten sind.

Liquibase ist kein Problem für sich, aber es ermöglicht die Praxis, dass Anwendungsentwickler die Datenbank entwerfen. Das ist das Problem.

+3

Spezifikationen ändern sich, neue Funktionen werden hinzugefügt, Fehler werden behoben. Selbst wenn man davon ausgeht, dass "eine Datenbank darauf ausgelegt ist, Geschäftsbeziehungen GENAU zu widerspiegeln", ist es normal und erwartet, dass Sie im Laufe der Zeit Änderungen an der DB vornehmen müssen, da sich Unternehmen und Geschäftsbeziehungen im Laufe der Zeit ändern. Liquibase hilft Ihnen nur, diese Änderungen zu verwalten. Das ist es. –

+0

Meiner Erfahrung nach verwenden nur sehr wenige DBAs und eine ganze Reihe von Entwicklern Liquibase - ich denke @ Bob-Barry ist mit den meisten Endergebnissen genau richtig. DBAs, die Tools wie Liquibase verwenden (oder einfach nur alte git für Änderungshistorie) werden es jedoch nützlich finden. – PhillipHolmes

0

Wenn Sie mehrere Datenbankinstanzen in dev, qa, production und you haben, verfolgen Sie automatisch die Änderungshistorie und wenden Änderungen intelligent an (wenden Sie das Diff des aktuellen Schemas und des endgültigen Schemas an), Tools wie Liquibase oder Flyway sehr nützlich sein.