Datenbankmigrationen
Dieses Bild zeigt den Verlauf von Datenbankmigrationen über verschiedene Versionen hinweg. Jede Version spiegelt Änderungen an der Datenbankstruktur wider, wie das Erstellen von Tabellen, das Ändern von Feldern oder das Hinzufügen/Entfernen von Spalten, um den Anforderungen der Anwendung gerecht zu werden.
Bei der Entwicklung einer Anwendung kann es erforderlich sein, das Datenbankschema zu ändern: neue Tabellen hinzufügen, bestehende aktualisieren, Indizes einführen usw.
Migrationen unterstützen die Verwaltung dieser Änderungen auf sequenzielle und organisierte Weise, gewährleisten die Datenintegrität und halten das Datenbankschema mit dem Code der Anwendung synchron. Für Migrationen verwenden wir Flyway.
Was ist Flyway?
Eine der Hauptfunktionen von Flyway ist die Unterstützung der Migrationsversionierung, wodurch Änderungen an der Datenbankstruktur nachverfolgt und bei Bedarf auf frühere Versionen zurückgesetzt werden können.
Migration mit Flyway erstellen
Zu Beginn die Abhängigkeit von Flyway zum Spring Boot-Projekt hinzufügen. Da Maven verwendet wird, die folgende Abhängigkeit in die Datei pom.xml einfügen:
Wir werden außerdem eine weitere JPA-Abhängigkeit hinzufügen, die zusammen mit Flyway arbeitet. Auf JPA werden wir später noch ausführlicher eingehen.
Diese Abhängigkeit unterstützt die Integration von Flyway in das Projekt. Das ist jedoch nicht alles – eine Konfiguration ist weiterhin erforderlich!
Natürlich muss Flyway wissen, mit welcher Datenbank es arbeiten soll. Daher ist es notwendig, die Datenbank explizit anzugeben und die Zugangsdaten bereitzustellen.
Die wichtigsten Konfigurationen werden in der Datei application.properties festgelegt:
spring.flyway.url=jdbc:mysql://localhost:3306/my_database
spring.flyway.user=root
spring.flyway.password={your_password}
Wir müssen die url, den user und das password angeben, damit Flyway mit unserer Datenbank arbeiten kann.
Um jedoch zu vermeiden, diese Werte mehrfach einzugeben, können wir sie mithilfe der ${}-Syntax aus anderen Parametern referenzieren.
spring.flyway.url=${spring.datasource.url}
spring.flyway.user=${spring.datasource.username}
spring.flyway.password=${spring.datasource.password}
spring.datasource.url=jdbc:mysql://localhost:3306/my_database
spring.datasource.username=root
spring.datasource.password={your_password}
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
Im vorherigen Kapitel haben wir eine my_database-Datenbank erstellt und eine book-Tabelle hinzugefügt. Diese book-Tabelle können wir jedoch jetzt löschen, da sie durch eine Migration erstellt wird.
Nun ist alles bereit, um unsere erste Migration in der Anwendung zu erstellen! Es ist erforderlich, einen db-Ordner im Verzeichnis resources anzulegen und darin einen weiteren Ordner mit dem Namen migration zu erstellen. Der vollständige Pfad sollte wie folgt aussehen: src/main/resources/db/migration.
Im Migrationsverzeichnis können nun Dateien erstellt werden, in denen die Änderungen definiert werden. Das Dateiformat sollte V<version>__<description>.sql sein.
V1__create_table_books.sql
Migrationen werden in der Reihenfolge ihrer Versionen angewendet. Die Versionsnummerierung muss fortlaufend und lückenlos erfolgen. Wenn beispielsweise die Migrationen V1__init.sql und V2__add_column.sql vorhanden sind, sollte die nächste Migration V3__another_change.sql sein.
Innerhalb der Migrationsdatei können SQL-Skripte geschrieben werden, um die Struktur der Datenbank zu definieren, neue Tabellen, Spalten usw. zu erstellen.
Das Skript zum Erstellen der Tabelle books, die im vorherigen Kapitel manuell erstellt wurde, wird nun in der Datei V1__create_table_books.sql definiert.
create table book
(
id varchar(255) not null primary key,
name varchar(255) not null,
author varchar(255) null,
price decimal(10, 2) null
);
Es kann auch ein Parameter in der Datei application.properties hinzugefügt werden, der angibt, wo sich die Migrationen befinden, damit Flyway den genauen Pfad zu den Migrationsdateien kennt:
spring.flyway.locations=classpath:db.migration
Danach Anwendung ausführen und es sollte die erstellte Tabelle mit den in der Migration angegebenen Feldern sichtbar sein!
Die erste Version der Migration kann nicht mehr geändert werden. Für jede Änderung an der Tabelle muss eine neue Migrationsdatei erstellt und das neue Skript dort hinzugefügt werden!
Warum sind Migrationen wichtig?
Migrationen sind notwendig für eine geordnete Verwaltung von Änderungen in der Datenbank, zur Wahrung der Historie und um bei Bedarf Rollbacks zu ermöglichen.
Sie unterstützen die Synchronisierung der Datenbankstruktur über verschiedene Umgebungen wie Entwicklung, Test und Produktion, automatisieren zudem den Aktualisierungsprozess, verringern das Fehlerrisiko und stellen sicher, dass das Datenbankschema mit dem Anwendungscode konsistent bleibt.
Jede Migration dokumentiert außerdem spezifische Änderungen, was das Verständnis und die Wartung des Datenbankschemas erleichtert.
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!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
What are the steps to create a migration file with Flyway?
How does Flyway handle versioning and rollbacks?
Can you explain how to configure Flyway in a Spring Boot project?
Awesome!
Completion rate improved to 3.45
Datenbankmigrationen
Swipe um das Menü anzuzeigen
Dieses Bild zeigt den Verlauf von Datenbankmigrationen über verschiedene Versionen hinweg. Jede Version spiegelt Änderungen an der Datenbankstruktur wider, wie das Erstellen von Tabellen, das Ändern von Feldern oder das Hinzufügen/Entfernen von Spalten, um den Anforderungen der Anwendung gerecht zu werden.
Bei der Entwicklung einer Anwendung kann es erforderlich sein, das Datenbankschema zu ändern: neue Tabellen hinzufügen, bestehende aktualisieren, Indizes einführen usw.
Migrationen unterstützen die Verwaltung dieser Änderungen auf sequenzielle und organisierte Weise, gewährleisten die Datenintegrität und halten das Datenbankschema mit dem Code der Anwendung synchron. Für Migrationen verwenden wir Flyway.
Was ist Flyway?
Eine der Hauptfunktionen von Flyway ist die Unterstützung der Migrationsversionierung, wodurch Änderungen an der Datenbankstruktur nachverfolgt und bei Bedarf auf frühere Versionen zurückgesetzt werden können.
Migration mit Flyway erstellen
Zu Beginn die Abhängigkeit von Flyway zum Spring Boot-Projekt hinzufügen. Da Maven verwendet wird, die folgende Abhängigkeit in die Datei pom.xml einfügen:
Wir werden außerdem eine weitere JPA-Abhängigkeit hinzufügen, die zusammen mit Flyway arbeitet. Auf JPA werden wir später noch ausführlicher eingehen.
Diese Abhängigkeit unterstützt die Integration von Flyway in das Projekt. Das ist jedoch nicht alles – eine Konfiguration ist weiterhin erforderlich!
Natürlich muss Flyway wissen, mit welcher Datenbank es arbeiten soll. Daher ist es notwendig, die Datenbank explizit anzugeben und die Zugangsdaten bereitzustellen.
Die wichtigsten Konfigurationen werden in der Datei application.properties festgelegt:
spring.flyway.url=jdbc:mysql://localhost:3306/my_database
spring.flyway.user=root
spring.flyway.password={your_password}
Wir müssen die url, den user und das password angeben, damit Flyway mit unserer Datenbank arbeiten kann.
Um jedoch zu vermeiden, diese Werte mehrfach einzugeben, können wir sie mithilfe der ${}-Syntax aus anderen Parametern referenzieren.
spring.flyway.url=${spring.datasource.url}
spring.flyway.user=${spring.datasource.username}
spring.flyway.password=${spring.datasource.password}
spring.datasource.url=jdbc:mysql://localhost:3306/my_database
spring.datasource.username=root
spring.datasource.password={your_password}
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
Im vorherigen Kapitel haben wir eine my_database-Datenbank erstellt und eine book-Tabelle hinzugefügt. Diese book-Tabelle können wir jedoch jetzt löschen, da sie durch eine Migration erstellt wird.
Nun ist alles bereit, um unsere erste Migration in der Anwendung zu erstellen! Es ist erforderlich, einen db-Ordner im Verzeichnis resources anzulegen und darin einen weiteren Ordner mit dem Namen migration zu erstellen. Der vollständige Pfad sollte wie folgt aussehen: src/main/resources/db/migration.
Im Migrationsverzeichnis können nun Dateien erstellt werden, in denen die Änderungen definiert werden. Das Dateiformat sollte V<version>__<description>.sql sein.
V1__create_table_books.sql
Migrationen werden in der Reihenfolge ihrer Versionen angewendet. Die Versionsnummerierung muss fortlaufend und lückenlos erfolgen. Wenn beispielsweise die Migrationen V1__init.sql und V2__add_column.sql vorhanden sind, sollte die nächste Migration V3__another_change.sql sein.
Innerhalb der Migrationsdatei können SQL-Skripte geschrieben werden, um die Struktur der Datenbank zu definieren, neue Tabellen, Spalten usw. zu erstellen.
Das Skript zum Erstellen der Tabelle books, die im vorherigen Kapitel manuell erstellt wurde, wird nun in der Datei V1__create_table_books.sql definiert.
create table book
(
id varchar(255) not null primary key,
name varchar(255) not null,
author varchar(255) null,
price decimal(10, 2) null
);
Es kann auch ein Parameter in der Datei application.properties hinzugefügt werden, der angibt, wo sich die Migrationen befinden, damit Flyway den genauen Pfad zu den Migrationsdateien kennt:
spring.flyway.locations=classpath:db.migration
Danach Anwendung ausführen und es sollte die erstellte Tabelle mit den in der Migration angegebenen Feldern sichtbar sein!
Die erste Version der Migration kann nicht mehr geändert werden. Für jede Änderung an der Tabelle muss eine neue Migrationsdatei erstellt und das neue Skript dort hinzugefügt werden!
Warum sind Migrationen wichtig?
Migrationen sind notwendig für eine geordnete Verwaltung von Änderungen in der Datenbank, zur Wahrung der Historie und um bei Bedarf Rollbacks zu ermöglichen.
Sie unterstützen die Synchronisierung der Datenbankstruktur über verschiedene Umgebungen wie Entwicklung, Test und Produktion, automatisieren zudem den Aktualisierungsprozess, verringern das Fehlerrisiko und stellen sicher, dass das Datenbankschema mit dem Anwendungscode konsistent bleibt.
Jede Migration dokumentiert außerdem spezifische Änderungen, was das Verständnis und die Wartung des Datenbankschemas erleichtert.
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!