为项目的不同阶段提供不同的数据库实例?

时间:2009-03-24 15:37:36

标签: project-management

是否推荐?你们都对此有什么看法?

或者,有没有更好的方法来管理项目的不同阶段,并使用源代码控制/数据库控制来分享他们的观点?

4 个答案:

答案 0 :(得分:2)

我的建议是将数据库架构定义保持在源代码管理下,使用相同的SCM存储库并将分支作为项目中的其余代码。这样就可以更容易地使数据库与使用它的应用程序保持同步。查询不存在的表的应用程序会很尴尬。

由于开发通常在源代码控制的不同分支中进行(例如版本1.0维护,版本1.1开发和版本2.0早期开发),因此您需要每个分支的数据库实例。这允许您根据需要修改版本1.1和2.0的数据库设计,而不会干扰1.0版维护工作的稳定性。

您肯定需要一个单独的数据库实例,用于生产与测试。我在一个向用户发送通知电子邮件的应用程序上工作。我不希望用户被我的测试实例发送的虚假电子邮件弄糊涂。在我的测试数据中,我将所有电子邮件地址更改为我自己域中的模拟地址,因此我可以根据需要多次验证它们是否正确发送,而不会打扰任何人。如果我使用相同的数据库进行测试和生产,我就无法做到这一点。

理想情况下,团队中的每个开发人员应该拥有自己的环境,包括系统的所有组件(例如数据库)。这样,每个开发人员都可以独立工作,能够进行更改并调用调试器等,而不会干扰团队中任何其他人的工作。

另一方面,这可能不实用。为每个开发人员设置完整的重复系统可能过于昂贵。将此设置工作的成本与提高生产率的潜力进行比较,因为开发人员不必彼此协调测试。

答案 1 :(得分:0)

如果在不同的阶段,您指的是开发阶段和生产阶段,那么无论如何都是好的。但我认为在开发阶段不同的数据库实例不是一个好习惯 - 你的项目中是否有任何理由?

答案 2 :(得分:0)

我可以归结为您的问题的最明智的含义是:项目的哪些阶段需要自己的共享数据库实例?标准答案(我通常同意,其他条件相同)是开发(针对当前构建),测试(结构静态和可刷新的regession测试)和生产。

可能会为设计开发与实施开发添加更多内容;几种测试;等

当然,每个开发人员都应该能够克隆任何这些用于非共享目的。

答案 3 :(得分:0)

通常我有多个DB

  • 一个用于支持(如果您有多个版本,则更多)。
  • 一个用于回归测试
  • 一个用于QA的单元测试/实验
  • Devs开发/实验的一个(有时多个实例,但我更喜欢一个 - 这样我们确定每个人都在编写相同的模式)。