2014-01-07 55 views
1

我想了解MongoDB查询的整个路由到MongoDB Sharded集群,并返回结果。它是否从mongos传递到配置服务器,然后传递到其中一个碎片,然后它返回到配置并返回到客户端驱动程序或以其他方式?MongoDB Shard集群路由

谢谢!

+0

我非常确定这是在分片下的文档 – Sammaye

回答

5

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

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

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

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

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

3

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

+0

你可以更详细的“详细”?谢谢! – MariusP

+0

这里没什么可说的 - 你期待什么? – Derick