Flyway
-
Upload
kaunas-java-user-group -
Category
Documents
-
view
454 -
download
10
description
Transcript of Flyway
![Page 1: Flyway](https://reader031.fdocuments.us/reader031/viewer/2022013118/555c25b4d8b42a0b418b4ca0/html5/thumbnails/1.jpg)
FlywayThe agile database migration framework for Java
Kaunas JUG
Saulius Tvarijonas · [email protected]
![Page 2: Flyway](https://reader031.fdocuments.us/reader031/viewer/2022013118/555c25b4d8b42a0b418b4ca0/html5/thumbnails/2.jpg)
Why migration tool?
● Multiple environments (dev[1..*], staging, prod)
● Multiple developers
![Page 3: Flyway](https://reader031.fdocuments.us/reader031/viewer/2022013118/555c25b4d8b42a0b418b4ca0/html5/thumbnails/3.jpg)
Questions?
● What is current state of database?
● Has script already applied or not?
● Has quick fix to production applied to test
environment also?
● How do you set up a new database instance?
![Page 4: Flyway](https://reader031.fdocuments.us/reader031/viewer/2022013118/555c25b4d8b42a0b418b4ca0/html5/thumbnails/4.jpg)
How it works?
● Metadata table SCHEMA_VERSION
● Each change is recorded in metadata table
● Scans classpath for available migrations. SQL
or Java.
● The migrations are then sorted based on their
version number and applied in order
![Page 5: Flyway](https://reader031.fdocuments.us/reader031/viewer/2022013118/555c25b4d8b42a0b418b4ca0/html5/thumbnails/5.jpg)
How it works?
![Page 6: Flyway](https://reader031.fdocuments.us/reader031/viewer/2022013118/555c25b4d8b42a0b418b4ca0/html5/thumbnails/6.jpg)
How it works?
![Page 7: Flyway](https://reader031.fdocuments.us/reader031/viewer/2022013118/555c25b4d8b42a0b418b4ca0/html5/thumbnails/7.jpg)
Preparing an existing database
● Create an initial migration script that will
recreate your current state and give it a low
version number
● Use flyway:init to create the metadata table
and set this script as the current version
![Page 8: Flyway](https://reader031.fdocuments.us/reader031/viewer/2022013118/555c25b4d8b42a0b418b4ca0/html5/thumbnails/8.jpg)
Preparing existing database
![Page 9: Flyway](https://reader031.fdocuments.us/reader031/viewer/2022013118/555c25b4d8b42a0b418b4ca0/html5/thumbnails/9.jpg)
Design Goals
● Cooperation between DEV and DBA
● Use full power of the DB
● Almost no lock-in
● Automatic so you can forget about it
![Page 10: Flyway](https://reader031.fdocuments.us/reader031/viewer/2022013118/555c25b4d8b42a0b418b4ca0/html5/thumbnails/10.jpg)
It just works
● Keep it simple
● Convention over configuration
● Zero required dependencies
![Page 11: Flyway](https://reader031.fdocuments.us/reader031/viewer/2022013118/555c25b4d8b42a0b418b4ca0/html5/thumbnails/11.jpg)
Versions and namingExamples of valid versions:
● 1● 001● 5.2● 5_2 (5.2 at runtime)● 1.2.3.4.5.6.7.8.9● 205.68● 20130115113556● 2013.1.15.11.35.56● 2013.01.15.11.35.56
![Page 12: Flyway](https://reader031.fdocuments.us/reader031/viewer/2022013118/555c25b4d8b42a0b418b4ca0/html5/thumbnails/12.jpg)
Commands
INFO
MIGRATE
CLEAN
INIT
VALIDATE
REPAIR
![Page 13: Flyway](https://reader031.fdocuments.us/reader031/viewer/2022013118/555c25b4d8b42a0b418b4ca0/html5/thumbnails/13.jpg)
Integrations
● Java API (also works on Android) for migrating
the database on application startup
● Maven plugin, Gradle plugin, SBT plugin, Ant
tasks or the Command-line client
![Page 14: Flyway](https://reader031.fdocuments.us/reader031/viewer/2022013118/555c25b4d8b42a0b418b4ca0/html5/thumbnails/14.jpg)
DatabasesOracle
SQL Server
SQL Azure
DB2
MySQL (inc. Amazon RDS)
MariaDB
Google Cloud SQL
PostgreSQL (inc. Amazon RDS and Heroku)
H2
Hsql Derby
SQLite
![Page 15: Flyway](https://reader031.fdocuments.us/reader031/viewer/2022013118/555c25b4d8b42a0b418b4ca0/html5/thumbnails/15.jpg)
Architecture
![Page 16: Flyway](https://reader031.fdocuments.us/reader031/viewer/2022013118/555c25b4d8b42a0b418b4ca0/html5/thumbnails/16.jpg)
Java
![Page 17: Flyway](https://reader031.fdocuments.us/reader031/viewer/2022013118/555c25b4d8b42a0b418b4ca0/html5/thumbnails/17.jpg)
Maven
![Page 18: Flyway](https://reader031.fdocuments.us/reader031/viewer/2022013118/555c25b4d8b42a0b418b4ca0/html5/thumbnails/18.jpg)
Apply to production
![Page 19: Flyway](https://reader031.fdocuments.us/reader031/viewer/2022013118/555c25b4d8b42a0b418b4ca0/html5/thumbnails/19.jpg)
The Fear of DDL
![Page 20: Flyway](https://reader031.fdocuments.us/reader031/viewer/2022013118/555c25b4d8b42a0b418b4ca0/html5/thumbnails/20.jpg)
DML ⇔ DDL
![Page 21: Flyway](https://reader031.fdocuments.us/reader031/viewer/2022013118/555c25b4d8b42a0b418b4ca0/html5/thumbnails/21.jpg)
Cluster on start-up
![Page 22: Flyway](https://reader031.fdocuments.us/reader031/viewer/2022013118/555c25b4d8b42a0b418b4ca0/html5/thumbnails/22.jpg)
When SQL isn’t enough
● Advanced text formatting
● BLOB
![Page 23: Flyway](https://reader031.fdocuments.us/reader031/viewer/2022013118/555c25b4d8b42a0b418b4ca0/html5/thumbnails/23.jpg)
Java Migrations
![Page 24: Flyway](https://reader031.fdocuments.us/reader031/viewer/2022013118/555c25b4d8b42a0b418b4ca0/html5/thumbnails/24.jpg)
Recommended
![Page 25: Flyway](https://reader031.fdocuments.us/reader031/viewer/2022013118/555c25b4d8b42a0b418b4ca0/html5/thumbnails/25.jpg)
Java Forever
Thank
You!