Tarantino的数据库持续集成(CI)有哪些替代方案?

5
我们目前使用VincentVega(现在已合并到Tarantino)来进行数据库CI。我们正在使用CruiseControl.Net来开发我们的Web应用程序(使用TFS编写的C#代码)。
由于VincentVega非常明确,并且能够很好地处理创建和更新(同时保留现有数据)这两种情况,因此它的表现相对良好。我正在考虑升级到Tarantino,但我想知道是否有其他工具可供选择?不幸的是,像SQL Compare这样“自动”生成增量脚本的工具不适用于我们的数据库,因为它有超过500个规范化表。
谢谢。
Eric Tarasoff

如果表高度规范化,为什么更改脚本就不可行了?也许只需要使用更好的生成器?在某个层面上,所有数据库迁移都需要生成/知道增量——无论这是显式的还是隐式的。 - user166390
我很好奇你最终选择了什么。同时,我也很好奇为什么 SQL Compare 不适用。 - David Atkinson
我猜几年后回到这个问题比永远不回来要好?当我提出这个问题的时候,我们坚持使用VincentVega。现在,几年后,在另一个组织中,经过查看目前可用的一些替代方案后,我选择了RoundHousE。尽管它是一种约定优于配置的解决方案,但我发现它非常灵活,适用于不同的用例。更重要的是,从零开始运行非常快,文档也不错。此外,有足够多的其他人在使用它,你可以很容易地寻求帮助。 - Eric Tarasoff
关于为什么 SQL Compare 不适用的原因:1)我们是一个大型分布式团队,每个成员都有自己的数据库副本; 2)我的经验表明,使用它与现有数据的超大型数据库时,偶尔会出现一些区域无法正确组合同步脚本的情况; 3)SQL Compare 不是免费的;4)在很大程度上,RoundHousE 和类似的工具已经在类似于我们现在所做的模型中运行,因此我们能够捕捉到这种好处,而不需要太多的流程变更成本。 - Eric Tarasoff
另外,选择RoundHousE的最后一个原因:查克·诺里斯。 - Eric Tarasoff
1
距离我上次评论仅过去了四年,所以我认为是时候重新启动这个线程了!(请参见下面发布的新答案,描述了ReadyRoll) - David Atkinson
3个回答

5

3

有一种类似的工具由Paul Stovell和他的朋友们开发,叫做DbUp。

Tarantino和DbUp之间一个显著的区别是,虽然Tarantino通常从构建脚本(如Nant或msbuild)中调用,但是DbUp在你的应用程序中使用.NET类。这可能会更好地处理备用方案,以防脚本出现问题。

http://code.google.com/p/dbup/

以下是来自Paul Stovell博客的DbUp的原始公告:http://www.paulstovell.com/dbup


2

我认为现在有一个新的产品ReadyRoll可能会引起兴趣,因为它满足了您的主要关注点。

  • "[SQL Compare]无法正确合并同步脚本"

是的,比较工具有时可能会出错。通常不是脚本不能正常工作,而是没有按照期望的方式应用更改。ReadyRoll采用最佳实践方法,在使用SQL Compare创建每个迁移脚本的同时,关键是允许开发人员在之后自定义脚本。

  • "RoundHousE和类似工具已经在类似我们现在所做的模型中运行"

ReadyRoll的方法与RoundHousE类似,基于迁移,通过运行一系列连续的脚本来管理升级过程。这个工具是建立在认识到许多开发团队喜欢这种方式的基础上的。

  • "选择RoundHousE的最后一个原因:Chuck Norris"

我必须承认在这一点上败北了...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接