哪种版本控制方法可以帮助团队成员跟踪数据库架构更改?

评论

您想在这里完成什么?您是否要提醒人们进行更改或创建审核记录,以了解谁更改了内容和时间?还有其他东西吗?

@Scott-本质上能够像为其他开发人员创建审核跟踪一样创建-因此我们知道我们拥有最新的开发人员架构,可以轻松地检查测试站点和活动站点以查看其运行的架构。 />
这类似于我刚刚发布的问题,但我认为它们足以回答两个问题dba.stackexchange.com/questions/64/…

@BitOff-我同意,我想我对您引用的问题的回答也位于此处。使用PowerDesigner或ERWin之类的工具可以帮助控制数据库设计的版本-如果数据库是外部建模的,并且所有更改都通过模型进行了计划,则您可以更好地控制和分发这些更改以供审核。

查看Liquibase或Flyway

#1 楼

就在几分钟前,我正在检查以下内容:一个带有数据库的所有项目中都应该存在的表,看起来很简单,可以付诸实践,将其检出:


它称为schema_version (或迁移,或任何适合您的方式),其目的是跟踪数据库的结构或数据更改。
可能的结构(在MySQL中为示例)为:

create table schema_version (
     `when` timestamp not null default CURRENT_TIMESTAMP,
     `key` varchar(256) not null,
     `extra` varchar(256),
     primary key (`key`)
) ENGINE=InnoDB;


将值('001','模式版本')插入schema_version(keyextra);是否将第一个版本部署到临时服务器或生产服务器由您决定。

每当您需要执行SQL脚本来更改数据库结构或执行数据迁移时,都应在其中添加一行表也​​是如此。并通过在该脚本的开头或结尾处的插入语句来执行此操作(该脚本已提交到项目的代码存储库)。




评论


@David-这几乎是一个问题,但是您能否很快解释一下表格如何反馈给您的VCS?只是手动转储?

–托比
2011年1月3日,21:11

@Toby-通过部署,将脚本放入SVN中,开发人员提供了SVN rev或JIRA bug#-我们(dbas)将其快速注释和rev#插入到此表中。但是,为了将其绑定在一起,我们创建了一个网页来指向此表,并带有指向JIRA的超链接。

–大卫·霍尔(David Hall)
2011年1月3日,21:17

是。基本上,OP具有向后的功能-您使用所版本的部署脚本,而不使用数据库增量。无论如何,这些仅在退化(简化)的情况下起作用-您可能必须进行多步转换以更新架构,而该工具无法向后生成。但是部署脚本可以解决这个问题。

– TomTom
2013年9月23日在7:59

#2 楼

我认为最好的方法是在构建过程中生成数据库。将所有脚本与其余代码一起保留在源代码管理中,每个人都应对自己的环境负责。

,RedGate有一个工具可以将源代码控制集成到SSMS中,并且SQL Compare很有用比较/同步MS SQL Server架构。 Visual Studio Database Edition还具有一个内置的架构比较工具。

另一个SO问题将我引到Migrator Dot Net,我将在大量闲暇时间开始进行调查。看来这是一种好方法,但可能比您愿意付出的时间/开销更多。

评论


Visual Studio的“数据库版本”曾经是一个单独的产品,但现在包括在Team Server等版本中。我个人更喜欢RedGate工具(SQL比较)来保持它们同步。

– Tangurena
2011年1月4日,下午2:22

#3 楼

eiefai已经提到了一个表,该表应该存在于所有带有数据库的项目中。这是一篇很棒的博客文章,但是IMO仅将其作为一种可行的数据库修订控制解决方案的一部分。我认为在现实世界中“尝试”回答这个问题的任何尝试都需要考虑有关VCS和数据库的其他一些信息:


敏捷数据方法论
“数据库重构”书
马丁·福勒(Martin Fowler)关于“进化数据库设计”的文章
Liquibase工具

#4 楼

我认为,有几个不同的角度来解决这个问题。我认为,“工具优先”的角度将根据平台和个人喜好而有所不同。恰当的例子:我正在MS Visual Studio中使用数据库项目,但是我不确定这是否是MySQL的出色解决方案。我也知道人们在Redgate,Erwin,Embarcadero等公司的最喜欢的工具上卖得很好。此站点中的后续问题。此过程的重点是使模式受源代码控制并管理更改,以便您可以根据需要将模式更改从“ x”版本更改为“ y”版本。

对此的明确答案该主题最终看起来像一本书,因此可能值得一读:Redgate最近出版了一本名为《基于SQL Server团队的Red Gate指南的免费电子书》,尽管其中有很多辩论,这是一个开始辩论的好地方,IMO。与名称相反,本书中的许多材料足够通用,可以应用于任何数据库(不仅是SQL Server)和任何工具集(不仅是Redgate)。如果您还没有看到它,那么至少绝对值得一看。

最后,可能值得将stackoverflow的“旧版答案”链接起来。

#5 楼

SchemaCrawler是我的工具,用于生成包含所有数据库模式对象的文本文件。我将该文本输出设计为易于阅读,并且可以与其他服务器的类似输出进行区分。

在实践中,我发现输出数据库模式的文本文件在构建过程中完成时很有用。这样,您可以将文本文件检入源代码控制系统,并拥有有关模式随时间演变的版本历史记录。 SchemaCrawler也旨在从命令行自动执行此操作。

评论


对于oracle,请访问code.google.com/p/oracle-ddl2svn

– qwazer
13年5月7日在10:29