mongoDB——自動分片介紹及簡單實現
mongoDB的分片,是將collection的資料進行分割,然後將不同的部分分別儲存到不同的機器上。當collection所佔空間過大時,我們需要增加一臺新的機器,分片會自動將collection的資料分發到新的機器上。
mongoDB分片的原理:
mongos:客戶端只需要對mongos進行操作就行了,至於如何進行分片,不需要客戶端參與,由mongos和config來完成。
mongod:一個普通的資料庫例項,如果不分片的話,我們直接連線的就是mongod。
例項演示:
首先準備四個mongodb伺服器,F:\mongos\ F:\mongodb1 F:\mongodb2 F:\mongodbConfig
1. 開啟config伺服器
因為mongos要把mongod之間的配置放到config伺服器裡面,所以,首先應該開啟config伺服器。
2. 開啟mongos伺服器
在開啟mongos時,指定config伺服器。
3. 開啟mongod1,mongod2伺服器,對於分片來說,也就是要新增片了。
4. 將27022和27023兩臺伺服器交給mongos管理
runCommand執行新增分片
下一步就是設定片鍵,也就是告訴mongos如何切分資料。首先用enablesharding()開啟資料庫分片功能,然後指定集合中分片的鍵。
5. 執行資料,檢視效果
通過mongos向資料庫中插入10w條資料,通過printShardingStatus命令檢視mongodb的資料分佈情況。
shards:已分為了兩個片shard0000,shard0001
databases:顯示admin未分片,test資料已分片,對user這個集合進行了分片,片鍵為name。
chunks:顯示user集合被分成三塊:從無窮小到0,從0到9999,從9999-maskey。
分片機制增強了mongoDB的寫擴充套件性。使用分片機制能夠很好的解決下面幾個問題:
- 儲存的資料接近或者超過一個單獨節點的儲存能力。
- 系統有效工作集的大小將要超過系統的最大RAM
- 系統有大量的寫操作。