阅读MongoDB文档中的索引,我发现在http://docs.mongodb.org/manual/applications/indexes/#ensure-indexes-fit-ram
上的这个断言让我感到有些神秘和不安。如果您拥有并使用多个集合,则必须考虑大小 所有集合中的所有索引。索引和工作集 必须能够同时适应RAM。
那么,当添加分片中的新节点时,这应该如何扩展?假设我的所有576节点都以8Gb为界,我有12个4Gb集合(包括它们的相关索引)和3个16Gb集合(包括索引)。分片如何在节点之间传播,以便可以有效地查询12个集合?
答案 0 :(得分:2)
分片时,您将数据分布在不同的分片上。 mongos进程将查询路由到从中获取数据所需的分片。因此,您只需要查看分片所持有的数据。引用When to Use Sharding:
如果出现以下情况,您应该考虑部署分片群集:
- 您的数据集接近或超过系统中单个节点的存储容量。
- 系统的有效工作集大小将很快超过系统最大RAM容量。
还要注意工作集!=整个集合。工作集定义为:
MongoDB定期使用的数据集合。该数据通常(或优选地)保存在RAM中。
E.g。你有1TB的数据,但通常只使用/查询50GB。该子集最好保存在RAM中。