MongoDB構架圖分享

來源:互聯網
上載者:User
文章目錄
  • MongoDB資料檔案內部結構
  • 在MongoDB中實現事務
  • MongoDB資料同步
  • 分區機制
  • 伺服器角色

本文圖片來自Ricky Ho的博文MongoDB構架(MongoDB Architecture),這是個一聽就感覺很寬泛的話題,但是作者在文章中確實對MongoDB由內至外的架構進行了剖析。本文截取了其文章中的幾張重點架構片進行簡單描述。希望對大家有用。

MongoDB資料檔案內部結構

  1. MongoDB在資料存放區上按命名空間來劃分,一個collection是一個命名空間,一個索引也是一個命名空間
  2. 同一個命名空間的資料被分成很多個Extent,Extent之間使用雙向鏈表串連
  3. 在每一個Extent中,儲存了具體每一行的資料,這些資料也是通過雙向連結串連的
  4. 每一行資料存放區空間不僅包括資料佔用空間,還可能包含一部分附加空間,這使得在資料update變大後可以不移動位置
  5. 索引以BTree結構實現
在MongoDB中實現事務

眾所周知,MongoDB只支援對單行記錄的原子性修改,並不支援對多行資料的原子操作。但是通過中的變態操作,實際你也可以自己實現事務。其步驟所未:

  • 第1步:先記錄一條事務記錄,將要修改的多行記錄的修改值寫到裡面,並設定其狀態為init(如果這時候操作中斷,那麼在重新啟動時,會判斷到他處於init狀態,從而將其儲存的多行修改操作應用到具體的行上)
  • 第2步:然後更新具體要修改的行,將剛才寫的事務記錄的標識寫到它的tran欄位中
  • 第3步:將事務記錄的狀態從init變成pending(如果在這時候操作中斷,那麼在重新啟動時,會判斷到它的狀態是pending的,這時候查看其所有對應的多條要修改的記錄,如果其tran有值,那麼就進行第4步,如果沒值,說明第4步已經執行過了,直接將其狀態從pending變成commited了就行)
  • 第4步:將需要修改的多條記錄的相應值修改了,並且unset掉之前的tran欄位
  • 第5步:將事務記錄那一條的狀態從pending變成commited,事務完成

其實上面的步驟並不罕見,在支援事務的DBMS中,其事務原子性提交的保證大多都與上面類似。其實事務記錄的tran那條記錄,就類似於這些DBMS中的redolog一樣。

MongoDB資料同步

是MongoDB採用Replica Sets模式的同步流程

  • 紅色箭頭表示寫操作寫到Primary上,然後非同步同步到多個Secondary上
  • 藍色箭頭表示讀操作可以從Primary或Secondary任意一個上讀
  • 各個Primary與Secondary之間一直保持心跳同步檢測,用於判斷Replica Sets的狀態
分區機制

  • MongoDB的分區是指定一個分區key來進行,資料按範圍分成不同的chunk,每個chunk的大小有限制
  • 有多個分區節點儲存這些chunk,每個節點儲存一部分的chunk
  • 每一個分區節點都是一個Replica Sets,這樣保證資料的安全性
  • 當一個chunk超過其限制的最大體積時,會分裂成兩個小的chunk
  • 當chunk在分區節點中分布不均衡時,會引發chunk遷移操作
伺服器角色

上面講了分區的標準,下面是具體在分區時的幾種節點角色

  • 用戶端訪問路由節點mongos來進行資料讀寫
  • config伺服器儲存了兩個映射關係,一個是key值的區間對應哪一個chunk的映射關係,另一個是chunk存在哪一個分區節點的映射關係
  • 路由節點通過config伺服器擷取資料資訊,通過這些資訊,找到真正存放資料的分區節點進行對應操作
  • 路由節點還會在寫操作時判斷當前chunk是否超出限定大小,如果超出,就分列成兩個chunk
  • 對於按分區key進行的查詢和update操作來說,路由節點會查到具體的chunk然後再進行相關的工作
  • 對於不按分區key進行的查詢和update操作來說,mongos會對所有下屬節點發送請求然後再對返回結果進行合并

更多詳細內容請看原文:MongoDB Architecture

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.