多个数据库或具有大内容的表

时间:2012-03-27 07:25:06

标签: php mysql database database-design

我打算在数据库管理员上发帖,但因为它与PHP有点关系,我觉得最好在这里发帖。

我有一个目前使用8个数据库的网站,这些数据库中的表都链接回主数据库中的特定表(如果有意义的话)。我知道这是一个非常糟糕的设计,我所知道的一切都是自学成才,因此我对数据库设计的了解非常有限。 我最初设计这样的数据库的原因是因为其中的内容将呈指数级增长。因此,我觉得我应该将负载分散到不同的表中,但如果没有单独的数据库,我就无法做到这一点(出于复杂的原因)。

目前,对于我运行的每个PHP脚本,我启动了8个与MySQL服务器的连接,每个数据库对应一个。我知道这很糟糕!!!

我的同事建议完全重新设计,只使用一个数据库和几个表,但有更多的字段和更多的内容。我的问题是,很简单,他是对的吗?我是否应该尝试将所有数据库合并为一个并尽可能少的表,即使数据量非常大? 他提出的论点是,数据库旨在容纳大量数据,无论是1000万还是100亿条记录。这是他们的工作,所以我应该相信他们并以对我来说最简单的方式设计数据库。

我已经阅读了以下Stackoverflow问题,但我认为我的问题略有不同,因为数据库可能有非常大量的内容,因此答案可能会有所不同。如果没有道歉!

  1. Large websites - multiple databases or or multiple tables?
  2. Multiple databases tables or combined into one
  3. 提前致谢

1 个答案:

答案 0 :(得分:3)

  

我的问题是,很简单,他是对的吗?

是的,您需要尽可能降低数据库命中率,而不是增加数据库命中率。如果您只有一个用户,则打开8个连接。如果你有两个,你突然需要16个!三 - 24 !!你怎么得出结论,这会分散负荷?在我看来,它实际上是相反的,没有提到关系数据的问题和应用程序本身的设计。

所以,一些基本规则:

数据库 - 一个应用程序 - >一个数据库(除非真的有必要,你需要知道为什么以及如何做到这一点)

- 取决于您需要存储的数据,但通常您希望使其变得简单,灵活且易于维护,特别是如果它是一个庞大的网站(或计划)。

如果你有一个查询,需要从多个表中选择数据,你也不会写多个查询,对吧?你用一个“连接”来编写一个查询,只做一个数据库命中,并且它与多个数据库基本相同......