2014-01-07 54 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