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

熱AI工具

Undress AI Tool
免費(fèi)脫衣圖片

Undresser.AI Undress
人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

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

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費(fèi)的程式碼編輯器

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

禪工作室 13.0.1
強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

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

熱門話題

在開發(fā)一個電商網(wǎng)站時,我遇到了一個棘手的問題:如何為用戶提供個性化的商品推薦。最初,我嘗試了一些簡單的推薦算法,但效果並不理想,用戶的滿意度也因此受到影響。為了提升推薦系統(tǒng)的精度和效率,我決定採用更專業(yè)的解決方案。最終,我通過Composer安裝了andres-montanez/recommendations-bundle,這不僅解決了我的問題,還大大提升了推薦系統(tǒng)的性能??梢酝ㄟ^一下地址學(xué)習(xí)composer:學(xué)習(xí)地址

CentOS系統(tǒng)上GitLab數(shù)據(jù)庫部署指南選擇合適的數(shù)據(jù)庫是成功部署GitLab的關(guān)鍵步驟。 GitLab兼容多種數(shù)據(jù)庫,包括MySQL、PostgreSQL和MongoDB。本文將詳細(xì)介紹如何選擇並配置這些數(shù)據(jù)庫。數(shù)據(jù)庫選擇建議MySQL:一款廣泛應(yīng)用的關(guān)係型數(shù)據(jù)庫管理系統(tǒng)(RDBMS),性能穩(wěn)定,適用於大多數(shù)GitLab部署場景。 PostgreSQL:功能強(qiáng)大的開源RDBMS,支持複雜查詢和高級特性,適合處理大型數(shù)據(jù)集。 MongoDB:流行的NoSQL數(shù)據(jù)庫,擅長處理海

MongoDB適合處理大規(guī)模非結(jié)構(gòu)化數(shù)據(jù),Oracle適用于需要事務(wù)一致性的企業(yè)級應(yīng)用。1.MongoDB提供靈活性和高性能,適合處理用戶行為數(shù)據(jù)。2.Oracle以穩(wěn)定性和強(qiáng)大功能著稱,適用于金融系統(tǒng)。3.MongoDB使用文檔模型,Oracle使用關(guān)系模型。4.MongoDB適合社交媒體應(yīng)用,Oracle適合企業(yè)級應(yīng)用。

MongoDB適合非結(jié)構(gòu)化數(shù)據(jù)和高擴(kuò)展性需求,Oracle適合需要嚴(yán)格數(shù)據(jù)一致性的場景。 1.MongoDB靈活存儲不同結(jié)構(gòu)數(shù)據(jù),適合社交媒體和物聯(lián)網(wǎng)。 2.Oracle結(jié)構(gòu)化數(shù)據(jù)模型確保數(shù)據(jù)完整性,適用於金融交易。 3.MongoDB通過分片橫向擴(kuò)展,Oracle通過RAC縱向擴(kuò)展。 4.MongoDB維護(hù)成本低,Oracle維護(hù)成本高但支持完善。

CentOS系統(tǒng)下MongoDB高效備份策略詳解本文將詳細(xì)介紹在CentOS系統(tǒng)上實施MongoDB備份的多種策略,以確保數(shù)據(jù)安全和業(yè)務(wù)連續(xù)性。我們將涵蓋手動備份、定時備份、自動化腳本備份以及Docker容器環(huán)境下的備份方法,並提供備份文件管理的最佳實踐。手動備份:利用mongodump命令進(jìn)行手動全量備份,例如:mongodump-hlocalhost:27017-u用戶名-p密碼-d數(shù)據(jù)庫名稱-o/備份目錄此命令會將指定數(shù)據(jù)庫的數(shù)據(jù)及元數(shù)據(jù)導(dǎo)出到指定的備份目錄。

要設(shè)置 MongoDB 用戶,請按照以下步驟操作:1. 連接到服務(wù)器並創(chuàng)建管理員用戶。 2. 創(chuàng)建要授予用戶訪問權(quán)限的數(shù)據(jù)庫。 3. 使用 createUser 命令創(chuàng)建用戶並指定其角色和數(shù)據(jù)庫訪問權(quán)限。 4. 使用 getUsers 命令檢查創(chuàng)建的用戶。 5. 可選地設(shè)置其他權(quán)限或授予用戶對特定集合的權(quán)限。

要啟動 MongoDB 服務(wù)器:在 Unix 系統(tǒng)中,運(yùn)行 mongod 命令。在 Windows 系統(tǒng)中,運(yùn)行 mongod.exe 命令??蛇x:使用 --dbpath、--port、--auth 或 --replSet 選項設(shè)置配置。使用 mongo 命令驗證連接是否成功。

在Debian系統(tǒng)上為MongoDB數(shù)據(jù)庫加密,需要遵循以下步驟:第一步:安裝MongoDB首先,確保您的Debian系統(tǒng)已安裝MongoDB。如果沒有,請參考MongoDB官方文檔進(jìn)行安裝:https://docs.mongodb.com/manual/tutorial/install-mongodb-on-debian/第二步:生成加密密鑰文件創(chuàng)建一個包含加密密鑰的文件,並設(shè)置正確的權(quán)限:ddif=/dev/urandomof=/etc/mongodb-keyfilebs=512
