# finance-db-vcs **Repository Path**: thghh/finance-db-vcs ## Basic Information - **Project Name**: finance-db-vcs - **Description**: 使用liquibase对多模块所对应数据库(多数据库)表结构版本管理 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-11-28 - **Last Updated**: 2024-12-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: liquibase, Database, vcs ## README # 介绍 使用liquibase框架来管理多模块多数据库下的表结构版本,自动化执行表结构变更降低线上部署的困难, ## Liquibase基本规范 1. ChangeSet id使用[任务ID]-[表名]-[日期]-[序号],如:STORY#184711-tb_user-20241128-001 2. ChangeSet必须填写author 3. Liquibase禁止对业务数据进行sql操作 4. 使用时,禁止包含schema名称 5. Liquibase禁止使用存储过程 6. 所有表,列要加remarks进行注释 7. 已经执行过的ChangeSet严禁修改。 8. 不要随便升级项目liquibase版本,特别是大版本升级。不同版本ChangeSet MD5SUM的算法不一样。 9. ChangeSet对表结构的更改必须写rollback,也必须要加tag用于数据库回滚 10. 在版本中每一个表的变更都需要新增一个[表名.xml]的配置,然后在里面写表变更语句,不允许多个表的变更在一个xml中 ``` xml ``` ## 模块化管理 当项目变得庞大之后,一个服务可能包含的功能模块会越来越多。此时大家会想尽办法进行模块拆分,逐步进行微服务化。然而在面对错综复杂的Liquibase ChangeSet就会无从下手。 针对这种将来可能会面对的问题,项目初期就对Liquibase进行模块化管理,将在未来带来很大收益。当有一天我们需要把订单模块拆分成独立服务时,我们只需要将模块相关的ChangeSet文件迁出来。即可完成数据结构的拆分。 ```text resources |-liquibase |-user | |- master.xml | |- release.1.0.0 | | |- user.xml -- 用户相关表ChangeSet | | |- user.csv -- 用户初始化数据 | | |- company.xml -- 公司相关表ChangeSet | |- release.1.1.0 | | |- org.xml | | |- ... |- order | |- master.xml | |- release.1.0.0 | | |- ... ```