亚洲精品久久久久久第一页-人妻少妇精彩视品一区二区三区-91国产自拍免费视频-免费一级a在线播放视频正片-少妇天天日天天射天天爽-国产大屁股喷水视频在线观看-操美女骚穴抽插性爱视频-亚洲 欧美 中文字幕 丝袜-成人免费无码片在线观看

mongodb是nosql數(shù)據(jù)庫嗎 13 NoSQL | MongoDB入門實戰(zhàn)教程


mongodb是nosql數(shù)據(jù)庫嗎 13 NoSQL | MongoDB入門實戰(zhàn)教程

文章插圖
| 總結(jié)/Edison Zhou
MongoDB的一大特色就在于其原生的橫向擴展能力,具體體現(xiàn)就是分片集 。本篇,我們來了解一下MongoDB分片集的機制及其原理 。
1 為什么要分片?
我們都知道,在關(guān)系型數(shù)據(jù)庫如MySQL中,當數(shù)據(jù)量過大造成事務(wù)執(zhí)行緩慢的時候,減少每次查詢數(shù)據(jù)總量是解決之道 。因為,數(shù)據(jù)量一旦過大,索引也會相應(yīng)增大,這時對索引的維護成本也會增加,進而降低事務(wù)執(zhí)行性能 。這時,我們的總體解決思路一般都是 分表 。
在MongoDB中,當數(shù)據(jù)容量日益增大訪問性能日漸降低時,單庫已有巨大數(shù)據(jù)量如10TB時,我們的解決思路其實也是 分表,只不過在MongoDB中,這叫 分片集 。
分片集是MongoDB提供的一個原生的橫向擴展能力,無需引入其他的中間件就可以輕松實現(xiàn) 。
未分片:
mongodb是nosql數(shù)據(jù)庫嗎 13 NoSQL | MongoDB入門實戰(zhàn)教程

文章插圖
兩個分片集:
mongodb是nosql數(shù)據(jù)庫嗎 13 NoSQL | MongoDB入門實戰(zhàn)教程

文章插圖
當使用分片之后,單個分片集的數(shù)據(jù)量就有了限制,從而保證了查詢的性能 。更為重要的是,增加一個分片,使用的時間可控,這就為橫向擴展提供了良好的基礎(chǔ) 。
2 引入分片集的部署架構(gòu)
首先,我們來看看MongoDB常見部署的架構(gòu),如下圖所示:
mongodb是nosql數(shù)據(jù)庫嗎 13 NoSQL | MongoDB入門實戰(zhàn)教程

文章插圖
可以看到,MongoDB可以單機運行、可以復(fù)制集運行 也可以 分片集群運行 。復(fù)制集可以保證數(shù)據(jù)的高可用,而分片集群則可以保證橫向擴展性 。
其次,我們來看看一個完整分片集群到底長什么樣,它如下圖所示:
mongodb是nosql數(shù)據(jù)庫嗎 13 NoSQL | MongoDB入門實戰(zhàn)教程

文章插圖
從上圖所知,整個分片集群會包括如下幾個組成部分:
(1)mongos
mongos是路由節(jié)點,它承上啟下,作為mongodb集群的單一入口,它主要轉(zhuǎn)發(fā)應(yīng)用程序端的請求 并 選擇合適的數(shù)據(jù)節(jié)點進行讀寫,最后合并多個數(shù)據(jù)節(jié)點的返回 。mongos是無狀態(tài)的,一般建議至少部署兩個節(jié)點,推薦三個 。
(2)config
config是配置(目錄)節(jié)點,你可以理解為它存儲了如何分片的規(guī)則,這些規(guī)則就是元數(shù)據(jù),類似于下表所示的數(shù)據(jù):
mongodb是nosql數(shù)據(jù)庫嗎 13 NoSQL | MongoDB入門實戰(zhàn)教程

文章插圖
(3)replica set 復(fù)制集
復(fù)制集節(jié)點就是最終的數(shù)據(jù)存儲節(jié)點了,以復(fù)制集為單位,橫向擴展 。MongoDB允許最大有1024個分片,每個分片的數(shù)據(jù)不重復(fù),所有分片在一起才可以完整工作 。在實際應(yīng)用場景中,最佳實踐是每個分片的數(shù)據(jù)量盡量不超過3TB,盡可能保持在2TB內(nèi)一個分片,可以提供最佳的讀寫性能 。
這里再介紹一下,一個分片集群內(nèi)部到底包含哪些東西?
mongodb是nosql數(shù)據(jù)庫嗎 13 NoSQL | MongoDB入門實戰(zhàn)教程

文章插圖
一個集群(Cluster)包括多個分片(Shard),每個分片包含多個塊(Chunk),每個塊包含多個文檔(Document),每個文檔包含了一行含有片鍵(Shard Key)的數(shù)據(jù),而這個片鍵就是文檔中的一個用來進行分片的字段 。
最后,MongoDB分片集群到底有什么特點?
(1)對于應(yīng)用程序端,它完全透明,不需要額外的特殊處理,只需要對接mongos節(jié)點就行 。
(2)mongos對數(shù)據(jù)自動均衡,應(yīng)用程序端不需要像Memcached一樣做客戶端負載均衡 。
(3)分片集可以做到動態(tài)擴容,無須對已有MongoDB服務(wù)下線 。


以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請您及時就醫(yī)或請專業(yè)人士給予相關(guān)指導(dǎo)!

「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對您有所幫助: