MongoDB 分片
分片
分片存儲在多台機器上的數據記錄的過程,它是MongoDB的方法來滿足數據增長的需求。一台機器上的大小的數據的增加,可能並不足夠來存儲數據,也不能提供可接受的讀取和寫入通過。分片解決問題的水平縮放。通過分片,你添加更多的機器支持數據增長的讀取和寫入操作需求。
為什麼要分片?
-
複製所有寫轉到掌握節點
-
延時敏感的查詢還是到主節點
-
單副本集有12個節點的限製
-
內存不能足夠大,當活動數據集很大
-
本地磁盤不夠大
-
垂直縮放太貴
MongoDB分片
下麵給出的圖顯示了在MongoDB中使用分片分片集群。
在上麵給出的圖中,有三個主要組成部分,這說明如下:
-
碎片: 碎片被用來存儲數據。它們提供了高可用性和數據的一致性。在生產環境中,每個碎片是一個單獨的副本集。
-
配置服務器: 配置服務器集群的元數據存儲。該數據包含集群的數據碎片的映射。查詢路由器使用這個元數據,操作具體的碎片。在生產環境中,有整整3分片集群配置服務器。
-
查詢路由: 查詢路由基本上是Mongos實例,客戶端應用程序界麵和直接操作相應的碎片。查詢路由過程目標操作的碎片,然後將結果返回到客戶端。分片集群可以包含多個查詢路由來劃分客戶端請求負載。客戶端發送請求到一個查詢路由。一般分片集群有許多查詢路由。