【问题标题】:Multiple databases vs single db多个数据库与单个数据库
【发布时间】:2010-12-02 11:36:38
【问题描述】:

在 Web 应用程序中,最好将所有数据保存到一个数据库中,还是为每个客户创建一个数据库?

单个数据库将更容易和更快地维护(更新、备份等),但如果出现任何问题......每个人都会被阻止。

也许我可以创建单个表然后授予权限,但我不是大师..

【问题讨论】:

  • @Col。 Shrapnel:的确如此,但这个格言适用于任何场景。
  • @Piskvor 回答了这个问题。
  • 如果您的网络服务器出现故障怎么办?您的解决方案是否也为每个客户端使用单独的网络服务器?研究集群、备份服务器(主/从)、高可用性等......使用单独的数据库将是维护的噩梦。
  • 这个问题没有正确答案。这取决于太多的事情。
  • @Dan Grossman 你能告诉我吗?也许我可以在问题中添加它

标签: php mysql


【解决方案1】:

解决“任何问题”的正确方法不是多个数据库,而是多个数据库服务器。使用单个数据库,并研究集群。

【讨论】:

  • 好的,但是自定义呢?我的意思是,我必须只为客户做点什么,这会弄乱任何东西
  • 如果它是自定义应用程序,那么是的,它进入不同的数据库。但自定义应用程序是例外,而不是规则。
【解决方案2】:

这取决于 - 我见过为数百个客户端(总共有 10000 名用户)使用相同数据库的应用程序运行得非常顺利。在我看来,根据使用场景,要么让所有客户端使用相同的数据库(并相应地处理扩展问题),要么让客户端使用不同的服务器(更容易部署,更难维护 - 因为您最终可以得到许多版本的软件,每个版本略有不同)。

同一服务器上的多个数据库是一种奇怪的混血儿,它结合了两种方法的缺点。

【讨论】:

    【解决方案3】:

    使用单个数据库而不是多个数据库或多个表。您的表应该有每个客户的唯一 ID。复制数据库服务器可以消除“任何事情都变坏”的威胁。

    【讨论】:

    • 所有表都应该有一个主键!
    【解决方案4】:

    这里更强大的方法是为每个客户使用一个数据库。 这样更容易备份和更新,而且更容易出错!

    【讨论】:

    • 我会说这是难以维护(“我是否修改了每个客户的表结构?”),但它更容易出错吗?
    • 如果您想更新一些客户表 - 执行此操作的人犯了错误并且整个数据库都消失了(如果您为每个客户提供一个数据库,那么只有一个数据库消失了)
    猜你喜欢
    • 1970-01-01
    • 2020-07-25
    • 2012-01-07
    • 1970-01-01
    • 1970-01-01
    • 2012-11-08
    • 1970-01-01
    • 2013-09-25
    • 1970-01-01
    相关资源
    最近更新 更多