dbtools数据库升级工具

最后一次更新时间2021-02-15 14:30

前言

数据库的部署升级维护,是一件麻烦事。
部署倒还好,提供一份完整的sql文件,跑一遍数据库即可。
而升级就比较麻烦,每次数据库结构有变化:比如表结构新增了字段,表新增了内置数据,表结构新增了索引等等,都需要提供给客户环境一份【增量sql】,如果是一个客户环境还好说,但如果客户多了呢,就比较麻烦。在云平台多租户环境下,这个痛点愈发需要一种解决方式。
刚开始我也在百度,google上寻找相应的工具,但没找到什么合适的现成的工具,公司原本有一套dbtools工具,但是那套比较老旧庞大,且与业务关联性比较紧密,不适合不同项目使用。
怎么办呢?
如果没有现成工具,那就自己造呗。于是dbtools数据库升级工具应运而生。

dbtools工具特点

1.设计理念

  • 轻量,独立,高效,通用性强,支持多种数据库(当前支持mysql,oracle,sqlServer三种),支持【单租户环境】和【多租户云平台】模式,且多租户云平台模式下,集成起来必须方便。
  • 维护脚本必须方便(最好是navicat一键导出的sql语句,直接复制粘贴进dbtools维护的脚本中,就能用了,不需要改动sql脚本中的任何格式最佳。)

2.功能要求

维护好一份建表sql,然后程序能根据sql脚本,自动检测是否缺表,缺字段,缺内置数据,缺索引等等,自动进行创建,更新,补全。

3.源码下载地址

https://gitee.com/tianzhihen121/dbtools.git

执行示意图.png

4.原理概括

维护一份建表sql(包含内置初始数据)和索引sql,校验器会从sql文件中根据正则表达式提取出相应的表名,字段名,索引名,内置数据,拼接成一句句sql语句,一一封装至内存中,然后借助 JdbcTemplate 执行,缺表则建表并插入内置数据,缺索引则加索引,缺字段则动态添加字段。

5.使用方法

  1. 单租户(单数据源),修改下jdbc.properties中的数据源地址,使用App.class中的main方法即可。也可以打包出来,使用java -jar执行。
    打包方法说明链接:
    http://note.youdao.com/noteshare?id=06f087cffbb961739e04d420a9b41fcc&sub=FE92F1FF287145DCA00B6E42D2689D54

  2. 多租户模式实现提示:
    校验器执行sql用的是jdbcTemplate,而jdbcTemplate寻找数据源,本质是DbToolsConfig接口实现类的getJdbcTemplate方法,多租户模式只需要自己写个类实现DbToolsConfig接口中的这些方法,然后多租户模式中,能保证每次执行校验器方法的时候,getJdbcTemplate方法获取到的为指定租户的jdbcTemplate对象即可。

你可能感兴趣的:(dbtools数据库升级工具)