首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >对于多客户端应用程序,我应该使用单个数据库设置还是多个数据库设置?

对于多客户端应用程序,我应该使用单个数据库设置还是多个数据库设置?
EN

Stack Overflow用户
提问于 2008-11-01 07:25:32
回答 9查看 30.9K关注 0票数 65

我正在开发一个旨在简化公司工作流程和项目管理的PHP应用程序,比如BasecampGoPlan

我不确定数据库方面最好的方法是什么。我应该使用单个数据库并将特定于客户端的列添加到每个表中,还是应该为每个新客户端创建一个数据库?一个重要的因素是自动化:我希望创建一个新的客户端非常简单(也许还可以自己注册)。

我能想到的使用一个数据库的可能的缺点:

  • 缺少extensibility
  • Security问题(尽管bug本来就不应该存在)

你对此有何看法?您是否知道上述公司最有可能选择的解决方案是什么?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2008-11-01 08:21:14

我通常将ClientID添加到所有表中,并使用一个数据库。但是,由于数据库通常很难扩展,我还将使其能够在某些或所有客户端的不同数据库实例上运行。

这样,您就可以在一个数据库中拥有一堆小客户端,而将大客户端放在不同的服务器上。

不过,可维护性的一个关键因素是在所有数据库中保持模式相同。在不引入特定于客户端的模式的情况下管理版本控制将非常麻烦。

票数 37
EN

Stack Overflow用户

发布于 2008-11-01 16:19:49

收听Stackoverflow播客,其中Joel和Jeff谈到了同样的问题。Joel谈到了他们提供软件托管版本的经验。他指出,在整个数据库中添加客户机it会使设计和代码变得复杂(您确定没有意外地忘记将其添加到某些WHERE子句中吗?)并使托管功能复杂化,例如特定于客户端的备份。

那是在第20集或第21集(详情请查看文字记录)。

票数 36
EN

Stack Overflow用户

发布于 2008-11-01 15:58:39

在我看来,这将取决于你可能的客户基础。如果您可能遇到一个主要竞争对手都在使用您的系统的情况,那么您最好使用单独的数据库。它还取决于DBMS如何实现多个数据库。如果每个数据库都有一个单独的基础结构副本,则建议使用单个数据库(或更改DBMS)。如果基础设施的单个副本可以为多个数据库提供服务,那么我会选择独立的数据库。

考虑一下数据库备份。客户A说“请给我寄一份我的数据”。与共享单个数据库相比,在单独的数据库设置中要容易得多。考虑删除一个客户;同样,使用单独的数据库要容易得多。

(例如,“基础设施”部分是含糊其辞的,因为不同的DBMS之间在构成“数据库”和“服务器实例”方面存在重大差异。添加:问题被标记为'mysql',所以这些想法可能并不完全相关。)

Add:还有一个问题--在单个数据库中有多个客户的情况下,每个SQL查询都需要确保为正确的客户选择数据。这意味着SQL将更难写入和读取,DBMS将不得不更加努力地处理数据,索引将变得更大,而且...我真的会为每个客户提供一个单独的数据库,用于许多目的。

显然,StackOverflow (举个例子)对每个用户没有单独的数据库;我们都使用相同的数据库。但是,如果你为不同的公司运行会计系统,我认为共享数据库是不可接受的(对公司来说,也可能不是对法人)。

票数 24
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/255616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档