共計(jì) 1471 個(gè)字符,預(yù)計(jì)需要花費(fèi) 4 分鐘才能閱讀完成。
這篇文章主要為大家展示了“mongodb 分片技術(shù)的示例分析”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓丸趣 TV 小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“mongodb 分片技術(shù)的示例分析”這篇文章吧。
在 mongodb 里面存在另一種集群,就是分片技術(shù),當(dāng)數(shù)據(jù)量達(dá)到 T 級(jí)別的時(shí)候,我們的磁盤,內(nèi)存就吃不消了,針對(duì)這樣的場(chǎng)景我們?cè)撊绾螒?yīng)對(duì)。
一:分片
mongodb 采用將集合進(jìn)行拆分,然后將拆分的數(shù)據(jù)均攤到幾個(gè)片上的一種解決方案。
下面我對(duì)這張圖解釋一下:
人臉:代表客戶端,客戶端肯定說(shuō),你數(shù)據(jù)庫(kù)分片不分片跟我沒(méi)關(guān)系,我叫你干啥就干啥,沒(méi)什么好商量的。
mongos: 首先我們要了解”片鍵“的概念,也就是說(shuō)拆分集合的依據(jù)是什么?按照什么鍵值進(jìn)行拆分集合 ….
好了,mongos 就是一個(gè)路由服務(wù)器,它會(huì)根據(jù)管理員設(shè)置的“片鍵”將數(shù)據(jù)分?jǐn)偟阶约汗芾淼?mongod 集群,數(shù)據(jù)
分片的對(duì)應(yīng)關(guān)系以及相應(yīng)的配置信息保存在 config 服務(wù)器 上。
mongod: 一個(gè)普通的數(shù)據(jù)庫(kù)實(shí)例,如果不分片的話,我們會(huì)直接連上 mongod。
二: 實(shí)戰(zhàn)
首先我們準(zhǔn)備 4 個(gè) mongodb 程序,我這里是均攤在 C,D,E,F(xiàn) 盤上,當(dāng)然你也可以做多個(gè)文件夾的形式。
1:開(kāi)啟 config 服務(wù)器
先前也說(shuō)了,mongos 要把 mongod 之間的配置放到 config 服務(wù)器里面,理所當(dāng)然首先開(kāi)啟它,我這里就建立 2222 端口。
2: 開(kāi)啟 mongos 服務(wù)器
這里要注意的是我們開(kāi)啟的是 mongos,不是 mongod,同時(shí)指定下 config 服務(wù)器,這里我就開(kāi)啟 D 盤上的 mongodb,端口 3333。
3:?jiǎn)?dòng) mongod 服務(wù)器
對(duì)分片來(lái)說(shuō),也就是要添加片了,這里開(kāi)啟 E,F(xiàn) 盤的 mongodb,端口為:4444,5555。
4: 服務(wù)配置
哈哈,是不是很興奮,還差最后一點(diǎn)配置我們就可以大功告成。
1 先前圖中也可以看到,我們 client 直接跟 mongos 打交道,也就說(shuō)明我們要連接 mongos 服務(wù)器,然后將 4444,5555 的 mongod
交給 mongos, 添加分片也就是 addshard()。
這里要注意的是,在 addshard 中,我們也可以添加副本集,這樣能達(dá)到更高的穩(wěn)定性。
2 片已經(jīng)集群了,但是 mongos 不知道該如何切分?jǐn)?shù)據(jù),也就是我們先前所說(shuō)的片鍵,在 mongodb 中設(shè)置片鍵要做兩步
①:開(kāi)啟數(shù)據(jù)庫(kù)分片功能,命令很簡(jiǎn)單 enablesharding(), 這里我就開(kāi)啟 test 數(shù)據(jù)庫(kù)。
②:指定集合中分片的片鍵,這里我就指定為 person.name 字段。
5: 查看效果
好了,至此我們的分片操作全部結(jié)束,接下來(lái)我們通過(guò) mongos 向 mongodb 插入 10w 記錄,然后通過(guò) printShardingStatus 命令
查看 mongodb 的數(shù)據(jù)分片情況。
這里主要看三點(diǎn)信息:
① shards: 我們清楚的看到已經(jīng)別分為兩個(gè)片了,shard0000 和 shard0001。
② databases: 這里有個(gè) partitioned 字段表示是否分區(qū),這里清楚的看到 test 已經(jīng)分區(qū)。
③ chunks: 這個(gè)很有意思,我們發(fā)現(xiàn)集合被砍成四段:
無(wú)窮小 —— jack0,jack0 ——jack234813,jack234813——jack9999,jack9999——無(wú)窮大。
分區(qū)情況為:3:1,從后面的 on shardXXXX 也能看得出。
以上是“mongodb 分片技術(shù)的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道!