MongoDB復(副)本集與分片:
每個復(副)本集中存儲的數據是相同的,相當於主備方式的數據冗餘,目的是爲了容災。
分片是爲了數據的拓展,按照片鍵進行結點劃分,數據根據片鍵存儲到對應的服務器上。
MongoDB部署方案
MongoDB的集羣部署方案中有三類角色:實際數據存儲結點、配置文件存儲結點和路由接入結點。
連接的客戶端直接與路由結點相連,從配置結點上查詢數據,根據查詢結果到實際的存儲結點上查詢和存儲數據。MongoDB的部署方案有單機部署、複本集(主備)部署、分片部署、複本集與分片混合部署。混合的部署方式如圖:
混合部署方式下向MongoDB寫數據的流程如圖:
混合部署方式下讀MongoDB裏的數據流程如圖:
對於複本集,又有主和從兩種角色,寫數據和讀數據也是不同,寫數據的過程是只寫到主結點中,由主結點以異步的方式同步到從結點中:
而讀數據則只要從任一結點中讀取,具體到哪個結點讀取是可以指定的:
對於MongoDB的分片,假設我們以某一索引鍵(ID)爲片鍵,ID的區間[0,50],劃分成5個chunk,分別存儲到3個片服務器中,如圖所示:
假如數據量很大,需要增加片服務器時可以只要移動chunk來均分數據即可。
配置結點:
存儲配置文件的服務器其實存儲的是片鍵與chunk以及chunk與server的映射關係,用上面的數據表示的配置結點存儲的數據模型如圖:
路由結點:
路由角色的結點在分片的情況下起到負載均衡的作用。
要想更加詳細地學習MongoDB請閱讀《MongoDB權威指南》《深入學習MongoDB》《MongoDB實戰》