鍍金池/ 教程/ 數(shù)據(jù)庫/ MongoDB分片
MongoDB教程
MongoDB覆蓋查詢
MongoDB數(shù)據(jù)建模
MongoDB聚合
MongoDB更改用戶密碼和自定義數(shù)據(jù)
MongoDB用戶
MongoDB分片
MongoDB創(chuàng)建集合
MongoDB文本搜索
MongoDB數(shù)據(jù)類型
MongoDB GridFS
MongoDB索引限制
MongoDB插入文檔
MongoDB刪除集合
MongoDB數(shù)據(jù)庫引用
MongoDB復(fù)制
MongoDB Map Reduce
Python連接MongoDB操作
MongoDB原子操作
MongoDB特點(diǎn)
MongoDB安全檢查表
MongoDB排序記錄
MongoDB自動遞增序列
MongoDB安裝配置(Windows)
MongoDB備份與恢復(fù)
MongoDB安裝配置(Ubuntu)
Ruby連接MongoDB操作
MongoDB部署
MongoDB索引
MongoDB分析查詢
MongoDB投影(選擇字段)
MongoDB刪除數(shù)據(jù)庫
MongoDB認(rèn)證
MongoDB限制記錄數(shù)
MongoDB添加用戶
MongoDB固定循環(huán)集合
MongoDB高級索引
MongoDB數(shù)據(jù)庫的優(yōu)點(diǎn)
MongoDB快速入門
MongoDB創(chuàng)建數(shù)據(jù)庫
MongoDB啟用身份驗(yàn)證
MongoDB歷史
MongoDB管理用戶和角色
MongoDB安裝配置(RedHat/CentOS)
MongoDB刪除文檔
Java連接MongoDB操作
MongoDB正則表達(dá)式
MongoDB查詢文檔
MongoDB關(guān)聯(lián)關(guān)系
PHP連接MongoDB操作
MongoDB更新文檔
MongoDB ObjectId

MongoDB分片

分片是在多臺機(jī)器之間存儲數(shù)據(jù)記錄的過程,MongoDB是滿足數(shù)據(jù)增長需求的方法。 隨著數(shù)據(jù)的大小增加,單個(gè)機(jī)器可能不足以存儲所有數(shù)據(jù),也不能提供可接受的讀寫吞吐量。 分片解決了水平縮放的問題。 使用分片,可以添加更多的機(jī)器來支持?jǐn)?shù)據(jù)增長和讀寫操作的需求。

為什么要分片?

  • 在復(fù)制中,所有寫入都轉(zhuǎn)到主節(jié)點(diǎn)
  • 延遲敏感查詢到主節(jié)點(diǎn)
  • 單個(gè)副本集合有12個(gè)節(jié)點(diǎn)的限制
  • 當(dāng)活動數(shù)據(jù)集較大時(shí),內(nèi)存不足夠大
  • 本地磁盤不夠大
  • 垂直擴(kuò)縮太昂貴了

MongoDB中的分片

下圖顯示了使用分片集群的 MongoDB 分片。

在上圖中,有三個(gè)主要組件 -

  • 碎片(Shards) - 碎片用于存儲數(shù)據(jù)。它們提供高可用性和數(shù)據(jù)一致性。 在生產(chǎn)環(huán)境中,每個(gè)分片是一個(gè)單獨(dú)的副本集。

  • 配置服務(wù)器(Config Servers) - 配置服務(wù)器存儲集群的元數(shù)據(jù)。 該數(shù)據(jù)包含集群的數(shù)據(jù)集與分片的映射。查詢路由器使用此元數(shù)據(jù)將操作定位到特定的分片。 在生產(chǎn)環(huán)境中,分片集群正好有3個(gè)配置服務(wù)器。

  • 查詢路由器(Query Routers) - 查詢路由器基本上是 mongo 實(shí)例,與客戶端應(yīng)用程序的接口和直接操作到適當(dāng)?shù)姆制?查詢路由器處理并將操作定向到碎片,然后將結(jié)果返回給客戶端。 分片集群可以包含多個(gè)查詢路由器來分割客戶端請求負(fù)載。 客戶端向一個(gè)查詢路由器發(fā)送請求。 一般來說,分片集群有許多查詢路由器。