ERP笔记3-数据库的版本化
原本这一节是放在上一篇里,后来想了想,觉得数据库的版本化很重要。有时候对数据库的管理不善甚至能够让一个项目失败,就把这个问题单独拉出来探讨。
数据库的版本控制在DEV环境中可以存放PowerDesigner的设计文件和数据库的脚本。在QAS、TRN和PRD由于存在不同的数据,数据库的版本化就不太好做。尤其是如果数据库中数据量大,将数据库文件纳入版本管理就不是个太好的办法。对于SQL SERVER数据库,在不停止数据库服务器的情况下,甚至都无法向版本库中提交数据库文件。
我觉得把数据库结构纳入版本化就可以了。这四个环境可以分别使用各自的数据库,如果有需要,甚至每个开发人员都可以根据sql脚本构建自己的数据库。
数据库变更频繁的是在DEV和QAS阶段。如果项目允许,这两个环境可以共用一个数据库。
去客户那边构建TRN和PRD环境的时候,最好从版本库中的SQL脚本构建而不是通过附加的方式附加数据库文件。因为数据库文件如前所述,不一定能够纳入版本管理,这就带来数据库不一致的风险。
如果有条件,数据库的变更应指定专人负责。所有人对数据库结构的变更都要从此人走,至少,数据库发生变更,此人要有记录,并且将变更纳入版本库。
当产品有多个分支的时候,数据库的版本化更加复杂。例如,基于公司基础ERP之上,又开辟了河南宇通ERP和思念食品ERP两个分支。河南宇通和思念食品有各自的个性需求,基于个性需求进行开发新特性,相应的数据库结构很可能也会发生变化。如果这种新特性需要合并到基础ERP(也即主干trunk),代码和数据库结构都要合并到主干,代码的冲突好解决,数据库文件由于未能纳入版本管理,一旦发生冲突,就比较棘手。