国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
簡(jiǎn)單回顧
存儲(chǔ)引擎
WiredTiger 引擎 的寫入原理
Journaling ?日志功能
首頁(yè) 數(shù)據(jù)庫(kù) MongoDB 一文深析MongoDB存儲(chǔ)引擎(附原理圖)

一文深析MongoDB存儲(chǔ)引擎(附原理圖)

Dec 06, 2022 pm 05:00 PM
mongodb

本篇文章帶大家了解關(guān)于mongodb的相關(guān)知識(shí),介紹一下MongoDB中的存儲(chǔ)引擎,希望對(duì)大家有所幫助!

簡(jiǎn)單回顧

上次我們說(shuō)到了關(guān)于 mongodb 的集群,分為主從集群和分片集群,對(duì)于分片集群中的分片這里需要注意如下幾點(diǎn),一起來(lái)回顧一下:

  • 對(duì)于熱點(diǎn)數(shù)據(jù)

某些分片鍵(分片鍵是集合中每個(gè)文檔中存在的索引字段或復(fù)合索引字段)會(huì)導(dǎo)致所有的 讀或者寫請(qǐng)求 都操作在單個(gè)數(shù)據(jù)塊或者分片上,這樣就會(huì)導(dǎo)致單個(gè)分片服務(wù)器負(fù)荷過(guò)重,那么自增長(zhǎng)的分片鍵容易導(dǎo)致寫的問(wèn)題【推薦:MongoDB視頻教程

  • 對(duì)于不可分割的數(shù)據(jù)塊

對(duì)于粗粒度的分片鍵,可能會(huì)導(dǎo)致許多文檔使用相同的分片鍵

這樣的話這些文檔就不能被分割為多個(gè)數(shù)據(jù)塊,這就會(huì)限制了mongodb 的均勻分布數(shù)據(jù)能力

  • 對(duì)于查詢障礙

分片鍵與查詢是沒(méi)有關(guān)聯(lián)的,這樣會(huì)造成糟糕的查詢性能

對(duì)于以上注意點(diǎn),咱們做到心中有數(shù),實(shí)際工作中遇到類似的問(wèn)題,就可以嘗試學(xué)著處理了

今天我們簡(jiǎn)單了解一下 mongodb 的存儲(chǔ)引擎是個(gè)啥

存儲(chǔ)引擎

說(shuō)到 mongodb 的存儲(chǔ)引擎,我們要知道是在 mongodb 3.0 的時(shí)候引入了可插拔存儲(chǔ)引擎的概念

現(xiàn)在主要有這幾個(gè)引擎:

  • WiredTiger 存儲(chǔ)引擎
  • inMemory 存儲(chǔ)引擎

在存儲(chǔ)引擎剛出來(lái)的時(shí)候,默認(rèn)是使用的 ?MMAPV1 存儲(chǔ)引擎的

MMAPV1 引擎,看名字我們大概就知道他是使用的是 mmap 來(lái)做的,運(yùn)用的是 linux 內(nèi)存映射的原理

現(xiàn)在不使用 MMAPV1 引擎,是因?yàn)?WiredTiger ?存儲(chǔ)引擎更優(yōu),例如對(duì)比一下 WiredTiger ?就有如下優(yōu)勢(shì):

  • WiredTiger ? 讀寫操作性能更好

WiredTiger 能更好的發(fā)揮多核系統(tǒng)的處理能力

  • WiredTiger 鎖的粒度更小

    MMAPV1引擎使用表級(jí)鎖,當(dāng)某個(gè)單表上有并發(fā)的操作,吞吐就會(huì)受到限制

而 WiredTiger 使用文檔級(jí)的鎖 ,這就帶來(lái)并發(fā)及吞吐的提高

  • WiredTiger 壓縮方式更好

WiredTiger 使用前綴壓縮,比起 MMAPV1 更節(jié)省對(duì)內(nèi)存空間的損耗

并且 ?WiredTiger ?還提供壓縮算法, 這樣就可以大大降低對(duì)硬盤資源的消耗

WiredTiger 引擎 的寫入原理

7f86e9aca83945c06d4b5a70c815bfa.jpg

通過(guò)上圖我們可以看出, WiredTiger ?寫入磁盤的原理也是很簡(jiǎn)單的

  • 應(yīng)用請(qǐng)求來(lái)到 mongodb ,mongodb 做處理,并將結(jié)果存入緩存中
  • 當(dāng)緩存中達(dá)到 2 個(gè) G 的時(shí)候,或者 當(dāng) 60 s 定時(shí)器到時(shí)間的時(shí)候,就會(huì)將緩存中的數(shù)據(jù)刷到磁盤中去
    細(xì)心的 xdm 就知道,那么如果現(xiàn)在正好是 59 秒,1個(gè)多 G 的時(shí)候,緩存中的數(shù)據(jù)還沒(méi)有同步到磁盤中,mongodb 就異常掛掉了,那么 mongodb 豈不是會(huì)丟失數(shù)據(jù)?

我們用手指頭都可以想到,mongodb 的設(shè)計(jì)者怎么會(huì)讓這種情況存在,那么必然會(huì)有解決方案,如下

25d15fffdac65582c4948559c801b9f.jpg

如上圖,圖中多了一個(gè) ?journaling buffer 和 ?journal 文件

  • journaling buffer

存放 mongodb 增刪改 指令的緩沖區(qū)

  • journal 文件

類似于關(guān)系數(shù)據(jù)庫(kù)中的事務(wù)日志

引入 Journaling 的目的是:

Journaling ?能夠使 mongodb 數(shù)據(jù)庫(kù)由于意外故障后快速恢復(fù)

Journaling ?日志功能

Journaling ?的日志功能,看上去有點(diǎn)像是 redis 中的 aof 持久化一樣,也只能說(shuō)是類似

在 mongodb 2.4 的時(shí)候,就已經(jīng)是 默認(rèn)會(huì)開(kāi)啟 Journaling日志功能 的,我們啟動(dòng) mongod 實(shí)例的時(shí)候,服務(wù)就會(huì)去檢查是否需要恢復(fù)數(shù)據(jù)

因此就不會(huì)有上述 mongodb 丟數(shù)據(jù)的情況了

另外這里我們要知道,journaling 的日志功能,當(dāng) mongodb 需要進(jìn)行寫操作的時(shí)候,也就是 增,刪,改的時(shí)候,journaling 是會(huì)寫日志的,這會(huì)影響性能

但是 mongodb 讀取操作的時(shí)候,是不會(huì)記錄到緩存中的,因此也不會(huì)記錄到 journaling ?日志中,因此讀操作沒(méi)有影響

今天就到這里,學(xué)習(xí)所得,若有偏差,還請(qǐng)斧正

以上是一文深析MongoDB存儲(chǔ)引擎(附原理圖)的詳細(xì)內(nèi)容。更多信息請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)代碼編輯軟件(SublimeText3)

使用 Composer 解決推薦系統(tǒng)的困境:andres-montanez/recommendations-bundle 的實(shí)踐 使用 Composer 解決推薦系統(tǒng)的困境:andres-montanez/recommendations-bundle 的實(shí)踐 Apr 18, 2025 am 11:48 AM

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

CentOS上GitLab的數(shù)據(jù)庫(kù)如何選擇 CentOS上GitLab的數(shù)據(jù)庫(kù)如何選擇 Apr 14, 2025 pm 04:48 PM

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

MongoDB與Oracle:了解關(guān)鍵差異 MongoDB與Oracle:了解關(guān)鍵差異 Apr 16, 2025 am 12:01 AM

MongoDB適合處理大規(guī)模非結(jié)構(gòu)化數(shù)據(jù),Oracle適用于需要事務(wù)一致性的企業(yè)級(jí)應(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è)級(jí)應(yīng)用。

MongoDB vs. Oracle:為您的需求選擇正確的數(shù)據(jù)庫(kù) MongoDB vs. Oracle:為您的需求選擇正確的數(shù)據(jù)庫(kù) Apr 22, 2025 am 12:10 AM

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

CentOS MongoDB備份策略是什么 CentOS MongoDB備份策略是什么 Apr 14, 2025 pm 04:51 PM

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

mongodb怎么設(shè)置用戶 mongodb怎么設(shè)置用戶 Apr 12, 2025 am 08:51 AM

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

mongodb怎么啟動(dòng) mongodb怎么啟動(dòng) Apr 12, 2025 am 08:39 AM

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

Debian MongoDB如何進(jìn)行數(shù)據(jù)加密 Debian MongoDB如何進(jìn)行數(shù)據(jù)加密 Apr 12, 2025 pm 08:03 PM

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

See all articles