8天學通MongoDB——第六天 分片技術

     在mongodb裏面存在另外一種集羣,就是分片技術,跟sql server的表分區相似,咱們知道當數據量達到T級別的時候,咱們的磁盤,內存sql

就吃不消了,針對這樣的場景咱們該如何應對。mongodb

 

一:分片數據庫

     mongodb採用將集合進行拆分,而後將拆分的數據均攤到幾個片上的一種解決方案。服務器

 

下面我對這張圖解釋一下:server

     人臉:       表明客戶端,客戶端確定說,你數據庫分片不分片跟我不要緊,我叫你幹啥就幹啥,沒什麼好商量的。內存

     mongos: 首先咱們要了解」片鍵「的概念,也就是說拆分集合的依據是什麼?按照什麼鍵值進行拆分集合....路由

                     好了,mongos就是一個路由服務器,它會根據管理員設置的「片鍵」將數據分攤到本身管理的mongod集羣,數據it

                    和片的對應關係以及相應的配置信息保存在"config服務器"上。io

    mongod:   一個普通的數據庫實例,若是不分片的話,咱們會直接連上mongod。test

 

二: 實戰

    首先咱們準備4個mongodb程序,我這裏是均攤在C,D,E,F盤上,固然你也能夠作多個文件夾的形式。

1:開啓config服務器

      先前也說了,mongos要把mongod之間的配置放到config服務器裏面,理所固然首先開啓它,我這裏就創建2222端口。

 

2: 開啓mongos服務器

    這裏要注意的是咱們開啓的是mongos,不是mongod,同時指定下config服務器,這裏我就開啓D盤上的mongodb,端口3333。

 

3:啓動mongod服務器

     對分片來講,也就是要添加片了,這裏開啓E,F盤的mongodb,端口爲:4444,5555。

 

4: 服務配置

    哈哈,是否是很興奮,還差最後一點配置咱們就能夠大功告成。

 <1> 先前圖中也能夠看到,咱們client直接跟mongos打交道,也就說明咱們要鏈接mongos服務器,而後將4444,5555的mongod

         交給mongos,添加分片也就是addshard()。

這裏要注意的是,在addshard中,咱們也能夠添加副本集,這樣能達到更高的穩定性。

 

<2>片已經集羣了,可是mongos不知道該如何切分數據,也就是咱們先前所說的片鍵,在mongodb中設置片鍵要作兩步

        ①:開啓數據庫分片功能,命令很簡單 enablesharding(),這裏我就開啓test數據庫。

        ②:指定集合中分片的片鍵,這裏我就指定爲person.name字段。

 

5: 查看效果

好了,至此咱們的分片操做所有結束,接下來咱們經過mongos向mongodb插入10w記錄,而後經過printShardingStatus命令

查看mongodb的數據分片狀況。

 這裏主要看三點信息:

  ① shards:     咱們清楚的看到已經別分爲兩個片了,shard0000和shard0001。

  ② databases:  這裏有個partitioned字段表示是否分區,這裏清楚的看到test已經分區。

  ③ chunks:     這個頗有意思,咱們發現集合被砍成四段:

                           無窮小 —— jack0,jack0 ——jack234813,jack234813——jack9999,jack9999——無窮大。

                           分區狀況爲:3:1,從後面的 on shardXXXX也能看得出。

相關文章
相關標籤/搜索