我已经对这个问题进行了一些研究(通过谷歌和这里),但没有发现任何我认为符合我的情况的问题。
我有一个项目,目前有一个帐户 - 一个环境模型,并且正在寻求扩展到一个帐户 - 许多环境。环境将是相同的(至少就表结构而言)并且将需要大约100个表。我在两种可能的方法之间徘徊:
这两种方法都有显着的性能提升/担忧吗?数据(至少现在)都驻留在同一物理服务器上。查询应该只需要访问单个环境(非常罕见的情况除外) - 当然还有主要帐户记录。
答案 0 :(得分:3)
我认为只管理一个数据库会更简单。这使得开发和配置比让许多数据库担心正确配置更容易。
在性能方面,您可以让DBMS处理群集/分发的内容,因此您不必担心它。自己拆分数据通常不会让事情变得更快,因为DBMS可以(通常)做得更好,然后就可以了。
答案 1 :(得分:3)
我们有多个数据库工作正在运行 - 以及不同的数据库供应商(DB2,Oracle,MySQL。)巨大的PITA,尽管其中一些痛苦可能来自每个数据库归不同组所有。但是如果您需要在数据库(而不是应用程序)中加入数据(您认为情况现在很少见,但等等......),您会对多服务器解决方案感到遗憾。
答案 2 :(得分:3)
有趣的问题。 作为标准答案,我建议让一个实例运行所有帐户。即前缀解决方案。这是主机提供商全面使用的方法。
让一个RDBMS运行show似乎是有意义的。更容易进行备份和其他系统范围的任务。我建议在性能方面,运行一个实例比为每个帐户运行一个单独的进程要高效得多。
如果您需要启用负载平衡'前缀'模型也更容易扩展,因为大多数现代RDBMS都有插件/功能来支持这种类型的功能,而不必为每个帐户的每个实例设置多次。
现代数据库系统很容易每秒处理数千个请求,通过查找花哨的自定义(前缀)表名,它们不会有任何性能损失。 只要您能够提出一种简单的层次结构(帐户前缀)方式来分离帐户,您就不会遇到运行数千个表的问题。
唯一潜在的缺点是安全性。在大多数情况下,即使有多台服务器也无法解决您的安全问题。
答案 3 :(得分:0)
我想说使用许多数据库来允许将来修改各种环境。你是在谈论所有网站都会使用的静态数据,这是值得怀疑的,每个网站都应该拥有自己的数据集......
如果没有其他原因,(正如我之前所说)允许修改。
答案 4 :(得分:0)