数据库开发中的版本控制

转自:http://blog.sina.com.cn/s/blog_4a2100f801013l9c.html

数据库开发中如果涉及到多人的团队开发时,就遇到了多人执行同一个存储过程或者函数导致的冲突或者冲掉其他人没有执行的代码,怎么能把数据库也能想应用代码一样版本控制起来呢。很多团队对这个事情很烦恼,一些团队中是其他人没有数据库开发的权限,如果要修改或者添加需要申请,DBA忙的要死。

   为什么要把数据库版本控制起来?

   一、最重要的就是,多人可以随便修改执行存储过程或者函数。(当前需要辅助以安全控制机制)

   二、数据库版本化演进,如果已经上线的数据库,版本化就很重要,讲应用程序和数据库置于同一个版本控制之下,这样可以在开发中很容易追溯到已经发布的程序中出现的问题。

   三、容易追踪人员对数据库的相关更改。

   版本控制方法的将使用oracle数据库和pl/sql developer开发工具,svn版本控制工具来示例。我的重点将是大量的存储过程和存储函数。

   首先注意一个结构,就是数据库中的过程和函数用包来封装,这样不但方便管理,在版本控制这里就会非常的方便。所以这里的过程和函数都是在包(package)下面的。

   团队中需要有一个共享数据库,就是核心数据库。然后还会有一些开发者沙盒,最好做到每人一个沙盒,也就是一个用户给于一个数据库环境,可以用来编写,编译,运行和测试。

   在已经版本控制的程序库中新建一个数据库控制的目录,下面导入一个sql文本格式的数据库结构文件,包括了表,序列,视图(TSV代表Table,Sequence,View,表示数据库结构)等,触发器可以考虑存为单独文件,因为它不会像TSV那样被修改的频率很低。

   上面的文件是数据库结构文件,基本是不会改变了,同时维护一个数据库结构修改的sql命令文本,其中记录对数据库结构修改的sql命令。需要注意其中的命令顺序。DBA可以定期将这个更新文件的内容合并到TSV文件中。

    然后新建一个package的目录,里面存储所有的包,包中组织过程和函数。然后每个包一个文件。(在pl/sql developer中保存包就会成一个pck格式的文本文件,里面包含了包头和包体,所以很方便)。文件名称就是默认的包名称。

   确定好上面的结构就好办了。将共享数据库按照上述方式存为文本,保存在版本控制目录之下。

   对以一个普通开发人员来说,如何来修改呢?用修改存储过程为例子。

   首先:在修改之前先update一下svn控制下的文件,将服务器最新版本取到本地。

   然后打开pl/sql developer,file----open----program File打开svn目录下的需要修改的包,这时候就能修改了,修改的时候随时保存就可以了,这样修改的内容都会保存在本地svn文件中。

   在本地运行没有问题也没有什么冲突就可以提交了。

    每个开发人员都按照这个流程来走,那么版本控制中的数据库一定是最新最全的,它比共享数据库中的还会全。这样就不用DBA来手动维护数据库的一致性了。因为每次更像的时候就能从svn日志中看到是谁更改了什么东西。非常的方便,多人修改存储过程也不会同时执行导致一方的程序被冲掉。也没有了每人自己沙盒中的程序同步到共享数据库中那种麻烦了。


//注意点儿

1.有时程序配置文件会用到一些数据库中记录,比如:ID,前端某些地方在显示数据是会用到的,对于这种情况,不一定要把完全的生成这条记录的sql写进数据库结构变更的文件中,至少要以注释的方式写数据库结构文件中

2.





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值