在进行常规构建时如何处理数据库版本控制?
我有一个 Web 应用程序项目,可使用相当大的数据库(超过 5 GB)。 数据库中的数据按项目分区。 每个项目大约需要 1 GB,这是应用程序运行的最小集合(我们进行一些分布在该数据集上的数学计算,并且不能删除数据集的一部分)。
作为日常构建的一部分,我们还将应用程序部署到测试环境中。 为此,构建器运行自定义数据库更新实用程序,将当前数据库更新到适当的版本。 但我们还要求保留所有日常构建,以便 QA 团队可以“回到过去”并比较不同构建的计算结果。 尽管我们尝试拥有向后兼容的数据模式,但有时这是非常具有挑战性和耗时的。 因此,问题就来了:
如果您需要保持以前的日常构建并运行,并且需要在进行日常构建时管理大型数据库,那么您会使用什么方法来进行数据库版本控制?
如果有什么不同的话,我们在前端使用 SQL Server 2005 和 ColdFusion,并在前端使用一些 Java。
I have a web application project that works with a quite large database (over 5 GB). Data in the database is partitioned by project. Each project takes approximately 1 GB, and it is a minimal set for the application to work (we do some math calculations that spread across this dataset and removing a part of the dataset is not an option).
As a part of the daily build we also deploy our app into a test environment. To do so, a builder runs a custom DB update utility that updates the current DB to the appropriate version. But we also have a requirement to keep all the daily builds so that the QA team could "go back in time" and compare calculation results from different builds. As much as we try to have a backward compatible data schema sometimes it is very challenging and time consuming. So, hence the question:
What approach to the database versioning would you use if you had a requirement to keep previous daily builds up and running and need to manage a large database whilst doing daily builds?
We use SQL Server 2005 and ColdFusion with some Java at the front-end if it makes any difference.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我建议阅读 Leon Bambrick 的列表,标题为 11 个数据库版本控制工具
我会添加 Visual Studio for Database Professionals到列表可以在这里找到
另外,Jeff Atwood 也有一个不错的关于该主题的博客文章,其中包含一些背景阅读材料的链接。
I would suggest reading Leon Bambrick's list titled 11 Tools for Database Versioning
And I would add Visual Studio for Database Professionals to the list which can be found here
Also Jeff Atwood has a nice blog post on the subject with links to some background reading.