SQL Version Management SQL版本管理

SQL Version Management SQL版本管理

背景

当前,随着业务的快速发展和迭代,数据库的脚本管理已经成为一项重要的任务。然而,手动处理数据库脚本往往效率低下且容易出错。为了解决这个问题,我们考虑使用Flyway这款自动化数据库执行工具。Flyway能够帮助我们自动化处理数据库版本控制、回滚操作等任务,极大地提高运维人员在数据库脚本执行时的效率和准确性。同时,Flyway还提供了丰富的功能和插件,使得我们可以根据实际需求进行定制化操作。因此,我们决定引入Flyway来提升我们的数据库脚本管理、执行能力

目的

数据库DDL和DML脚本的 统一管理和维护,做到历史版本可追溯。并且提高发版效率,规划发版流程。

版本控制:Flyway 允许开发团队将数据库结构的变化纳入版本控制系统,就像管理代码一样。每个数据库脚本都被视为一个独立的版本,并且可以追踪和管理每个版本的变化。这样可以确保团队成员对数据库结构的变更进行跟踪,并轻松地回滚或执行到特定的版本。

自动化执行:Flyway 可以自动检测并应用未应用的数据库执行q。当应用程序启动时,Flyway 会检查数据库中是否存在未应用的脚本,然后按照定义的顺序逐个应用执行。这样可以简化数据库结构的更新过程,并确保每个开发人员、测试环境和生产环境中的数据库保持一致。

跨多个环境的一致性:使用 Flyway 可以确保开发、测试和生产环境中的数据库结构保持一致。每个环境都可以使用相同的脚本,并在部署过程中自动应用这些脚本。这样可以减少人为错误和环境差异导致的问题,并提高应用程序的可靠性和稳定性。

跨数据库平台支持:Flyway 支持多种主流数据库平台,包括 MySQL、PostgreSQL、Oracle、SQL Server 等。这使得开发团队可以在不同的数据库上使用相同的脚本和工作流程,而无需为每个数据库平台单独编写和维护脚本。

方案选型

目前主流开源工具Flyway、Liquibase、Bytebase对比

FlywayLiquibaseBytebase
运行环境支持Java 8-17 支持主流的数据库,在Mysql方面支持5.5- 8.0支持Java8,11,16 支持主流的数据库,在Mysql方面支持5.7和8.0支持主流的数据库
脚本格式统一使用SQLSQL,XML,JSON,YAMLSQL
总结更好脚本版本和类型(单次执行、重复执行)规范,使用简洁方面更多类型的数据库管理格式,功能比Flyway较丰富; 因为脚本规范不是强制,在多人协作是有脚本被覆盖和乱序执行的可能 ;概念较多使用和学习成本较高License 需确认,免费版本仅支持20User,虽然功能全面,作为SQL 版本管理工具比较重
协议Apache 2.0Apache 2.0企业自己的License,需订阅使用。免费版有用户限制
使用方式spring maven 插件spring maven 插件作为一个DevOps 平台需要独立部署

结合项目选了flyway

Flyway基本原理

![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/a895f80f28e14e349298ac7b96ca347f.png
总结:flyway通过历史记录表(flyway_schema_history)来记录版本历史。每次随项目启动时将会自动扫描在resources/db/migration下的文件并查询flyway_schema_history判断是否为新增文件。如果是新增的文件,则执行该迁移文件。如果不是,则忽略

在这里插入图片描述
数据库需要改进时,无论是DDL或DML,只要创建一个版本号高于目前版本的执行就行,下次Flyway启动时,它会依次进行数据库的升级操作

脚本格式规范

在这里插入图片描述
注:V开头的SQL执行优先级要比R开头的SQL优先级高

  • 26
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值