我正在使用的系统需要多个组织的多个数据库。单个 Node Js 服务器连接到这些数据库。挑战是我可能有 5000 个组织。
我想知道在单个 mongodb 集群中创建数据库是否有限制?
如果是的话,允许的最大数据库数量是多少?
如果集群可以处理我添加的数据库数量,那么这种设计的可扩展性是否存在问题?
假设我有 5000 个数据库,每个数据库有 50 个集合,集群可以有效地处理此设置吗?甚至可能吗?
我浏览了一些 mongodb 文档,并试图找到 mongodb 不同功能的限制,遗憾的是我没有找到有关此主题的足够信息。
最佳答案
Mongo 对数据库数量(或数据库内的集合数量)没有限制。
当命名空间(每个集合和索引)的数量过高时( bug report ),Mongo 4.2 之前的版本会对性能产生重大影响。造成这种情况的原因是需要一个全局锁,该锁可以在检查点期间根据命名空间的数量进行扩展。
尽管这个重大的性能错误已经得到解决 - 我仍然担心单个集群中存在大量数据库。
值得考虑的第二件事是这些组织的繁忙程度 - 如果您需要购买 X power 集群来支持 5000 个数据库,请考虑购买两个 X/2 power 集群并在它们之间拆分您的数据库(或 X/N - N 越高越好)。这也为您提供了一定的弹性 - 如果单个数据库集群出现问题,并非所有数据库都会受到影响。
最后,我强烈考虑使用单个数据库并在应用程序层处理您的“组织” - 这就是 mongo 被设计为运行和执行得非常好的方式(如果您设置了正确的索引)。如果您需要多个集群来提高读/写性能,您可以考虑分片 - 它在单个数据库模型中效果最好(它在多数据库模型中确实没有任何意义)
关于node.js - 单个 mongodb 集群中允许有多少个数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74987609/