node.js - 单个 mongodb 集群中允许有多少个数据库?

标签 node.js database mongodb document-database

我正在使用的系统需要多个组织的多个数据库。单个 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/

相关文章:

node.js - 24 小时后以 Express 方式删除上传的文件

javascript - 在 Angular 中从服务器下载文本/csv 内容作为文件

javascript - Node 异步控制流程

mysql - 在 MySQL 中创建外键时遇到问题

database - NodeJS 使用 knex 迭代速度太快

database - PostgreSQL : Merge 2 similar databases

MongoDb 管道聚合排序子子文件

javascript - 使用异步/等待不起作用

javascript - 一个查询即可找到具有一个引用的每个子项

ruby-on-rails - 如何使用 Grape 和 MongoDB 在 Ruby on Rails 中正确测试 'post'(创建)方法