mongodb指数和缩放

时间:2013-01-07 05:21:32

标签: mongodb sharding distributed-database

阅读MongoDB文档中的索引,我发现在http://docs.mongodb.org/manual/applications/indexes/#ensure-indexes-fit-ram

上的这个断言让我感到有些神秘和不安。
  

如果您拥有并使用多个集合,则必须考虑大小   所有集合中的所有索引。索引和工作集   必须能够同时适应RAM。

那么,当添加分片中的新节点时,这应该如何扩展?假设我的所有576节点都以8Gb为界,我有12个4Gb集合(包括它们的相关索引)和3个16Gb集合(包括索引)。分片如何在节点之间传播,以便可以有效地查询12个集合?

1 个答案:

答案 0 :(得分:2)

分片时,您将数据分布在不同的分片上。 mongos进程将查询路由到从中获取数据所需的分片。因此,您只需要查看分片所持有的数据。引用When to Use Sharding

  

如果出现以下情况,您应该考虑部署分片群集:

     
      
  • 您的数据集接近或超过系统中单个节点的存储容量。
  •   
  • 系统的有效工作集大小将很快超过系统最大RAM容量。
  •   

还要注意工作集!=整个集合。工作集定义为:

  

MongoDB定期使用的数据集合。该数据通常(或优选地)保存在RAM中。

E.g。你有1TB的数据,但通常只使用/查询50GB。该子集最好保存在RAM中。