MongoDB分片群集路由

时间:2014-01-07 13:14:54

标签: mongodb

我想学习MongoDB查询到MongoDB Sharded Cluster的整个路径,然后返回结果。它是从mongos传递到配置服务器然后传递给其中一个分片,然后它返回到配置并返回到客户端驱动程序或其他?

谢谢!

2 个答案:

答案 0 :(得分:5)

查询从您的应用程序发送到本地或远程mongos实例,与其名称(Mongo Shard)相反,实际上是路由器。

如果您的查询包含分片键,则mongos路由器将使用来自配置服务器的缓存数据来确定要查询的分片。

如果您的查询不包含分片键,那么MongoDB将执行分散和收集操作,基本上将所有分片的结果都询问某个查询。

在这两种情况下,mongos会将查询并行化为多个分片,然后返回最终结果。

每次在光标上运行getMore()以获得另一批结果时,它必须重做查询,即使它是分散和收集操作。

答案 1 :(得分:3)

查询从客户端到mongos到分片的复制集中的正确数据节点。只有mongos才能查询配置服务器,以了解数据存在于哪个分片上,并且此配置数据通常由mongos缓存。您的查询和结果不会通过配置服务器,只通过mongos,当然还有运行查询的数据节点并返回结果。