Flyway und Liquibase zusammen?

7

Ich habe mir sowohl Liquibase als auch Flyway einzeln angeschaut und für einen individuellen Vergleich scheint Liquibase das bessere Werkzeug für unsere Bedürfnisse zu sein. Einige Quellen erwähnen die Verwendung von Liquibase und Flyway zusammen. Liquibase scheint alles zu haben, was Flyway hat und mehr Flexibilität bei Rollbacks. Der Hauptvorteil von nur Flyway scheint zu sein, nicht XML zu verwenden, aber Liquibase erlaubt Ihnen, eine SQL-Datei in ihrem XML anzugeben.

Grundsätzlich bin ich immer noch nicht klar, was die Vorteile der Verwendung von Flyway & amp; Liquibase zusammen wäre über nur Liquibase, wenn es welche gibt. Vielleicht gibt es einen Weg, es zu tun. Ich sehe nicht, dass selbst wenn Liquibase gültige Flyway SQL-Dateien referenziert, beide Werkzeuge unabhängig voneinander ausgeführt werden müssten und trotzdem die gleichen Fallstricke hätten, obwohl Sie beide Tools technisch nutzen könnten.

>     
Slayer0248 19.08.2016, 17:38
quelle

3 Antworten

16

Eine kleine Korrektur, bevor ich die Frage beantworte. Die Annahme

  

Liquibase scheint alles zu haben, was Flyway hat

ist nicht korrekt. Flyway glänzt, wenn es um das Parsen von SQL geht. Sie können unmodifizierte SQL-Dateien verwenden, die von Ihren nativen Tools generiert wurden und alle Arten von Komplexität enthalten, wie PL / SQL-Pakete und Prozeduren, MySQL Delimiter-Änderungen, T-SQL, PostgreSQL-Prozeduren, ... Bei Liquibase müssten Sie diese in einzelne Anweisungen aufteilen. fügen Sie den SQL-Dateien zusätzliche Kommentare hinzu, ...

Das Schöne daran, Ihre SQL-Dateien so wie sie sind zu verwenden, ist, dass Sie Lock-In vermeiden. Sie können Ihre bestehenden SQL-Dateien nehmen, Flyway mit minimalen Investitionen verwenden und später wegziehen, wenn es nicht mehr Ihren Bedürfnissen entspricht. Nicht so mit Liquibase.

Auch die Frage der Abwärtsmigrationen (man denke an sie als kompensierende Transaktionen, nicht als Rollbacks) ist in der Theorie wirklich großartig, aber das wird in der Praxis fast nie benötigt. Siehe Ссылка

Wenn es jedoch darum geht, eins oder beide zu verwenden, stimme ich SteveDonie (Mitglied des Liquibase-Teams) zu, dass die Verwendung von nur einem der beiden zusammen fast immer die bessere Wahl ist.

Disclaimer: Ich bin der Autor von Flyway

    
Axel Fontaine 20.08.2016, 09:16
quelle
7

Ich würde niemals empfehlen, beide Tools gleichzeitig zu verwenden. Meiner Erfahrung nach verursacht sogar nur einer von ihnen Konflikte / Kollisionen von Zeit zu Zeit in großen verteilten Umgebungen (über 5 Teams mit Zugriff auf die gleiche Datenbank).

Ich werde Ihnen auch ein paar Vor- und Nachteile geben, wenn es darum geht, diese Tools in Projekten mit großen, verteilten Teams einzusetzen:

FlyWay:

Nachteile: Sehr streng, wenn es um Änderungen von Migrationsdateien geht. Wenn jemand seine Migrationsdatei eingecheckt hat, wird nicht empfohlen, sie zu ändern. Es ist so, als würde man in gemeinsamen Projekten force push in git einsetzen. Das Ändern einer Migration (entweder der Inhalt oder der Name der Datei) führt zu einem Migrationsfehler auf allen Computern mit der vorherigen Version der Datei. Das gesamte Migrationspaket muss von Grund auf neu gestartet werden. In manchen Fällen kann es sehr lange dauern.

Vorteile:  Nun, was bei Cons beschrieben wurde, wird gleichzeitig ein gewisses Maß an Disziplin aufbauen. Es könnte eine vernünftige Einschränkung sein, wenn über die Einführung gleichzeitiger Änderungen durch mehrere Teams in eine produktiv laufende Anwendung gesprochen wird.

Liquibase:

Nachteile: Mit ein paar Optimierungen sollten Sie die bestehenden (angewandten) Migrationen ändern können. Es kann zwar als Vorteil gewertet werden, aber da viele Leute an derselben Codebasis arbeiten, ist besondere Vorsicht geboten. Flexibilität hat ihren Preis. Es ist einfacher, eine "Regression" oder Inkonsistenz einzuführen, wenn ein solcher "git force push" -Stil von Änderungen für verteilte Projekte erlaubt ist.

Vorteile: Konfigurierbarer und flexibler. Könnte in Zukunft Lösungen für NoSQL enthalten. Ein paar nützliche Plugins (zum Beispiel Hibernate-Integration).

    
yuranos87 17.02.2017 23:29
quelle
4

Einverstanden. Ich denke nicht, dass es eine gute Idee wäre, sie zusammen zu benutzen.

    
SteveDonie 19.08.2016 18:03
quelle