下載吧 - 綠色安全的游戲和軟件下載中心

          軟件下載吧

          當(dāng)前位置:軟件下載吧 > 數(shù)據(jù)庫(kù) > DB2 > MongoDB分片詳解

          MongoDB分片詳解

          時(shí)間:2024-02-09 10:40作者:下載吧人氣:21

          分片是MongoDB的擴(kuò)展方式,通過(guò)分片能夠增加更多的機(jī)器來(lái)用對(duì)不斷增加的負(fù)載和數(shù)據(jù),還不影響應(yīng)用.

          1.分片簡(jiǎn)介

          分片是指將數(shù)據(jù)拆分,將其分散存在不同機(jī)器上的過(guò)程.有時(shí)也叫分區(qū).將數(shù)據(jù)分散在不同的機(jī)器上,不需要功能

          強(qiáng)大的大型計(jì)算機(jī)就可以存儲(chǔ)更多的數(shù)據(jù),處理更大的負(fù)載.

          使用幾乎所有數(shù)據(jù)庫(kù)軟件都能進(jìn)行手動(dòng)分片,應(yīng)用需要維護(hù)與若干不同數(shù)據(jù)庫(kù)服務(wù)器的連接,每個(gè)連接還是完全

          獨(dú)立的.應(yīng)用程序管理不同服務(wù)器上的不同數(shù)據(jù),存儲(chǔ)查村都需要在正確的服務(wù)器上進(jìn)行.這種方法可以很好的工作,但是也

          難以維護(hù),比如向集群添加節(jié)點(diǎn)或從集群刪除節(jié)點(diǎn)都很困難,調(diào)整數(shù)據(jù)分布和負(fù)載模式也不輕松.

          MongoDB支持自動(dòng)分片,可以擺脫手動(dòng)分片的管理.集群自動(dòng)切分?jǐn)?shù)據(jù),做負(fù)載均衡.

           2.MongoDB的自動(dòng)分片

          MongoDB分片的基本思想就是將集合切分成小塊.這些塊分散到若干片里面,每個(gè)片只負(fù)責(zé)總數(shù)據(jù)的一部分.應(yīng)用程序不必知道

          哪片對(duì)應(yīng)哪些數(shù)據(jù),甚至不需要知道數(shù)據(jù)已經(jīng)被拆分了,所以在分片之前要運(yùn)行一個(gè)路由進(jìn)程,進(jìn)程名mongos,這個(gè)路由器知道

          所有數(shù)據(jù)的存放位置,所以應(yīng)用可以連接它來(lái)正常發(fā)送請(qǐng)求.對(duì)應(yīng)用來(lái)說(shuō),它僅知道連接了一個(gè)普通的mongod.路由器知道和片的

          對(duì)應(yīng)關(guān)系,能夠轉(zhuǎn)發(fā)請(qǐng)求到正確的片上.如果請(qǐng)求有了回應(yīng),路由器將其收集起來(lái)回送給應(yīng)用.

          在沒(méi)有分片的時(shí)候,客戶端連接mongod進(jìn)程,分片時(shí)客戶端會(huì)連接mongos進(jìn)程.mongos對(duì)應(yīng)用隱藏了分片的細(xì)節(jié).

          從應(yīng)用的角度看,分片和不分片沒(méi)有區(qū)別.所以需要擴(kuò)展的時(shí)候,不必修改應(yīng)用程序的代碼.

          不分片的客戶端連接:

           MongoDB分片詳解

          分片的客戶端連接:

           MongoDB分片詳解

          什么時(shí)候需要分片:

          a.機(jī)器的磁盤(pán)不夠用了

          b.單個(gè)mongod已經(jīng)不能滿足些數(shù)據(jù)的性能需要了

          c.想將大量數(shù)據(jù)放在內(nèi)存中提高性能

          一般來(lái)說(shuō),先要從不分片開(kāi)始,然后在需要的時(shí)候?qū)⑵滢D(zhuǎn)換成分片.

          3.片鍵

          設(shè)置分片時(shí),需要從集合里面選一個(gè)鍵,用該鍵的值作為數(shù)據(jù)拆分的依據(jù).這個(gè)鍵成為片鍵.

          假設(shè)有個(gè)文檔集合表示的是人員,如果選擇名字”name”做為片鍵,第一篇可能會(huì)存放名字以A-F開(kāi)頭的文檔.

          第二片存G-P開(kāi)頭的文檔,第三篇存Q-Z的文檔.隨著增加或刪除片,MongoDB會(huì)重新平衡數(shù)據(jù),是每片的流量比較

          均衡,數(shù)據(jù)量也在合理范圍內(nèi)(如流量較大的片存放的數(shù)據(jù)或許會(huì)比流量下的片數(shù)據(jù)要少些)

           4.將已有的集合分片

          假設(shè)有個(gè)存儲(chǔ)日志的集合,現(xiàn)在要分片.我們開(kāi)啟分片功能,然后告訴MongoDB用”timestamp”作為片鍵,就要所有數(shù)據(jù)放到

          了一個(gè)片上.可以隨意插入數(shù)據(jù),但總會(huì)是在一個(gè)片上.

          然后,新增一個(gè)片.這個(gè)片建好并運(yùn)行了以后,MongoDB就會(huì)把集合拆分成兩半,成為塊.每個(gè)塊中包含片鍵值在一定

          范圍內(nèi)的所有文檔,假設(shè)其中一塊包含時(shí)間戳在2011.11.11前的文檔,則另一塊含有2011.11.11以后的文檔.其中

          一塊會(huì)被移動(dòng)到新片上.如果新文檔的時(shí)間戳在2011.11.11之前,則添加到第一塊,否則添加到第二塊.

           5.遞增片鍵還是隨機(jī)片鍵

          片鍵的選擇決定了插入操作在片之間的分布.

          如果選擇了像”timestamp”這樣的鍵,這個(gè)值可能不斷增長(zhǎng),而且沒(méi)有太大的間斷,就會(huì)將所有數(shù)據(jù)發(fā)送到一個(gè)片上

          (含有2011.11.11以后日期的那片).如果有添加了新片,再拆分?jǐn)?shù)據(jù),還是會(huì)都導(dǎo)入到一臺(tái)服務(wù)器上.添加了新片,

          MongoDB肯能會(huì)將2011.11.11以后的拆分成2011.11.11-2021.11.11.如果文檔的時(shí)間大于2021.11.11以后,

          所有的文檔還會(huì)以最后一片插入.這就不適合寫(xiě)入負(fù)載很高情況,但按照片鍵查詢會(huì)非常高效.

          如果寫(xiě)入負(fù)載比較高,想均勻分散負(fù)載到各個(gè)片,就得選擇分布均勻的片鍵.日志例子中時(shí)間戳的散列值,沒(méi)有模式的”logMessage”

          都是復(fù)合這個(gè)條件的.

          不論片鍵隨機(jī)跳躍還是穩(wěn)定增加,片鍵的變化很重要.如,如果有個(gè)”logLevel”鍵的值只有3種值”DEBUG”,”WARN”,”ERROR”,

          MongoDB無(wú)論如何也不能把它作為片鍵將數(shù)據(jù)分成多于3片(因?yàn)橹挥?個(gè)值).如果鍵的變化太少,但又想讓其作為片鍵,

          可以把這個(gè)鍵與一個(gè)變化較大的鍵組合起來(lái),創(chuàng)建一個(gè)復(fù)合片鍵,如”logLevel”和”timestamp”組合.

          選擇片鍵并創(chuàng)建片鍵很像索引,以為二者原理相似.事實(shí)上,片鍵也是最常用的索引.

           6.片鍵對(duì)操作的影響

          最終用戶應(yīng)該無(wú)法區(qū)分是否分片,但是要了解選擇不同片鍵情況下的查詢有何不同.

          假設(shè)還是那個(gè)表示人員的集合,按照”name”分片,有3個(gè)片,其名字首字母的范圍是A-Z.下面以不同的方式查詢:

          db.people.find({"name":"Refactor"})
          標(biāo)簽MongoDB,分片,詳解

          相關(guān)下載

          查看所有評(píng)論+

          網(wǎng)友評(píng)論

          網(wǎng)友
          您的評(píng)論需要經(jīng)過(guò)審核才能顯示

          熱門(mén)閱覽

          最新排行

          公眾號(hào)

          主站蜘蛛池模板: 欧美日韩综合一区二区三区| 无码日韩精品一区二区免费暖暖| 无码人妻一区二区三区精品视频 | 国产精品亚洲一区二区三区在线观看 | 福利国产微拍广场一区视频在线 | 中文字幕一区在线| 国产精品伦一区二区三级视频| 国产肥熟女视频一区二区三区 | 国产AV国片精品一区二区| 中文字幕乱码亚洲精品一区 | 亚洲av无码一区二区三区人妖 | 一区二区三区观看免费中文视频在线播放 | 91成人爽a毛片一区二区| 国产一区二区三区精品视频| 国产精品区AV一区二区| 成人H动漫精品一区二区| 中文字幕精品一区二区2021年 | 国产亚洲一区二区三区在线不卡| 精品一区二区三区无码免费直播| 国精产品一区一区三区有限在线| 无码日韩人妻av一区免费| 高清精品一区二区三区一区| 学生妹亚洲一区二区| 一区二区传媒有限公司| 亚洲av成人一区二区三区观看在线 | 福利一区二区在线| 人妻无码一区二区视频| 日韩精品电影一区亚洲| 亚洲国产精品成人一区| 一区二区三区免费电影| 99久久精品国产高清一区二区| 国产精品毛片a∨一区二区三区 | 亚洲A∨无码一区二区三区| 国产高清不卡一区二区| 精品国产a∨无码一区二区三区| 精品人妻一区二区三区浪潮在线| 久久中文字幕无码一区二区| 亚洲日韩中文字幕一区| 日本精品一区二区久久久| 久久久久久一区国产精品| 无码人妻AⅤ一区二区三区|