mongodb分佈式查詢

分佈式查詢:mongodb的分佈式模型分爲replica set和sharded cluster。mongodb

sharded集羣中將read根據sharding key(分片鍵)轉發到指定的shard節點,read操做很是高效;固然若是query中沒有包含sharding key,那麼這次read將會被轉發到全部的shard節點上,並有mongos server負責merge結果(包括排序),因此這種狀況性能較差(俗稱scatter、gather),對於大型集羣,這種查詢一般是不可行的。

對於replica set而言,只是涉及到將read操做路由到哪一個secondary上,默認狀況下,read請求老是在primary上發生,咱們能夠經過指定「read preference mode」來調整這一行爲。網絡

Java代碼分佈式

collection.withReadPreference(ReadPreference.secondaryPreferred()).find(); 

上述代碼表示儘量從 secondary上讀取,若是全部的secondary都失效則從primary上讀取。能夠實現「讀寫分離」。性能

目前支持的read模式:
1)primary:讀操做只發生在primary上,默認的read模式。若是primary失效,則返回error。
2)primaryPreferred:讀操做發生在primary上,若是primary失效,則由secondary接收read請求。這是一種比較良好的模式,
3)secondary:讀操做只發生在secondary上,若是所欲哦的secondary都失效,則返回error。
4)secondaryPreferred:讀操做一般發生在secondary上,若是全部的secondary都失效,則由primary接收read請求。
5)nearest:讀取「最近」的節點,mongodb客戶端將評估與每一個節點的網絡延遲,有限選擇延遲最小的節點,primary和secondary都有可能接收到read請求(不一樣的Client或許延遲不一樣)。rest

相關文章
相關標籤/搜索