为何说数据库版本控制是必须的

原文: 为何说数据库版本控制是必须的

原文出处:黄钊吉CSDN博客:为何说数据库版本控制是必要的

前言


开发过程当中的版本控制很是常见,但在数据库的世界来讲,版本控制就是二等甚至三等公民了。当多人同时开发一个数据库管理和应用系统时,采用合理的方法监控数据库中表、存储过程和视图等对象的变更是很是重要的,每次更改数据库,都须要作详细的记录,稍不留神就出问题。我任职过的几家公司在开发流程中的版本控制作的很是到位,但数据库方面倒是一片空白,在开发过程当中,常常会涉及到表上增长列、修改列、修改存储过程和视图,发生变化后,以前的数据库对象定义就丢失了,给开发带来很是多的麻烦,下面说说我解决没有数据库版本控制机制所引发的麻烦的思路。sql

 

备份数据库


解决这个麻烦咱们最开始的思路就是备份数据库,每隔几天备份一次数据库,当须要找历史数据库对象时将备份库还原到测试机上再把对应的存储过程或者表定义找出来。这种方式使用过程当中就发现不少问题,首先每次须要查看历史记录的时候去还原备份很是麻烦,其次随着开发的进行,很难记得清是谁在什么时间改了什么数据库对象,必须把一段时间内的备份都还原了再进行查找。这个过程不只让人很恼火,也很是浪费时间精力,若是备份间隔过长,期间变动的对象定义就没法找回了。数据库

 

导出数据库对象


后来的解决思路就是每次修改数据库对象的时候将数据库对象的定义以.sql的方式存入SVN,这种方式很是麻烦。不少时候开发人员偷懒忘记签入SVN了,则会引发很大问题。新加入团队的人也很难看清版本修改的前因后果。此外,这种方式很是不直观,若是但愿看到一个数据库对象的历史版本记录,则还要去SVN中查找,显示也很是不直观工具

        还有一个问题是团队中的开发DBA很是不习惯使用SVN。测试

 

将版本记录存入数据库


这种方式是我在网上看到过的,是在数据库中经过触发器对于数据库的变动操做进行记录,做为开发出身的人来讲,对这种方式就不是很喜欢。何况去历史表中找版本修改记录原本就是一件费时费力的事。spa

 

使用第三方工具


如今一些第三方公司已经开发了针对数据库的版本控制工具,咱们以前曾经尝试过RedGate的SQLSource Control(http://www.red-gate.com/products/sql-development/sql-source-control/),SQLSource Control的原理是基于SVN,使用起来不是很符合团队的使用习惯,易用性不够,在团队推广的培训成本也比较高。.net


最近团队在使用的另外一个工具是一个很易用的中文版数据库版本控制软件,叫作SourceSafe for SQL Server(http://www.grqsh.com/products.htm?tab=sourcesafe-for-sql-server), Source Safe for SQL Server的原理是将变动记录存入版本库,按期能够将数据库定义的脚本导入SVN,数据库版本的历史记录能够像在SVN中那样查看,团队推广的培训成本也比较低。帮助咱们解决了不少团队中的问题。版本控制


 

 

后记


数据库版本化看似是个无关紧要的过程,但作好了,能够减小开发和实施甚至是生产环境中的不少麻烦,咱们的系统就是个活生生的例子。本文所阐述的方法是来自以前团队的经验。开发团队的发展都会经历从幼稚到成熟,借鉴成熟工具的经验和方法论,提早认识并解决问题可减小损失提高生产力。server

相关文章
相关标签/搜索