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

原版的:黄赵佶CSDN博客:为什么说数据库版本号控制是必要的

前言

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

备份数据库

解决这个麻烦我们最開始的思路就是备份数据库,每隔几天备份一次数据库,当须要找历史数据库对象时将备份库还原到測试机上再把相应的存储过程或者表定义找出来。

这样的方式使用过程中就发现非常多问题。首先每次须要查看历史记录的时候去还原备份非常麻烦,其次随着开发的进行,非常难记得清是谁在什么时间改了什么数据库对象,必须把一段时间内的备份都还原了再进行查找。这个过程不仅让人非常恼火,也非常浪费时间精力,假设备份间隔过长,期间变更的对象定义就无法找回了。

导出数据库对象

后来的解决思路就是每次改动数据库对象的时候将数据库对象的定义以.sql的方式存入SVN,这样的方式非常麻烦。

非常多时候开发者偷懒忘记签入SVN了,则会引起非常大问题。新添加团队的人也非常难看清版本号改动的来龙去脉。

此外。这样的方式非常不直观。假设希望看到一个数据库对象的历史版本号记录,则还要去SVN中查找。显示也非常不直观

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

将版本号记录存入数据库

这样的方式是我在网上看到过的。是在数据库中通过触发器对于数据库的变更操作进行记录。作为开发出身的人来说。对这样的方式就不是非常喜欢。

况且去历史表中找版本号改动记录本来就是一件费时费力的事。

使用第三方工具

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvREJBX0h1YW5nemo=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" />

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

后记

数据库版本号化看似是个可有可无的过程,但做好了,能够降低开发和实施甚至是生产环境中的非常多麻烦,我们的系统就是个活生生的样例。本文所阐述的方法是来自之前团队的经验。开发团队的发展都会经历从幼稚到成熟。借鉴成熟工具的经验和方法,促进了解并解决这一问题可以减少,以提高生产效率损失。

版权声明:本文博客原创文章,博客,未经同意,不得转载。

时间: 2025-02-01 03:57:54

为什么数据库版本控制是必要的的相关文章

使用Source Safe for SQL Server解决数据库版本控制问题

简介 在软件开发过程中,版本控制是一个广为人知的概念.因为一个项目可能会需要不同角色人员的参与,通过使用版本控制软件,可以使得项目中不同角色的人并行参与到项目当中.源代码控制使得代码可以存在多个版本,而不会将代码库变得混乱,典型的场景包括Bug修复.添加新功能.版本整合等. 虽然在开发层面的版本控制软件已经非常成熟,但目前国内还没有专门针对数据库层面的版本控制软件来帮助不同角色的人员在数据库层面进行团队协作.变更代码管理以及对数据库的变更进行查看和比对.在数据库层面版本控制工具的缺乏可能会出现如

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

原文:为什么说数据库版本控制是必须的 原文出处:黄钊吉CSDN博客:为什么说数据库版本控制是必要的 前言 开发过程中的版本控制非常常见,但在数据库的世界来说,版本控制就是二等甚至三等公民了.当多人同时开发一个数据库管理和应用系统时,采用合理的方法监控数据库中表.存储过程和视图等对象的变动是非常重要的,每次更改数据库,都需要做详细的记录,稍不留神就出问题.我任职过的几家公司在开发流程中的版本控制做的非常到位,但数据库方面却是一片空白,在开发过程中,经常会涉及到表上增加列.修改列.修改存储过程和视图

Spring Boot集成Flyway实现数据库版本控制?

今天给大家介绍一款比较好用的数据库版本控制工具Flyway.在通过Spring Boot构建微服务的过程中,一般情况下在拆分微服务的同时,也会按照系统功能的边界对其依存的数据库进行拆分.在这种情况下,微服务的数据库版本管理对于研发工程管理来说,就会是一个比较棘手的问题. 在正常的代码管理流程中,从产品研发研发的过程看,一般会经历功能开发.研发测试.集成测试.预发布测试.上线等多个环节.而对于同一个产品功能,可能还会涉及对多个微服务代码及数据库结构的改动. 而这些改动需要我们在以上流程中每发布一个

Flyway数据库版本控制

前言:最近工作上遇到个问题,项目开发过程中,开发代码可以通过svn来版本控制,但数据库又该如何来管理呢?多个人接触数据库,当对表.字段或数据修改后,又怎么来同步呢?经过苦寻,发现了个叫flyway的开源项目:http://flywaydb.org/,java编写,官方的介绍就是我的初衷,岂能不心动? 官网是英文的,查了下居然没有中文文档,难道没有中国人用? 慢慢看了下官方文档,试着做了下,一次成功!(离开电脑,蹦达几下,继续坐回电脑) 自己写个小教程吧 1.将flyway-core-2.3.ja

mysql数据库版本控制dbv使用

版本控制软件有svn git等等,这些工具控制源码版本非常好用,但数据库的版本控制呢?传统方法是导出来整个数据库,这样的团队协作效率非常低.有没有一种工具,能方便同步数据库结构的呢?有的,也很多,本人使用dbv,能集成到PHP+MYSQL的项目中,很方便. dbv1.1版本下载 https://github.com/victorstanciu/dbv/archive/1.1.zip 使用方法: 1. 下载后,解压到已经在git或SVN版本软件控制下的工程目录下,比如本人的工程目录是93zp_pr

不使用SVN对数据库进行版本控制

最近在开发过程中,由于数据库内的存储过程很多,并且由于业务需求的变动,需要不断改写存储过程.经常出现不同开发人员的存储过程互相覆盖的情况,拖慢了开发进度,通过在网上的查找,我们现在找到了一款Source Safe for SQL Server来协助我们解决该类问题,下面简单写一下我们如何使用Source Safe for SQL Server保存历史数据库对象定义. 软件的安装可以在该软件的官网(http://www.grqsh.com/products.htm?tab=sourcesafe-f

配置管理之数据库版本控制策略

软件配置管理(Software Configuration Management,SCM)是界定软件的组成部分,对每个部分的变更进行版本控制,并维护不同部分之间的版本关联,以使软件在开发过程中任一时间的内容都可以被追溯的管理过程.软件配置管理通常包括版本控制.变更控制和过程支持三个大的方面,涉及配置项.工作空间管理.版本控制.变更控制.状态报告.配置审计等具体活动,软件配置管理一般会贯穿到整个软件研发生命周期以及各个知识领域,本文不做具体展开. 数据库版本是研发过程中需要把控的一个方面,但实际操

使用Source Safe for SQL Server解决数据库版本管理问题(转载)

简介 在软件开发过程中,版本控制是一个广为人知的概念.因为一个项目可能会需要不同角色人员的参与,通过使用版本控制软件,可以使得项目中不同角色的人并行参与到项目当中.源代码控制使得代码可以存在多个版本,而不会将代码库变得混乱,典型的场景包括Bug修复.添加新功能.版本整合等. 虽然在开发层面的版本控制软件已经非常成熟,但目前国内还没有专门针对数据库层面的版本控制软件来帮助不同角色的人员在数据库层面进行团队协作.变更代码管理以及对数据库的变更进行查看和比对.在数据库层面版本控制工具的缺乏可能会出现如

推荐!国外程序员整理的 PHP 资源大全

iadoz 在 Github 发起维护的一个 PHP 资源列表,内容包括:库.框架.模板.安全.代码分析.日志.第三方库.配置工具.Web 工具.书籍.电子书.经典博文等等. 依赖管理 依赖和包管理库 Composer/Packagist:一个包和依赖管理器 Composer Installers:一个多框架Composer库安装器 Pickle:一个PHP扩展安装器 其他的依赖管理 其他的相关依赖管理 Satis:一个静态Composer存储库生成器 Composition:一个在运行时检查C