是否推荐?你们都对此有什么看法?
或者,有没有更好的方法来管理项目的不同阶段,并使用源代码控制/数据库控制来分享他们的观点?
答案 0 :(得分:2)
我的建议是将数据库架构定义保持在源代码管理下,使用相同的SCM存储库并将分支作为项目中的其余代码。这样就可以更容易地使数据库与使用它的应用程序保持同步。查询不存在的表的应用程序会很尴尬。
由于开发通常在源代码控制的不同分支中进行(例如版本1.0维护,版本1.1开发和版本2.0早期开发),因此您需要每个分支的数据库实例。这允许您根据需要修改版本1.1和2.0的数据库设计,而不会干扰1.0版维护工作的稳定性。
您肯定需要一个单独的数据库实例,用于生产与测试。我在一个向用户发送通知电子邮件的应用程序上工作。我不希望用户被我的测试实例发送的虚假电子邮件弄糊涂。在我的测试数据中,我将所有电子邮件地址更改为我自己域中的模拟地址,因此我可以根据需要多次验证它们是否正确发送,而不会打扰任何人。如果我使用相同的数据库进行测试和生产,我就无法做到这一点。
理想情况下,团队中的每个开发人员应该拥有自己的环境,包括系统的所有组件(例如数据库)。这样,每个开发人员都可以独立工作,能够进行更改并调用调试器等,而不会干扰团队中任何其他人的工作。
另一方面,这可能不实用。为每个开发人员设置完整的重复系统可能过于昂贵。将此设置工作的成本与提高生产率的潜力进行比较,因为开发人员不必彼此协调测试。
答案 1 :(得分:0)
如果在不同的阶段,您指的是开发阶段和生产阶段,那么无论如何都是好的。但我认为在开发阶段不同的数据库实例不是一个好习惯 - 你的项目中是否有任何理由?
答案 2 :(得分:0)
我可以归结为您的问题的最明智的含义是:项目的哪些阶段需要自己的共享数据库实例?标准答案(我通常同意,其他条件相同)是开发(针对当前构建),测试(结构静态和可刷新的regession测试)和生产。
可能会为设计开发与实施开发添加更多内容;几种测试;等
当然,每个开发人员都应该能够克隆任何这些用于非共享目的。
答案 3 :(得分:0)
通常我有多个DB