2015-09-09 39 views
0

我創建了一個測試MongoDB分片,其中包含1個配置服務器,1個路由器和2個分片。如何從不同的分片和相同的集合獲得結果

我創建一個配置服務器 mongod --configsvr --dbpath /data/configdb --port 27019

我跑mongosmongos --configdb <CONFIG SERVER IP>:27019。我連接了碎片,數據庫和集合。當我查詢分片集合時,遊標不會從兩個分片中得到結果,它只會得到1個分片的結果。根據MongoDB Sharding Document,我可以將一個集合分發給不同的分片,但結果不能滿足這些信息。

我在做什麼錯?從相同查詢的不同分片獲得結果的正確方法是什麼?

+1

這完全是關於你選擇分片鍵和你的目標是什麼。如果你真的「想」分散所有分片的寫入和讀取,那麼選擇的分片鍵應該反映這一點。爲了實現均勻分佈,請考慮一個[散列分片鍵](http://docs.mongodb.org/master/tutorial/shard-collection-with-a-hashed-shard-key/)。 –

回答

1

正確的方法是確保您不必經常交叉分片。您選擇了一個分片鍵,以便您的查詢不會最終通過分片。例如用戶數據庫可以具有用戶ID /名稱作爲分片鍵。大多數查詢都在尋找單個用戶,所以會從單個分片返回。

對於單獨使用1個分片的結果無法滿足的查詢,Mongo會自動向所有分片請求數據。

相關問題