玩玩儿Flyway:数据库迁移
数据库迁移
在软件开发中,我们有svn、git这样的版本管理器帮我们管理源代码,我们可以很容的查看我们当前代码的版本,更新新版本代码、回滚到旧版本等等操作。如果我们不使用版本管理器进行源代码管理,维护代码将是一项十分痛苦的工作。
开发过程中,改变的可能不仅仅是代码本身,随着业务需求的改变、技术设计的改变,我们数据库的schema也可能发生改变,数据库表中的某些值也可能发生改变。如果数据库相关的信息没有“版本管理”会出现什么问题呢?
假设我们项目中,有多个dev同时进行开发,在Build Pipeline上,有分为了Dev、CI、Test、Production这么几个不同的环境:
当我们需要在修改数据库schema时,我们不得不手动的在每台机器上去做这样的修改。这样很容易导致环境不一致的问题。
所以,RoR原生的支持了数据库迁移的功能。在Java中,我们也有一些可选的工具。Flyway就是其中挺不错的一个http://flywaydb.org/
类似Flyway这样的工具基本原理都非常简单,数据库版本的升级都是通过SQL或者Java代码来完成。
每执行一次升级或者更新,数据库中就会把这个操作的版本号记录下来。这样就可以非常容易的判断出,当前数据库处于哪个版本。
使用Flyway
Flyway的官方文档已经做得比较详细了,大家照着做做,一下就明白了。
Flyway First Step: http://flywaydb.org/getstarted/firststeps/api.html
for Java
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。