Datenbankupdate in Production Spring Boot

Richtig.

Solange du keine Installationen hast geht das. Wenn du also sicherstellen kannst dass du immer mit einer leeren Datenbank ohne Schema anfängst und es auch sonst keine Installationen gibt. Wirklich nirgends.

Die Versionierung macht man um Konsistenz zu haben. Stell dir vor du hast eine Datenbank mit Schema in der Version 5. Gefüllt mit Daten. Und du änderst nun etwas an Skript für Version 1. Dann wird das wohl nie auf dieser Datenbank ausgeführt. Das Tool wird die allenfalls eine Fehlermeldung geben, dass der Hash des Skripts für Version 1 nicht mit dem Hash für das tatsächlich installierte Skript übereinstimmt. Und schon kannst du das manuell Nacharbeiten und eine Lösung dafür suchen.
Die Alternative wäre ein weiteres Skript mit einer neuen Version, das die Änderungen ausführt, so dass Anwendung und Schema immer zueinander Konsistent sind.

Nein, das wird sich kaum unterscheiden. Da sind die Rechner schnell genug und es wird ja nur das ausgeführt was neu dazu kommt. Wenn die DB in V 1000 vorliegt und du nun ein neues Skript hast, dann wird auch nur V 1001 ausgeführt, dass recht klein ist.
Der Vorteil der Konsistenz überwiegt weit mehr.

1 „Gefällt mir“

Ok prima, vielen Dank. Ich habe nun 2 stellen an denen ich Flyway aufrufe. Einmal für die “Admin-Datenbank” und einmal für die “Kundendatenbanken”

Kann man da irgendwie unterscheiden, welche Dateien in welcher Datenbank ausgeführt werden sollen? Denn ein Update zb "für User Spalte " soll dann nur für Admindatenbank sein, nicht aber für die Kundendatenbanken. Oder verwaltet man dann lieber die Admindatenbank selber, ohne Flyway? Macht wahrscheinlich mehr Sinn oder?

Je Datenbank verwendest du einfach einen separaten Satz an Scripten und lässt diese in der passenden Datenbank ausführen. Der Pfad, in welchem die Scripte gesucht werden lässt sich ebenso wie die Datenbankverbindung konfigurieren.

Wie meinst du das, den Pfad konfigurieren lassen? Kan nich Flyway mit auf den Weg geben, wo es suchen soll?

Ja, siehe auch die JavaDocs. Mittels flyway.setLocations(...).

@martin123: hast du da zufällig eine Handreichung parat?

Hi,

es tut mir sehr leid, aber das Dokument finde ich nicht wieder =(

Du müsstest mir noch ein wenig Zeit geben…

Gruß,
Martin

Klar, hat keine Eile. Ich würde mich freuen, wenn du das Dokument noch findest.