热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

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

前言开发过程中的版本控制非常常见,但在数据库的世界来说,版本控制就是二等甚至三等公民了。当多人同时开发一个数据库管理和应用系统时,采用合理的方法监控数据库中表、存储过程和视图等对象的变动是非常重要的,每次更改数据库,都需要做详细的记录,稍

前言 开发过程中的版本控制非常常见,但在数据库的世界来说,版本控制就是二等甚至三等公民了。当多人同时开发一个数据库管理和应用系统时,采用合理的方法监控数据库中表、存储过程和视图等对象的变动是非常重要的,每次更改数据库,都需要做详细的记录,稍

前言 开发过程中的版本控制非常常见,但在数据库的世界来说,版本控制就是二等甚至三等公民了。当多人同时开发一个数据库管理和应用系统时,采用合理的方法监控数据库中表、存储过程和视图等对象的变动是非常重要的,每次更改数据库,都需要做详细的记录,稍不留神就出问题。我任职过的几家公司在开发流程中的版本控制做的非常到位,但数据库方面却是一片空白,在开发过程中,经常会涉及到表上增加列、修改列、修改存储过程和视图,发生变化后,之前的数据库对象定义就丢失了,给开发带来非常多的麻烦,下面说说我解决没有数据库版本控制机制所引起的麻烦的思路。 备份数据库 解决这个麻烦我们最开始的思路就是备份数据库,每隔几天备份一次数据库,当需要找历史数据库对象时将备份库还原到测试机上再把对应的存储过程或者表定义找出来。这种方式使用过程中就发现很多问题,首先每次需要查看历史记录的时候去还原备份非常麻烦,其次随着开发的进行,很难记得清是谁在什么时间改了什么数据库对象,必须把一段时间内的备份都还原了再进行查找。这个过程不仅让人很恼火,也非常浪费时间精力,如果备份间隔过长,期间变更的对象定义就无法找回了。 导出数据库对象 后来的解决思路就是每次修改数据库对象的时候将数据库对象的定义以.sql的方式存入SVN,这种方式非常麻烦。很多时候开发人员偷懒忘记签入SVN了,则会引起很大问题。新加入团队的人也很难看清版本修改的来龙去脉。此外,这种方式非常不直观,如果希望看到一个数据库对象的历史版本记录,则还要去SVN中查找,显示也非常不直观

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

将版本记录存入数据库 这种方式是我在网上看到过的,是在数据库中通过触发器对于数据库的变更操作进行记录,作为开发出身的人来说,对这种方式就不是很喜欢。况且去历史表中找版本修改记录本来就是一件费时费力的事。 使用第三方工具 现在一些第三方公司已经开发了针对数据库的版本控制工具,我们之前曾经尝试过RedGate的SQLSource Control(http://www.red-gate.com/products/sql-development/sql-source-control/),SQLSource Control的原理是基于SVN,使用起来不是很符合团队的使用习惯,易用性不够,在团队推广的培训成本也比较高。

\

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

\

后记 数据库版本化看似是个可有可无的过程,但做好了,可以减少开发和实施甚至是生产环境中的很多麻烦,我们的系统就是个活生生的例子。本文所阐述的方法是来自之前团队的经验。开发团队的发展都会经历从幼稚到成熟,借鉴成熟工具的经验和方法论,提前认识并解决问题可减少损失提升生产力。
推荐阅读
  • 掌握数据库引擎存储过程与系统视图查询:DBA与BI开发者的必备技能
    本文介绍了如何利用数据库引擎存储过程及系统视图查询数据库结构和对象信息,为数据库管理员(DBA)和商业智能(BI)开发人员提供实用的基础知识。文章涵盖了一系列常用的SQL Server存储过程和系统视图,帮助读者快速获取数据库的相关信息。 ... [详细]
  • 作为一名在大型手机游戏公司工作的程序员,尽管主要负责游戏逻辑和内容的开发,但对iOS底层开发接触较少。现在有了iPhone和可以虚拟MAC环境的电脑,希望能找到有效的iOS开发学习路径。 ... [详细]
  • PHP 编程疑难解析与知识点汇总
    本文详细解答了 PHP 编程中的常见问题,并提供了丰富的代码示例和解决方案,帮助开发者更好地理解和应用 PHP 知识。 ... [详细]
  • SVN日志查看时出现超时问题的解决方案
    本文详细描述了在使用SVN查看日志时遇到的超时问题,特别是涉及中文路径的情况。通过深入研究和测试,找到了有效的解决方法,并提供了优化建议。 ... [详细]
  • 解决SVN图标显示异常问题的综合指南
    本文详细探讨了SVN图标无法正常显示的问题,并提供了多种有效的解决方案,涵盖不同环境下的具体操作步骤。通过本文,您将了解如何排查和修复这些常见的SVN图标显示故障。 ... [详细]
  • 在Windows 10系统中安装TortoiseSVN 1.11.1时,可能会遇到错误代码2503。此问题通常与系统权限设置或安装程序的执行环境有关。本文将详细介绍导致该错误的原因,并提供有效的解决方案。 ... [详细]
  • TortoiseSVN与VisualSVN Server的安装及基本操作指南
    本文详细介绍了如何安装VisualSVN Server以及TortoiseSVN客户端,并提供了基本的操作步骤,包括配置仓库、用户管理及权限设置等关键环节。 ... [详细]
  • 前端开发中的代码注释实践与规范
    本文探讨了前端开发过程中代码注释的重要性,不仅有助于个人清晰地回顾自己的编程思路,还能促进团队成员之间的有效沟通。文章将详细介绍HTML、CSS及JavaScript中的注释使用方法,并提出一套实用的注释规范。 ... [详细]
  • 使用Bootstrap创建响应式渐变固定头部导航栏的方法
    本文详细介绍了如何利用Bootstrap框架构建一个具有渐变效果的固定顶部响应式导航栏,包括HTML结构、CSS样式以及JavaScript交互的完整实现过程。适合前端开发者和学习者参考。 ... [详细]
  • 本文详细介绍了如何从SVN中获取项目,并在本地环境中进行有效的构建和开发,包括具体的步骤和配置方法。 ... [详细]
  • 本文介绍了软件测试项目的实际操作过程,包括各角色的职责分配、项目启动、测试流程及测试人员的主要任务,旨在为从事软件测试工作的技术人员提供指导。 ... [详细]
  • 最佳PHP源码加密工具推荐
    本文探讨了几款高效的PHP源码加密工具,旨在帮助开发者保护其代码免受未授权访问。文章不仅介绍了商业软件的选择,还提供了一些免费且实用的加密工具及其使用方法。 ... [详细]
  • 持续集成概述与实践指南
    本文探讨了持续集成(CI)的基本概念、目的及其在现代软件开发中的应用。通过实例分析,帮助读者理解如何有效实施持续集成,提高软件开发效率。 ... [详细]
  • Linux环境下配置Subclipse访问SVN+SSH仓库的方法
    本文详细介绍如何在Linux操作系统中配置Subclipse,以便通过SSH协议安全访问SVN仓库。不同于常见的Windows配置指南,本文提供了针对Linux用户的详细步骤。 ... [详细]
  • 本文详细介绍了 SVN 中的 switch 命令及其使用方法,包括如何切换工作副本到新的 URL 和如何处理版本库迁移等情况。 ... [详细]
author-avatar
手机用户2502884057
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有