在mongodb中分片是指在多臺(tái)計(jì)算機(jī)之間存儲(chǔ)數(shù)據(jù)記錄的過(guò)程,它能夠?qū)?shù)據(jù)水平切分到不同的物理節(jié)點(diǎn),當(dāng)應(yīng)用數(shù)據(jù)越來(lái)越大的時(shí)候,數(shù)據(jù)量也會(huì)越來(lái)越大。它是一種mongodb方法,可以滿(mǎn)足數(shù)據(jù)增長(zhǎng)的需求。它在數(shù)據(jù)庫(kù)或搜索引擎中創(chuàng)建數(shù)據(jù)的水平分區(qū),每個(gè)分區(qū)稱(chēng)為分片或數(shù)據(jù)庫(kù)分片。
具體內(nèi)容如下:
在Mongodb里面存在另一種集群,就是分片技術(shù),可以滿(mǎn)足MongoDB數(shù)據(jù)量大量增長(zhǎng)的需求。
當(dāng)MongoDB存儲(chǔ)海量的數(shù)據(jù)時(shí),一臺(tái)機(jī)器可能不足以存儲(chǔ)數(shù)據(jù),也可能不足以提供可接受的讀寫(xiě)吞吐量。這時(shí),我們就可以通過(guò)在多臺(tái)機(jī)器上分割數(shù)據(jù),使得數(shù)據(jù)庫(kù)系統(tǒng)能存儲(chǔ)和處理更多的數(shù)據(jù)。
為什么使用分片
復(fù)制所有的寫(xiě)入操作到主節(jié)點(diǎn)
延遲的敏感數(shù)據(jù)會(huì)在主節(jié)點(diǎn)查詢(xún)
單個(gè)副本集限制在12個(gè)節(jié)點(diǎn)
當(dāng)請(qǐng)求量巨大時(shí)會(huì)出現(xiàn)內(nèi)存不足。
本地磁盤(pán)不足
垂直擴(kuò)展價(jià)格昂貴
MongoDB分片
下圖展示了在MongoDB中使用分片集群結(jié)構(gòu)分布:
上圖中主要有如下所述三個(gè)主要組件:
Shard:
用于存儲(chǔ)實(shí)際的數(shù)據(jù)塊,實(shí)際生產(chǎn)環(huán)境中一個(gè)shard server角色可由幾臺(tái)機(jī)器組個(gè)一個(gè)replica set承擔(dān),防止主機(jī)單點(diǎn)故障
Config Server:
mongod實(shí)例,存儲(chǔ)了整個(gè) ClusterMetadata,其中包括 chunk信息。
Query Routers:
前端路由,客戶(hù)端由此接入,且讓整個(gè)集群看上去像單一數(shù)據(jù)庫(kù),前端應(yīng)用可以透明使用。