Kursinhalt
Spring Boot Backend
Spring Boot Backend
Datenbankmigrationen
Dieses Bild zeigt den Fortschritt der Datenbankmigrationen über Versionen hinweg. Jede Version spiegelt Änderungen an der Datenbankstruktur wider, wie das Erstellen von Tabellen, Ändern von Feldern oder Hinzufügen/Entfernen von Spalten, um den Anforderungen der Anwendung gerecht zu werden.
Beim Entwickeln einer Anwendung kann es notwendig sein, das Datenbankschema zu ändern: neue Tabellen hinzufügen, bestehende aktualisieren, Indizes einführen und so weiter.
Migrationen helfen dabei, diese Änderungen auf eine sequenzielle und organisierte Weise zu verwalten, um die Datenintegrität zu gewährleisten und das Datenbankschema mit dem Code der Anwendung in Einklang zu halten. Für Migrationen werden wir Flyway
verwenden.
Was ist Flyway?
Eine der Schlüsselfunktionen von Flyway
ist die Unterstützung von Migrationsversionierung, die es Ihnen ermöglicht, Änderungen an der Datenbankstruktur nachzuverfolgen und bei Bedarf auf frühere Versionen zurückzusetzen.
Erstellen einer Migration mit Flyway
Um zu beginnen, fügen Sie die Flyway
Abhängigkeit zu Ihrem Spring Boot-Projekt hinzu. Da wir Maven verwenden, fügen Sie die folgende Abhängigkeit zu Ihrer pom.xml
Datei hinzu:
Wir werden auch eine weitere JPA-Abhängigkeit hinzufügen, die zusammen mit Flyway
arbeitet. Wir werden JPA später noch detaillierter behandeln.
Diese Abhängigkeit wird uns helfen, Flyway
in unser Projekt zu integrieren! Aber das ist noch nicht alles, wir müssen es noch konfigurieren!
Natürlich muss Flyway
wissen, mit welcher Datenbank es arbeiten wird, daher müssen wir die Datenbank explizit angeben und Zugangsdaten bereitstellen.
Die Hauptkonfigurationen können in application.properties
festgelegt werden:
Wir müssen die url
, user
und password
angeben, damit Flyway
mit unserer Datenbank arbeiten kann.
Um jedoch zu vermeiden, diese Werte mehrfach einzugeben, können wir sie mit der ${}
Syntax von anderen Parametern referenzieren.
Im vorherigen Kapitel haben wir eine Datenbank my_database
erstellt und eine Tabelle book
hinzugefügt. Wir können jedoch jetzt die Tabelle book
löschen, da sie durch eine Migration erstellt wird.
Jetzt ist alles bereit, um unsere erste Migration in der Anwendung zu erstellen! Wir müssen einen db
Ordner im resources
Verzeichnis erstellen, und innerhalb dieses Ordners einen weiteren mit dem Namen migration
. Der vollständige Pfad sollte so aussehen: src/main/resources/db/migration
.
Im Migrationsverzeichnis können wir nun Dateien erstellen, in denen wir unsere Änderungen definieren. Das Dateiformat sollte V<version>__<description>.sql
sein.
Migrationen werden in der Reihenfolge ihrer Versionen angewendet. Die Versionsnummerierung muss sequenziell und ohne Lücken sein. Zum Beispiel, wenn Sie Migrationen V1__init.sql
und V2__add_column.sql
haben, sollte die nächste Migration V3__another_change.sql
sein.
Innerhalb der Migrationsdatei können Sie SQL-Skripte schreiben, um die Struktur der Datenbank zu definieren, neue Tabellen, Spalten usw. zu erstellen.
Lassen Sie uns das Skript zum Erstellen der books
Tabelle schreiben, die wir im vorherigen Kapitel manuell erstellt haben, in unserer V1__create_table_books.sql
Datei.
Sie können auch ein Parameter zur Datei application.properties
hinzufügen, der angibt, wo sich die Migrationen befinden, damit Flyway
den genauen Pfad zu den Migrationsdateien kennt:
Danach führen Sie die Anwendung aus, und Sie sollten sehen, dass die Tabelle erstellt wurde mit den Feldern, die Sie in der Migration angegeben haben!
Sie können die erste Version der Migration nicht mehr ändern. Für jede Änderung an Ihrer Tabelle müssen Sie eine neue Migrationsdatei erstellen und das neue Skript dort hinzufügen!
Warum sind Migrationen wichtig?
Migrationen sind notwendig für eine geordnete Verwaltung von Änderungen in der Datenbank, Erhaltung der Historie und ermöglichen Rollbacks, wenn nötig.
Sie helfen, die Datenbankstruktur über verschiedene Umgebungen wie Entwicklung, Test und Produktion zu synchronisieren, während sie auch den Aktualisierungsprozess automatisieren, das Risiko von Fehlern reduzieren und sicherstellen, dass das Datenbankschema konsistent mit dem Anwendungscode bleibt.
Jede Migration dokumentiert auch spezifische Änderungen, was es einfacher macht, das Datenbankschema zu verstehen und zu pflegen.
Zusammenfassung
Die Verwendung von Flyway
vereinfacht und automatisiert den Prozess der Verwaltung von Datenbankänderungen, was zu einer zuverlässigeren und effizienteren Anwendungsentwicklung führt.
1. Was ist eine Datenbankmigration?
2. Welche Rolle spielen Migrationsversionen?
Danke für Ihr Feedback!