1. 程式人生 > >mongodb的學習(轉載)

mongodb的學習(轉載)

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實戰 ---------------------  作者:vince_zw  來源:CSDN  原文:https://blog.csdn.net/zhaowen25/article/details/41871383  版權宣告:本文為博主原創文章,轉載請附上博文連結!