首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我应该为50个集合部署Mongodb分块吗?

我应该为50个集合部署Mongodb分块吗?
EN

Database Administration用户
提问于 2013-07-07 13:17:38
回答 1查看 1.1K关注 0票数 4

我有一个10个节点集群,运行大约50个并发作业。每个作业都需要读/写一个单独的集合。所以我大概有50个收藏品。每个藏品都有大约20M个记录。大多数情况下,作业只需要进行顺序读写。

为了简单起见,我可以部署一个没有复制、没有切分的mongodb实例。有50个单独的收藏品。但是运行mogodb的单个节点成为热点,其余9个节点无法共享读/写负载。

所以我想利用资源平衡负载。但我想20米的唱片收藏不值得分享?特别是我只需要按顺序读写。我想把50个收藏品合并成一个大收藏。但我无意中发现了文档大小的限制,即16 MB。

有什么建议吗?谢谢,

EN

回答 1

Database Administration用户

回答已采纳

发布于 2013-07-08 08:00:48

您可以使用切分群集在可用主机之间更均匀地分配集合。一般情况下,我建议不要超过5个碎片(至少有2个数据承载节点用于冗余,再加上一个中断关系的仲裁器)。

一旦你有了你的5个碎片(或者不管你有多少碎片),你就可以用贴标将集合“钉”到一个特定的碎片上。我可以详细解释这个过程,但像往常一样,克里斯蒂娜·乔多罗比我早:

http://www.kchodorow.com/blog/2012/07/25/controlling-collection-distribution/

虽然它不是必需的,而且如果您愿意的话也可以有一个数据库,但我建议您拥有一个以上的数据库,以便尽可能多地受益。锁定在数据库级别,因此,如果在同一数据库中的碎片上有多个集合,并发写入仍然是竞争的。

事实上,有一个比标记更简单的解决方案(尽管标记是最可伸缩的解决方案)。如果为所有集合(或至少一个子集)创建单独的数据库,则可以让每个数据库驻留在不同的碎片上,而根本不分割集合。

解释:如果不启用切分集合,则给定数据库的所有数据都将驻留在该数据库的“初级”碎片上(主碎片以循环方式指定)。因此,如果您在一个5碎片集群(例如)上创建了5个数据库,那么每个数据库的主服务器都将有一个不同的碎片,并且通过使用不同的数据库,您将获得一个粗略(但有效)的负载分布。我在先前的回答中添加了有关这方面的更多细节。

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

https://dba.stackexchange.com/questions/45852

复制
相关文章

相似问题

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