圖解MongoDB原理

來源:互聯網
上載者:User
MongoDB是一款非常常用的面向文檔型非關聯式資料庫,主要應用在微博、部落格、IM等的訊息儲存業務中,由於儲存的資料與金融等行業比起來並不是那麼重要,而且對事務也沒什麼要求,所以在這種情境下,MongoDB要比關係型資料庫更適合,因為傳統的關係型資料庫的每次操作都會有ACK,而MongoDB的設計去掉了這個步驟,大大提高了儲存的效能,而且MongoDB的設計考慮了裝置故障經常出現的情境,所以在設計時就做了容災和容錯移轉方面方案。
MongoDB複(副)本集與分區:
每個複(副)本集中儲存的資料是相同的,相當於主備方式的資料冗餘,目的是為了容災。

分區是為了資料的拓展,按照片鍵進行結點劃分,資料根據片鍵儲存到對應的伺服器上。

MongoDB部署方案

MongoDB的叢集部署方案中有三類角色:實際資料存放區結點、設定檔儲存結點和路由接入結點。 串連的用戶端直接與路由結點相連,從配置結點上查詢資料,根據查詢結果到實際的儲存結點上查詢和儲存資料。MongoDB的部署方案有單機部署、複本集(主備)部署、分區部署、複本集與分區混合部署。

混合的部署方式如圖:


混合部署方式下向MongoDB寫資料的流程如圖:


混合部署方式下讀MongoDB裡的資料流程如圖:


對於複本集,又有主和從兩種角色,寫資料和讀資料也是不同,寫資料的過程是唯寫到主結點中,由主結點以非同步方式同步到從結點中:


而讀資料則只要從任一結點中讀取,具體到哪個結點讀取是可以指定的:


對於MongoDB的分區,假設我們以某一索引鍵(ID)為片鍵,ID的區間[0,50],劃分成5個chunk,分別儲存到3個片伺服器中,如圖所示:


假如資料量很大,需要增加片伺服器時可以只要移動chunk來均分資料即可。

配置結點:

儲存設定檔的伺服器其實儲存的是片鍵與chunk以及chunk與server的映射關係,用上面的資料表示的配置結點儲存的資料模型如圖:


路由結點:

路由角色的結點在分區的情況下起到負載平衡的作用。

要想更加詳細地學習MongoDB請閱讀《MongoDB權威指南》《深入學習MongoDB》《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.