现状
背景
开发规范中规定的数据库变更流程:
这些要求都是文档级要求,关键在于阅读者是否严格照之执行;但实际情况是,老的开发人员在紧急的情况下,可能直接修改数据库中的表或数据,但空闲时又忘记维护svn上的pdm、或sql文件。新的开发人员,可能压根就不知道这回事(不是每个新来的开发人员,都经过开发规范的培训);所以结果是svn上维护的脚本基本不能用。但是当开发完毕,准备打包工程进入现场时,问题就来了:
1. 表结构取哪的?svn上的表结构有字段说名,可是表结构不准;开发库的表结构,字段没有说明,而且有很多测试的表;还有些表都不知道谁建的,也不知道有没有用,也许开发这个功能的人已经离职,根本就不知道这张表的作用。
2. 数据怎么取?svn上的初始化sql脚本已经不准,数据库表里的数据,有很多脏数据,有些表都不知道是干嘛的。
实际的数据变更情况:
好的开发人员会变更svn,并及时变更开发数据库。
更多的开发人员直接变更开发库,并不维护svn上的pdm或sql脚本。
还有少数开发人员,为了测试通过,竟会直接修改测试数据库的表结构,并不修改开发及维护svn上的文档。
开发阶段工作量分析:
人员 | 工作 | 耗时 |
N开发人员 | 提交svn,并通知试数据库维护人员 | N*1 |
N开发人员 | 变更数据库 | N*1 |
|
| 2N |
改善后的流程
环境准备:
1. 准备Svn,目录结构为:
svn/dev/module/sql //存放开发使用的sql,sql名称规范:表名+”.”+扩展+”.sql”;module目录下存放该模块的pdm文件。
svn/test/module/sql
svn/demo/module/sql
svn/online/module/sql
svn/DataBase.xlsx //db执行程序使用到的excel文件,格式见附件。
2. DataBase.xlsx
3. 收回所有应用库表结构的变更、创建、删除权限,只允许查看。
4. 分配一个配置管理人员。
执行流程:
1. 开发人员提交数据库变更文件到svn,并发邮件通知配置人员。
2. 配置人员根据时间要求,执行数据库变更
3. 开发人员使用数据库
去现场时,只要配置人员带着svn/demo和svn/online下的数据库文件,并修改DataBase.xlsx对应的库信息,在现场执行DB执行程序,就可以完成整个应用的数据库的初始化。
开发阶段工作量分析
人员 | 工作 | 耗时 |
N开发人员 | 提交svn,并通知试数据库维护人员 | N*1 |
配置人员维护 | 变更数据库 | 1 |
|
| N+1 |
附件:
Svn sheet
mid | access type | host | basedir | user name | user pwd |
basedir | http | /svn/ | wangfeng | {RC2} |
Db sheet
group id | dbid | db type | host | port | user name | user pwd | server name | table space | space size | adminuser | adminpwd | ssh username | ssh userpwd |
dev | base | oracle | 10.11.20.10 | 1522 | base | base | study | base | 100 | system | ailkpwd | ||
test | sec | oracle | 10.11.20.10 | 1522 | base | base | study | sec | 200 | system | ailkpwd | ||
demo | so1 | oracle | 10.11.20.10 | 1522 | base | base | study | so | 500 | system | ailkpwd |
Table sheet:
model name | mid path | dbid | table name | table type | table split rule | split field | split values | remark |
base | basedir:base | base | AM_ACCOUNT_BANK_OTHER | 项目配置数据 | 银行扣款一卡通账户信息表 | |||
base | basedir:base | base | AM_APP_ACC_CODE_DETAIL | 记录 | 2012-2015 | 账务表 |