我的项目中的一些人似乎认为使用通用开发数据库并让每个人都连接到它是最好的事情。我认为事实并非如此,每个开发人员拥有自己的数据库(定期更新数据转储)是最好的。我是对还是错?您在使用这些方法时遇到过任何问题吗?

有帮助吗?

解决方案

磁盘空间和 CPU 应该足够便宜 每个开发人员都可以运行自己的数据库实例, ,在版本控制下进行自动构建。这是为了让开发人员能够大胆地对数据库进行黑客攻击,而不受任何其他开发人员并发黑客攻击的影响。

当然,需要注意的是,他们对其私有实例所做的任何更改对其他人来说都是无用的 除非 它可以在构建过程中自动应用。因此,需要有一个坚定的策略,即应用程序代码不能依赖于任何数据库状态,除非该状态由 版本控制的、经过单元测试的更改 数据定义语言.

有关将数据库定义视为项目代码的另一部分以及协调更改和重构的理论和实践的优秀指南,请参阅 重构数据库:进化数据库设计 作者:斯科特·W.安布勒和普拉莫德·萨达拉奇。

其他提示

我喜欢拥有自己的数据库副本用于开发,因为它使您可以灵活地快速更改事物,而不必担心它将如何影响其他人。

然而,如果所有开发人员都在破解自己的数据库副本,那么最终将每个人的工作合并在一起就会变得越来越困难。

我认为通过让开发人员在日常开发过程中在本地副本上工作,可以两全其美,但每个开发人员可能应该定期将他们的工作合并到一个公共副本中。编写大量单元测试也有帮助。

我们在所有开发人员(20 多名)之间共享一个数据库,但我们对其进行了结构化,以便每个人都有自己的表。

你不 需要 如果您正确构建应用程序,则每个开发人员都有一个单独的数据库。无论如何,它使用的数据库或表前缀应该是可配置的,这样您就可以轻松地在实例之间移动它(单元测试、系统测试、验收测试、生产、灾难恢复等)。

使用单一数据库的优点是可以摊销维护成本。您不必让 DBA 尝试处理大量数据库(或者,如果您是一家小型数据库商店,则不必让每个开发人员在开发时更好地利用他们自己的数据库)。

出现单点故障并不是一件好事,不是吗?

我更喜欢单一的共享数据库。但这很大程度上取决于具体情况和正在开发的应用程序。

对我有用的东西可能对你不起作用。跟着你的直觉走。

如果您正在使用 Hibernate 或任何基于 hibernate 的平台,您可以将数据库配置为在启动服务器时创建(创建-删除选项)。当您向类添加新属性时,这非常有用。如果是这种情况,每个开发人员都必须拥有自己的数据库副本。

如果您根本不更改数据库结构,那么您可以使用单个共享数据库。在第二种情况下不是必须的。我更喜欢拥有自己的数据库,在那里我可以做任何我想做的事情。另一方面,请记住,某些查询可能需要花费大量时间,如果您共享数据库,这将影响您的整个团队。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top