Databasemigreringar
Denna bild visar utvecklingen av databas-migreringar över versioner. Varje version återspeglar förändringar i databasstrukturen, såsom skapande av tabeller, modifiering av fält eller tillägg/borttagning av kolumner, för att möta applikationens krav.
Vid utveckling av en applikation kan det vara nödvändigt att ändra databasschemat: lägga till nya tabeller, uppdatera befintliga, införa index och så vidare.
Migreringar hjälper till att hantera dessa förändringar på ett sekventiellt och organiserat sätt, vilket säkerställer dataintegritet och håller databasschemat i linje med applikationens kod. För migreringar kommer vi att använda Flyway.
Vad är Flyway?
En av de viktigaste funktionerna i Flyway är dess stöd för migrationsversionering, vilket gör det möjligt att spåra ändringar i databasstrukturen och återställa till tidigare versioner vid behov.
Skapa en migration med Flyway
För att börja, lägg till Flyway beroendet i ditt Spring Boot-projekt. Eftersom vi använder Maven, lägg till följande beroende i din pom.xml fil:
Vi kommer även att lägga till ett annat JPA-beroende, som fungerar tillsammans med Flyway. Vi kommer att gå igenom JPA i mer detalj senare.
Detta beroende hjälper oss att integrera Flyway i vårt projekt! Men det är inte allt, vi behöver fortfarande konfigurera det!
Naturligtvis behöver Flyway veta vilken databas den ska arbeta med, så vi måste explicit ange databasen och tillhandahålla inloggningsuppgifter.
De viktigaste konfigurationerna kan anges i application.properties:
spring.flyway.url=jdbc:mysql://localhost:3306/my_database
spring.flyway.user=root
spring.flyway.password={your_password}
Vi behöver ange url, user och password för att låta Flyway arbeta med vår databas.
För att undvika att ange dessa värden flera gånger kan vi referera till dem från andra parametrar med hjälp av ${}-syntaxen.
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
I föregående kapitel skapade vi en my_database-databas och lade till en book-tabell i den. Nu kan vi dock ta bort book-tabellen eftersom den kommer att skapas genom en migration.
Nu är allt förberett för att vi ska skapa vår första migration i applikationen! Vi behöver skapa en db-mapp inuti resources-katalogen, och inom den mappen skapa ytterligare en som heter migration. Fullständig sökväg ska se ut så här: src/main/resources/db/migration.
I migrationskatalogen kan vi nu skapa filer där vi definierar våra ändringar. Filformatet ska vara V<version>__<description>.sql.
V1__create_table_books.sql
Migrationer tillämpas i ordning efter deras versioner. Versionsnumreringen måste vara sekventiell och utan luckor. Till exempel, om du har migrationer V1__init.sql och V2__add_column.sql, ska nästa migration vara V3__another_change.sql.
Inuti migrationsfilen kan du skriva SQL-skript för att definiera databasens struktur, skapa nya tabeller, kolumner osv.
Låt oss skriva skriptet för att skapa tabellen books, som vi skapade manuellt i föregående kapitel, i vår V1__create_table_books.sql-fil.
create table book
(
id varchar(255) not null primary key,
name varchar(255) not null,
author varchar(255) null,
price decimal(10, 2) null
);
Du kan även lägga till en parameter i filen application.properties som anger var migrationerna finns, så att Flyway vet exakt sökväg till migrationsfilerna:
spring.flyway.locations=classpath:db.migration
Efter detta, kör applikationen, och du bör se att tabellen har skapats med de fält du angav i migreringen!
Du kan inte längre ändra den första versionen av migreringen. För varje ändring av din tabell behöver du skapa en ny migrationsfil och lägga till det nya skriptet där!
Varför är migrationer viktiga?
Migrationer är nödvändiga för ordnad hantering av förändringar i databasen, bevarande av historik och möjliggör återställning vid behov.
De hjälper till att synkronisera databasstrukturen mellan olika miljöer såsom utveckling, test och produktion, samt automatiserar uppdateringsprocessen, minskar risken för fel och säkerställer att databasschemat förblir konsekvent med applikationskoden.
Varje migration dokumenterar även specifika ändringar, vilket gör det enklare att förstå och underhålla databasschemat.
Sammanfattning
Att använda Flyway förenklar och automatiserar processen för hantering av databas-ändringar, vilket leder till mer tillförlitlig och effektiv applikationsutveckling.
1. Vad är en databas-migrering?
2. Vilken roll spelar migreringsversioner?
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
Awesome!
Completion rate improved to 3.45
Databasemigreringar
Svep för att visa menyn
Denna bild visar utvecklingen av databas-migreringar över versioner. Varje version återspeglar förändringar i databasstrukturen, såsom skapande av tabeller, modifiering av fält eller tillägg/borttagning av kolumner, för att möta applikationens krav.
Vid utveckling av en applikation kan det vara nödvändigt att ändra databasschemat: lägga till nya tabeller, uppdatera befintliga, införa index och så vidare.
Migreringar hjälper till att hantera dessa förändringar på ett sekventiellt och organiserat sätt, vilket säkerställer dataintegritet och håller databasschemat i linje med applikationens kod. För migreringar kommer vi att använda Flyway.
Vad är Flyway?
En av de viktigaste funktionerna i Flyway är dess stöd för migrationsversionering, vilket gör det möjligt att spåra ändringar i databasstrukturen och återställa till tidigare versioner vid behov.
Skapa en migration med Flyway
För att börja, lägg till Flyway beroendet i ditt Spring Boot-projekt. Eftersom vi använder Maven, lägg till följande beroende i din pom.xml fil:
Vi kommer även att lägga till ett annat JPA-beroende, som fungerar tillsammans med Flyway. Vi kommer att gå igenom JPA i mer detalj senare.
Detta beroende hjälper oss att integrera Flyway i vårt projekt! Men det är inte allt, vi behöver fortfarande konfigurera det!
Naturligtvis behöver Flyway veta vilken databas den ska arbeta med, så vi måste explicit ange databasen och tillhandahålla inloggningsuppgifter.
De viktigaste konfigurationerna kan anges i application.properties:
spring.flyway.url=jdbc:mysql://localhost:3306/my_database
spring.flyway.user=root
spring.flyway.password={your_password}
Vi behöver ange url, user och password för att låta Flyway arbeta med vår databas.
För att undvika att ange dessa värden flera gånger kan vi referera till dem från andra parametrar med hjälp av ${}-syntaxen.
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
I föregående kapitel skapade vi en my_database-databas och lade till en book-tabell i den. Nu kan vi dock ta bort book-tabellen eftersom den kommer att skapas genom en migration.
Nu är allt förberett för att vi ska skapa vår första migration i applikationen! Vi behöver skapa en db-mapp inuti resources-katalogen, och inom den mappen skapa ytterligare en som heter migration. Fullständig sökväg ska se ut så här: src/main/resources/db/migration.
I migrationskatalogen kan vi nu skapa filer där vi definierar våra ändringar. Filformatet ska vara V<version>__<description>.sql.
V1__create_table_books.sql
Migrationer tillämpas i ordning efter deras versioner. Versionsnumreringen måste vara sekventiell och utan luckor. Till exempel, om du har migrationer V1__init.sql och V2__add_column.sql, ska nästa migration vara V3__another_change.sql.
Inuti migrationsfilen kan du skriva SQL-skript för att definiera databasens struktur, skapa nya tabeller, kolumner osv.
Låt oss skriva skriptet för att skapa tabellen books, som vi skapade manuellt i föregående kapitel, i vår V1__create_table_books.sql-fil.
create table book
(
id varchar(255) not null primary key,
name varchar(255) not null,
author varchar(255) null,
price decimal(10, 2) null
);
Du kan även lägga till en parameter i filen application.properties som anger var migrationerna finns, så att Flyway vet exakt sökväg till migrationsfilerna:
spring.flyway.locations=classpath:db.migration
Efter detta, kör applikationen, och du bör se att tabellen har skapats med de fält du angav i migreringen!
Du kan inte längre ändra den första versionen av migreringen. För varje ändring av din tabell behöver du skapa en ny migrationsfil och lägga till det nya skriptet där!
Varför är migrationer viktiga?
Migrationer är nödvändiga för ordnad hantering av förändringar i databasen, bevarande av historik och möjliggör återställning vid behov.
De hjälper till att synkronisera databasstrukturen mellan olika miljöer såsom utveckling, test och produktion, samt automatiserar uppdateringsprocessen, minskar risken för fel och säkerställer att databasschemat förblir konsekvent med applikationskoden.
Varje migration dokumenterar även specifika ändringar, vilket gör det enklare att förstå och underhålla databasschemat.
Sammanfattning
Att använda Flyway förenklar och automatiserar processen för hantering av databas-ändringar, vilket leder till mer tillförlitlig och effektiv applikationsutveckling.
1. Vad är en databas-migrering?
2. Vilken roll spelar migreringsversioner?
Tack för dina kommentarer!