分片集合中mongodb中的聚合管道

时间:2016-11-24 05:42:55

标签: mongodb mongodb-query

只是提到Mongodb聚合链接https://docs.mongodb.com/v3.2/aggregation/#aggregation-pipeline,它就提到了

 "The aggregation pipeline can operate on a sharded collection."

enter image description here

请知道如果数据库是分片的,那么数据库中的所有集合都将被分片。另请确认,如果分片聚合查询将在许多服务器中运行,并快速交付结果。如果是这样,聚合查询的功能如何。

此致

克里斯

2 个答案:

答案 0 :(得分:1)

聚合管道支持对分片集合的操作。

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

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

将聚合管道分成两部分时,管道将被拆分以确保分片在考虑优化的情况下执行尽可能多的阶段。

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

答案 1 :(得分:1)

分片群集始终具有主分片和一个或多个辅助分片。

  

请知道如果数据库是分片的,那么所有的集合   数据库将被分片

不,默认情况下,您的所有馆藏都不会被分片。所有这些集合都完全保留在主要碎片上。要对集合进行分片,请使用shardCollection命令

  

另请确认,如果分片,将运行聚合查询   许多服务器,并快速交付结果。

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

  

如果是这样,聚合查询的功能如何。

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