程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MongoDB數據庫 >> MongoDB綜合知識 >> MongoDB入門教程之分片技術詳解

MongoDB入門教程之分片技術詳解

編輯:MongoDB綜合知識

     在mongodb裡面存在另一種集群,就是分片技術,跟sql server的表分區類似,我們知道當數據量達到T級別的時候,我們的磁盤,內存就吃不消了,針對這樣的場景我們該如何應對。

 一:分片

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

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

     人臉:       代表客戶端,客戶端肯定說,你數據庫分片不分片跟我沒關系,我叫你干啥就干啥,沒什麼好商量的。

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

                     好了,mongos就是一個路由服務器,它會根據管理員設置的“片鍵”將數據分攤到自己管理的mongod集群,數據

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

    mongod:   一個普通的數據庫實例,如果不分片的話,我們會直接連上mongod。

 二: 實戰

    首先我們准備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也能看得出。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved