2016-12-05 30 views
1

目前我正在探索Sharding是如何在Mongo DB中工作的。數據庫在MongoDB中分片?

我的使用案例是我的網絡應用程序中有許多產品,如電子產品/嬰兒刺繡品/書籍/衣服等。假設我想在不同的數據庫上存儲不同的產品(在不同的機器上)以分配負載並在需要時擴展。

我的問題是Mongo DB有責任根據產品類型將產品存儲在正確的數據庫中,而我的web服務器java代碼將完全不知道它? Mongo DB是否支持這個?

或者它將是連接到正確的數據庫以存儲 基於它的類型的產品的Web服務器Java代碼的責任?

回答

0

是的,MongoDB支持你描述的內容。 Sharding in MongoDB是MongoDB如何允許縮放/水平縮放。它需要一個分片密鑰,它用於決定分片集合中的文檔(您的案例中的產品)將以哪個分片結束。這聽起來像你想使用產品類型作爲分片鍵。 MongoDB負責根據分片鍵將文檔導向分片。通過參考鏈接的網頁,您的Web服務器將連接並向mongos查詢路由器實例發送查詢,這將根據分片鍵將查詢恰當地路由到分片。

儘管如此,選擇分片鍵不應該被忽略。如果選擇得不好,幾乎所有的查詢都可能會導致一個碎片。瞭解分片關鍵因素(如基數,頻率和變化率)如何影響分片性能here

1

你的Java應用程序連接到mongosmongos代表整個DB不管有多少mongod你跑! mongos處理與正確的mongod服務器的連接並運行您的查詢。所以基本上你的Java應用程序將MongoDB視爲一個黑盒子。

P.s:您可以運行多個mongos,在您的local DNS provider中爲它們分配一個域名,它將負責平衡mongos的負載。您的Java應用程序行爲在這種情況下也是一樣的。