2016-11-24 127 views

回答

1

分片簇总是有一个主碎片,和一个或多个次级碎片。

请让我再知道如果数据库是分片则在 该数据库将分片

不,你收藏的默认没有将分片的所有集合。所有这些藏品完全停留在主要碎片上。要分片收集,使用shardCollection命令

还请确认是否分片聚集查询将在 多台服务器上运行,并交付结果快。

在分片环境中定义集合时的一件重要事情是shard key。你应该确保选择一个好的分片密钥,它负责分布整个分片的数据。因此,如果你选择一个好的分片密钥,你可以期望比非分片环境更好的性能。

如果是的话聚合查询如何运作。

聚合查询被$match拆分为不同的分片,具体取决于文档存在的位置,并最终在分片上合并在一起。一个好的阅读是https://docs.mongodb.com/v3.2/core/aggregation-pipeline-sharded-collections/

+0

谢谢@hyades,请澄清一下,在不同的分片上分片和运行查询是什么意思在mongodb中。问候,克里斯 – chiku

1

聚集管线支持在分片集合操作。

如果流水线在分片键上以精确的$匹配开始,则整个流水线仅在匹配的分片上运行。以前(版本3.2之前),管道将被拆分成两部分,合并工作必须在主碎片上完成。

对于必须在多个分片上运行的聚合操作,如果操作不需要在数据库的主分片上运行,这些操作会将结果路由到随机分片以合并结果以避免主分片过载为那个数据库。 $ out阶段和$ lookup阶段需要在数据库的主碎片上运行。

将聚合管道拆分为两部分时,管道将被拆分以确保分片尽可能多地执行多个阶段并考虑优化。

参考: https://docs.mongodb.com/manual/core/aggregation-pipeline-sharded-collections/

+0

非常感谢@Clement – chiku