標籤:結構圖 需要 結構 for print desktop 垂直 har 價格
分區
- 在Mongodb裡面存在另一種叢集,就是分區技術,可以滿足MongoDB資料量大量增長的需求
- 當MongoDB儲存海量的資料時,一台機器可能不足以儲存資料,也可能不足以提供可接受的讀寫輸送量,這時,我們就可以通過在多台機器上分割資料,使得資料庫系統能儲存和處理更多的資料
為什麼使用分區
- 本地磁碟不夠大
- 當請求量巨大時會出現記憶體不足。
- 垂直擴充價格昂貴(記憶體、磁碟、cpu)
實現分區
- 實現分區需要3部分:
- 路由伺服器mongos:用戶端由此接入,根據分區依據,將資料寫入到不同的資料服務器
- 設定管理員mongod:將資料進行分區的依據
- 資料服務器mongod:可以有多台物理機,用於儲存實際的資料區塊
- 設計連接埠如下:
- 路由伺服器:60001
- 設定管理員:60002
- 資料服務器1:60003
- 資料服務器2:60004
- step1:啟動資料服務器,當前位於Desktop目錄下
sudo mkdir t1sudo mkdir t2sudo mongod --port 60003 --dbpath=~/Desktop/t1sudo mongod --port 60004 --dbpath=~/Desktop/t2
sudo mkdir confsudo mongod --port 60002 --dbpath=~/Desktop/conf
sudo mongos --port 60001 --configdb 192.168.196.128:60002
mongo --port 60001use admindb.runCommand({addshard:‘192.168.196.128:60003‘})db.runCommand({addshard:‘192.168.196.128:60004‘})
db.runCommand({enablesharding:‘test1‘})
db.runCommand({shardcollection:‘test1.t1‘,key:{name:1}})
for(i=0;i<10000;i++){ db.t1.insert({name:‘abc‘+i})}
db.printShardingStatus()
- 可以查看到資料均勻儲存在了資料服務器上
- step9:查詢資料
db.t1.find({name:‘abc1000‘})db.t1.find({name:‘abc9000‘})
- 分區的使用,對於用戶端是透明的,對資料的讀寫沒有變化
mongodb 叢集分區