我们是否应该为每个开发者单独设置数据库实例?

23
什么是开发基于数据库的应用程序的最佳方法?我们可以有两种方法。
  1. 所有开发人员共用一个数据库。
  2. 每个开发者都有自己的数据库。
每种方法各有利弊,哪种更好呢? 编辑: 多个开发者将更新数据库,并且每个开发者机器上都已安装 SqlExpress 2005。 编辑: 我们大多数人都建议使用共同的数据库。但是,如果其中一个开发人员修改了代码和数据库模式。他尚未提交代码更改,但模式更改已导入到共同的数据库中。这不会破坏其他开发人员的代码吗?

如果你还没有听说过,你可以为每个开发者在数据库中设置所谓的“单元模式”。 - Guru
@Guru:什么是"Unit Schemas"?Google 没有给我很多信息。 - Amitabh
关于你的第二次编辑,Amitabh,我们很少破坏东西。如果它会破坏某些东西,开发人员将暂时分开,直到他们的代码被检查后,然后两者将同时合并。再次强调,这是很少见的情况。 - Marcus Adams
这是相同的Oracle模式(在此处:http://www.oracle.com/technology/obe/2day_dba/schema/schema.htm)。在主用户登录中,您可以创建用户并在其中创建相同的对象,并将它们用于开发。 - Guru
1
我们大多数人都建议使用一个共同的数据库。但是,如果其中一位开发人员修改了代码和数据库架构,他尚未提交代码更改,但架构更改已经进入了共同的数据库,这不可能会破坏其他开发人员的代码吗?这是一个加分项,你想在开发阶段就找出你是否正在破坏其他东西。 - HLGEM
12个回答

0
你可能还想看看重构数据库。除了讨论数据库变更外,他还包括了关于如何从开发到生产环境中降低风险的讨论。

0

开发人员拥有自己的数据库最大的问题是:

  • 首先,它不太可能与真实的生产数据库一样大(如果您考虑到我们需要处理的所有数据库,它们将占用数百GB的空间,而我没有那么多可用的空间),这会导致编写永远无法在性能上适应大型数据库的糟糕代码。SQL代码不应针对比生产环境中数据集显著小的数据集编写。
  • 其次,使用自己的数据库的开发人员在长时间开发某些东西后,只有在与真正的数据库合并之后才发现它会影响其他事情,这会引起问题。当您共享环境时,可以更快地发现这些问题。因此,在最终减少了浪费的开发时间。
  • 第三,正在处理相关事物的开发人员需要知道您所做的更改,因为它将影响他们的更改。

当您知道您将影响其他人时,我认为您倾向于更加小心谨慎,这是我的一个优点。

现在,共享数据库服务器应该有我们所谓的临时数据库,一个人们可以创建和测试表更改的地方,因此,如果他们正在做一些可能需要删除和重新创建表的事情(这应该是罕见的情况!),他们可以首先将表复制到临时数据库中并在那里运行其过程,然后在确定它有效之后切换到真实数据库。或者,在测试特定更改之前,我们经常将备份表复制到临时数据库中,以便在出现问题时轻松地重新创建旧数据。

我认为使用单独的数据库没有任何优势。


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