mongodb 叢集分區

來源:互聯網
上載者:User

標籤:結構圖   需要   結構   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
  • step2:啟動設定管理員
sudo mkdir confsudo mongod --port 60002 --dbpath=~/Desktop/conf
  • step3:啟動路由伺服器
sudo mongos --port 60001 --configdb 192.168.196.128:60002
  • step4:在路由伺服器中添加資料服務器
mongo --port 60001use admindb.runCommand({addshard:‘192.168.196.128:60003‘})db.runCommand({addshard:‘192.168.196.128:60004‘})
  • step5:對資料庫test1啟用分區
db.runCommand({enablesharding:‘test1‘})
  • step6:指定片鍵,即集合中文檔的分區依據
db.runCommand({shardcollection:‘test1.t1‘,key:{name:1}})
  • step7:測試資料,向集合中插入1W條資料
for(i=0;i<10000;i++){    db.t1.insert({name:‘abc‘+i})}
  • step8:查看資料存放區情況
db.printShardingStatus()
  • 可以查看到資料均勻儲存在了資料服務器上
  • step9:查詢資料
db.t1.find({name:‘abc1000‘})db.t1.find({name:‘abc9000‘})
  • 分區的使用,對於用戶端是透明的,對資料的讀寫沒有變化

mongodb 叢集分區

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.