我想学习MongoDB查询到MongoDB Sharded Cluster的整个路径,然后返回结果。它是从mongos传递到配置服务器然后传递给其中一个分片,然后它返回到配置并返回到客户端驱动程序或其他?
谢谢!
答案 0 :(得分:5)
查询从您的应用程序发送到本地或远程mongos
实例,与其名称(Mongo Shard)相反,实际上是路由器。
如果您的查询包含分片键,则mongos
路由器将使用来自配置服务器的缓存数据来确定要查询的分片。
如果您的查询不包含分片键,那么MongoDB将执行分散和收集操作,基本上将所有分片的结果都询问某个查询。
在这两种情况下,mongos
会将查询并行化为多个分片,然后返回最终结果。
每次在光标上运行getMore()
以获得另一批结果时,它必须重做查询,即使它是分散和收集操作。
答案 1 :(得分:3)
查询从客户端到mongos到分片的复制集中的正确数据节点。只有mongos才能查询配置服务器,以了解数据存在于哪个分片上,并且此配置数据通常由mongos缓存。您的查询和结果不会通过配置服务器,只通过mongos,当然还有运行查询的数据节点并返回结果。