最新的Yusi主题上线啦!

flyway简述

数据库 lzxianren 722℃ 0评论

flyway是什么?

Flyway is an open-source database migration tool. It strongly favors simplicity and convention over configuration.

Flyway是一款开源的数据库版本管理工具,它更倾向于规约优于配置的方式。Flyway可以独立于应用实现管理并跟踪数据库变更,支持数据库版本自动升级,并且有一套默认的规约,不需要复杂的配置,Migrations可以写成SQL脚本,也可以写在Java代码中,不仅支持Command Line和Java API,还支持Build构建工具和Spring Boot等,同时在分布式环境下能够安全可靠地升级数据库,同时也支持失败恢复等。

简单来说,flyway是用来管理数据库版本的开源工具,支持主流的操作方式及框架,可以更方便地管理数据库版本。

为什么用flyway?

Well unfortunately we have not been doing so well there. Many projects still rely on manually applied sql scripts. And sometimes not even that (a quick sql statement here or there to fix a problem). And soon many questions arise:

  1. What state is the database in on this machine?
  2. Has this script already been applied or not?
  3. Has the quick fix in production been applied in test afterwards?
  4. How do you set up a new database instance?
  5. More often than not the answer to these questions is: We don’t know.

Database migrations are a great way to regain control of this mess.

They allow you to:

  1. Recreate a database from scratch
  2. Make it clear at all times what state a database is in
  3. Migrate in a deterministic way from your current version of the database to a newer one

上面是摘抄自官网的内容。链接:https://flywaydb.org/getstarted/why

以上内容翻译过来主要包括两部分:

一、 没有数据库版本管理工具的问题

  1. 某台电脑的数据库是什么状态?
  2. 这个脚本是否已经执行了?
  3. 在正式环境中的修复是否已经在测试环境中应用?
  4. 如何创建一个新的数据库实例
  5. 更多的时候,我们的问题其实是:不知道!

二、用数据库版本工具的好处

  1. 通过脚本重新创建数据库
  2. 什么时候都能看明白数据库的状态
  3. 随时将你当前的版本进行迁移

flyway 原理

原理其实很简单,创建一张表来保存数据库的状态。
Flyway对数据库进行版本管理主要由Metadata表和6种命令完成,Metadata主要用于记录元数据。
关于6种命令及Metadata表结构请参考官网。

https://flywaydb.org/getstarted/how

怎么用flyway?

数据库如何管理

Migrations是指Flyway在更新数据库时是使用的版本脚本,比如:一个基于Sql的Migration命名为V1__init_tables.sql,内容即是创建所有表的sql语句,另外,Flyway也支持基于Java的Migration。Flyway加载Migrations的默认Locations为classpath:db/migration,也可以指定filesystem:/project/folder,其加载是在Runtime自动递归地执行的。

比如创建数据库表结构:V1.0__init_tables.sql

初始化数据:V1.1__init_data.sql

这样在数据库迁移的时候,只会执行一次。如果想执行多次,只需要以R开头即可。

java 如何使用

引入相关依赖jar 然后写代码,或者用maven的插件。

参考:https://flywaydb.org/documentation/maven/

总结

flyway 是一款成熟开源的数据库版本管理工具,可以让我们学习如何管理数据库的版本,快速掌握管理数据库版本的命脉、

转载请注明:程序员的自我修养 » flyway简述

喜欢 (1)or分享 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址