一文深析MongoDB儲存引擎(附原理圖)
這篇文章帶大家了解關於mongodb的相關知識,介紹一下MongoDB中的儲存引擎,希望對大家有幫助!
簡單回顧
上次我們說到了關於mongodb 的集群,分為主從集群和分片集群,對於分片集群中的分片這裡需要注意如下幾點,一起來回顧一下:
- 對於熱點資料
某些分片鍵(分片鍵是集合中每個文件中存在的索引欄位或複合索引欄位)會導致所有的讀取或寫入請求 都操作在單一資料區塊或分片上,這樣就會導致單一分片伺服器負荷過重,那麼自增長的分片鍵容易導致寫的問題【推薦:MongoDB視訊教學】
- 對於不可分割的資料塊
對於粗粒度的分片鍵,可能會導致許多文件使用相同的分片鍵
這樣的話這些文件就不能分割為多個資料區塊,這就會限制了mongodb 的均勻分佈資料能力
- 對於查詢障礙
##分片鍵與查詢是沒有關聯的,這樣會造成糟糕的查詢效能
對於以上註意點,咱們做到心中有數,實際工作中遇到類似的問題,就可以嘗試學著處理了今天我們簡單了解一下mongodb 的儲存引擎是個啥
#儲存引擎說到mongodb 的儲存引擎,我們要知道是在mongodb 3.0 的時候引入了可插拔儲存引擎的概念
現在主要有這幾個引擎:- ##WiredTiger 儲存引擎
- inMemory 儲存引擎
- 在儲存引擎剛出來的時候,預設是使用的 MMAPV1 儲存引擎的
#現在不使用MMAPV1 引擎,是因為
WiredTiger 存儲引擎更優,例如對比一下WiredTiger 就有以下優勢:
WiredTiger- 讀寫作業效能較好
- WiredTiger 能更好的發揮多核心系統的處理能力
- WiredTiger
- 鎖定的粒度更小
MMAPV1引擎使用表級鎖,當某個單表上有並發的操作,吞吐就會受到限制
而WiredTiger 使用文件級的鎖,這就帶來並發及吞吐的提高
- 壓縮方式更好
- WiredTiger 使用前綴壓縮,比起MMAPV1 更節省對記憶體空間的損耗
並且 WiredTiger 也
提供壓縮演算法
- ##資源的消耗
- WiredTiger 引擎的寫入原理
#透過上圖我們可以看出, WiredTiger 寫入磁碟的原理也是很簡單的
應用程式請求來到mongodb ,mongodb 做處理,並將結果存入快取中當快取中達到
2 個G 的時候,或當60 s
細心的xdm 就知道,那麼如果現在正好是59 秒,1個多G 的時候,快取中的資料還沒同步到磁碟中,mongodb 就異常掛掉了,那麼mongodb 豈不是會遺失資料?
- mongodb 的設計者怎麼會讓這種情況存在,那麼必然會有解決方案
- ,如下
- 如上圖,圖中多了一個
- journaling buffer 和 journal 檔案
##journaling buffer
存放mongodb 增刪改指令的緩衝區
journal 檔案 類似於關聯式資料庫中的交易日誌引入Journaling 的目的是:
Journaling 能夠讓mongodb 資料庫因意外故障後快速復原
Journaling 日誌功能######Journaling 的日誌功能,看起來有點像是redis 中的aof 持久化一樣,也只能說是類似######在mongodb 2.4 的時候,就已經是###預設會開啟Journaling日誌功能### 的,我們啟動mongod 實例的時候,服務就會去檢查是否需要恢復資料#########因此就不會有上述mongodb 遺失資料的情況了#######另外這裡我們要知道,journaling 的日誌功能,當mongodb 需要進行寫入操作的時候,也就是增,刪,改的時候,journaling 是會寫日誌的,這會影響效能
但是mongodb 讀取操作的時候,是不會記錄到快取中的,因此也不會記錄到journaling 日誌中,因此讀取操作沒有影響
#今天就到這裡,學習所得,若有偏差,還請斧正
#以上是一文深析MongoDB儲存引擎(附原理圖)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

解決 Navicat 過期問題的方法包括:續約授權;卸載並重新安裝;停用自動更新;使用 Navicat Premium Essentials 免費版;聯絡 Navicat 客戶支援。

要使用 Navicat 連接 MongoDB,您需要:安裝 Navicat建立 MongoDB 連接:a. 輸入連接名稱、主機位址和連接埠b. 輸入認證資訊(如果需要)新增 SSL 憑證(如果需要)驗證連線儲存連接

在 Node.js 中連接資料庫需要選擇一個資料庫系統(關係型或非關係型),然後使用特定於該類型的模組建立連接。常見模組包括 mysql(MySQL)、pg(PostgreSQL)、mongodb(MongoDB)和 redis(Redis)。建立連線後,可以使用查詢語句檢索資料並使用更新語句修改資料。最後,完成所有操作後必須關閉連線以釋放資源。遵循這些最佳實務可提高效能和安全性,例如使用連線池、參數化查詢和妥善處理錯誤。

在 Node.js 中連接資料庫的步驟:安裝 MySQL、MongoDB 或 PostgreSQL 套件。建立資料庫連接物件。打開資料庫連接,並處理連接錯誤。

.NET 4.0 用於創建各種應用程序,它為應用程式開發人員提供了豐富的功能,包括:物件導向程式設計、靈活性、強大的架構、雲端運算整合、效能最佳化、廣泛的程式庫、安全性、可擴展性、資料存取和行動開發支援。

在無伺服器架構中,Java函數可以與資料庫集成,以存取和操作資料庫中的資料。關鍵步驟包括:建立Java函數、設定環境變數、部署函數和測試函數。透過遵循這些步驟,開發人員可以建立複雜的應用程序,無縫存取儲存在資料庫中的資料。

本文介紹如何在Debian系統上構建高可用性的MongoDB數據庫。我們將探討多種方法,確保數據安全和服務持續運行。關鍵策略:副本集(ReplicaSet):利用副本集實現數據冗餘和自動故障轉移。當主節點出現故障時,副本集會自動選舉新的主節點,保證服務的持續可用性。數據備份與恢復:定期使用mongodump命令進行數據庫備份,並製定有效的恢復策略,以應對數據丟失風險。監控與報警:部署監控工具(如Prometheus、Grafana)實時監控MongoDB的運行狀態,並

本文介紹如何在Debian系統上配置MongoDB實現自動擴容,主要步驟包括MongoDB副本集的設置和磁盤空間監控。一、MongoDB安裝首先,確保已在Debian系統上安裝MongoDB。使用以下命令安裝:sudoaptupdatesudoaptinstall-ymongodb-org二、配置MongoDB副本集MongoDB副本集確保高可用性和數據冗餘,是實現自動擴容的基礎。啟動MongoDB服務:sudosystemctlstartmongodsudosys
