MongoDB~存儲引擎了解

存儲引擎

存儲引擎是一個數據庫的核心,主要負責內存、磁盤里數據的管理和維護。

MongoBD的優勢,在于其數據模型定義的靈活性、以及可拓展性。但不要忽略,其存儲引擎也是插件式的存在,支持不同類型的存儲引擎,使用不同的引擎可以解決不同場景的問題,也支持用戶去自定義實現存儲引擎。

在設計之初,為了實現server與物理存儲的解耦,引入存儲引擎作為中間插件,類似于MySQL的:基于B+Tree的InnoDB引擎和基于LSM樹的RocketsDB引擎,還有快速寫入和讀取的MyISAM引擎。

目前MongoDB主要有倆種引擎

  • WiredTiger 存儲引擎:默認的存儲引擎為 WiredTiger 存儲引擎,非常適合大多數工作負載,建議用于新部署。WiredTiger 提供文檔級并發模型、檢查點和數據壓縮等功能。
  • In-Memory 存儲引擎:In-Memory 存儲引擎在 MongoDB Enterprise 中可用。它不是將文檔存儲在磁盤上,而是將它們保留在內存中以獲得更可預測的數據延遲。

此外,MongoDB 3.0 提供了 可插拔的存儲引擎 API ,允許第三方為 MongoDB 開發存儲引擎,這點和 MySQL 也比較類似。

WiredTiger

目前世面上主流的存儲引擎大多是基于B+Tree或者LSM Tree實現,類似LevelDB、RocketsDB,都是基于的LSM樹。

但WiredTiger引擎與InnoDB一樣,使用了B+樹作為索引存儲結構。
此外,WiredTiger 還支持 LSM(Log Structured Merge) 樹作為存儲結構,MongoDB 在使用 WiredTiger 作為存儲引擎時,默認使用的是 B+ 樹。

MongoDB在3.2之前是B樹,之后默認WiredTiger引擎后,便一直是B+樹

使用 B+ 樹時,WiredTiger 以 page 為基本單位往磁盤讀寫數據。
B+ 樹的每個節點為一個 page,共有三種類型的 page:

  • root page(根節點):B+ 樹的根節點。
  • internal page(內部節點):不實際存儲數據的中間索引節點。
  • leaf page(葉子節點):真正存儲數據的葉子節點,包含一個頁頭(page header)、塊頭(block header)和真正的數據(key/value),其中頁頭定義了頁的類型、頁中實際載荷數據的大小、頁中記錄條數等信息;塊頭定義了此頁的 checksum、塊在磁盤上的尋址位置等信息。
    在這里插入圖片描述
    借助 WiredTiger,MongoDB 支持所有集合和索引的壓縮。壓縮可以最大限度地減少存儲使用,但需要額外的 CPU。

In-Memory

從 MongoDB Enterprise 版本 3.2.6 開始,內存存儲引擎是 64 位版本中通用可用性 (GA) 的一部分。除了一些元數據和診斷數據外,內存存儲引擎不維護任何磁盤數據,包括配置數據、索引、用戶憑據等。

內存存儲引擎是非持久性的,不會將數據寫入持久性存儲。非持久性數據包括應用程序數據和系統數據,例如用戶、權限、索引、副本集配置、分片集群配置等。

因此,日志或等待數據 持久化的概念不適用于內存存儲引擎。
所以一般不會使用該引擎,其丟數據風險比較高。內存存儲引擎在進程關閉后不會保留數據。
但通過避免磁盤 I/O,內存存儲引擎可以實現更可預測的數據庫操作延遲。

要選擇內存存儲引擎,請指定:

  • inMemory對于–storageEngine選項,或者 storage.engine如果使用配置文件則進行設置。
  • –dbpath,或者storage.dbPath使用配置文件。雖然內存存儲引擎不會將數據寫入文件系統,但它會維護–dbpath小型元數據文件和診斷數據以及用于構建大型索引的臨時文件。
mongod --storageEngine inMemory --dbpath <path>

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/20438.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/20438.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/20438.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

導線防碰撞警示燈:高壓線路安全保障

導線防碰撞警示燈&#xff1a;高壓線路安全保障 在廣袤的大地上&#xff0c;高壓線路如同血脈般縱橫交錯&#xff0c;然而&#xff0c;在這看似平靜的電力輸送背后&#xff0c;卻隱藏著不容忽視的安全隱患。特別是在那些輸電線路跨越道路、施工等區域的路段&#xff0c;線下超…

頂點著色技術在AI去衣中的作用

在當今的數字時代&#xff0c;人工智能&#xff08;AI&#xff09;已經滲透到我們生活的方方面面&#xff0c;從智能家居到自動駕駛汽車&#xff0c;再到在線購物推薦。然而&#xff0c;AI的影響遠不止于此。近年來&#xff0c;AI在圖像處理和計算機視覺領域的應用取得了顯著進…

c++字符串相關接口

c字符串相關接口 1.str2wstr(str轉換wstr)2.wstr2str(str轉換wstr)3.Utf8ToAsi(Utf8轉換ANSI)4.AsiToUtf8(ANSI轉換Utf8)5.stringformatA/stringformatW(按照指定的格式格式化字符串)6.GetStringBetween(獲取cStart cEnd之間的字符串)7.Char2Int(char轉int)8.Str2Bin(字符串轉換…

視覺語言大模型llava學習

1. 拉取 https://github.com/haotian-liu/LLaVA 視覺語言大模型是人工智能領域一種重要的多模態模型&#xff0c;它結合了計算機視覺&#xff08;CV&#xff09;和自然語言處理&#xff08;NLP&#xff09;的技術&#xff0c;使得模型能夠同時理解圖像和文本信息。這類模型在多…

hadoop部署

需要3臺機子&#xff0c;Linux為centos7 分別設置靜態ip&#xff0c;設置主機名,配置主機名映射&#xff0c;配置ssh免密登入 hadoop1 192.168.1.7 hadoop2 192.168.1.8 hadoop3 192.168.1.9 vi /etc/sysconfig/network-scripts/ifcfg-ens33TYPE"Ethernet" PROX…

Kotlin 泛型

文章目錄 定義泛型屬性泛型函數泛型類或接口 where 聲明多個約束泛型具體化in、out 限制泛型輸入輸出 定義 有時候我們會有這樣的需求&#xff1a;一個類可以操作某一類型的對象&#xff0c;并且限定只有該類型的參數才能執行相關的操作。 如果我們直接指定該類型Int&#xff…

機器人抓取檢測(Robot Grasping Detection)

目錄 前言 一、物體檢測 二、抓取點生成 三、運動規劃 四、控制 五、總結 前言 機器人抓取檢測&#xff08;Robot Grasping Detection&#xff09;是指通過計算機視覺和機器學習技術&#xff0c;自動識別并確定機器人如何抓取物體的一種技術。這個過程涉及多個步驟和關鍵…

【Python系列】Python 中方法定義與方法調用詳解

&#x1f49d;&#x1f49d;&#x1f49d;歡迎來到我的博客&#xff0c;很高興能夠在這里和您見面&#xff01;希望您在這里可以感受到一份輕松愉快的氛圍&#xff0c;不僅可以獲得有趣的內容和知識&#xff0c;也可以暢所欲言、分享您的想法和見解。 推薦:kwan 的首頁,持續學…

詳細介紹運算符重載函數,清晰明了

祝各位六一快樂~ 前言 1.為什么要進行運算符重載&#xff1f; C中預定義的運算符的操作對象只能是基本數據類型。但實際上&#xff0c;對于許多用戶自定義類型&#xff08;例如類&#xff09;&#xff0c;也需要類似的運算操作。這時就必須在C中重新定義這些運算符&#xff…

短信發送驗證碼及郵件發送驗證碼

發送短信驗證碼 阿里云發送驗證碼 public Integer sendTelCode(String tel) {String url "https://dfsns.market.alicloudapi.com/data/send_sms";String appcode "a3198282fbdf443d97aa9f3cfbe1232e";int code RandomUtil.randomInt(1000,10000);emai…

【DSP】xDAIS算法標準

1. 簡介 在安裝DSP開發支持包時&#xff0c;有名為 “xdais_7_21_01_07”文件夾。xDAIS全稱: TMS320 DSP Algorithm Standard(算法標準)。39條規則&#xff0c;15條指南。參考文檔。參考文章。 2. 三個層次 3.接口 XDAIS Digital Media。編解碼引擎。VISA&#xff08;Video&…

LeetCode前端刷題指南:探索四大領域,精通五大技能,掌握六大題型,運用七大策略

LeetCode前端刷題指南&#xff1a;探索四大領域&#xff0c;精通五大技能&#xff0c;掌握六大題型&#xff0c;運用七大策略 在前端開發的廣闊領域中&#xff0c;刷題是提高自身能力、深入理解算法和數據結構的重要途徑。LeetCode作為知名的在線刷題平臺&#xff0c;為前端開…

牛客小白月賽95VP

早上藍橋杯大寄&#xff0c;算是交了300元買了件T恤qaq 1.簽到&#xff1a;https://ac.nowcoder.com/acm/contest/83687/A 下面是AC代碼&#xff1a; #include<bits/stdc.h> using namespace std; int main() {int a,b;cin>>a>>b;if(ab) cout<<&quo…

簡述你對 SPA 單??的理解,它的優缺點分別是什么 ?

SPA&#xff08;Single-Page Application&#xff0c;單頁應用&#xff09;是一種在Web開發中廣泛使用的應用架構模式。它允許用戶通過交互操作來更新頁面的部分內容&#xff0c;而無需重新加載整個頁面。以下是關于SPA的理解、優點和缺點的簡要說明。 SPA的理解 SPA的核心思…

qi5uxeel算法分析流程記錄libmsec.so

動態注冊函數主要方法在so層。 libmsec.so 通過regsiterNative方法注冊62個函數 加殼混淆ollvm動態反調試等你還能再惡心點不 分析流程定位關鍵點 算法設計SM4以及各類自定義簽名算法 涉及到的知識包含Java C Android 完整混淆流程如下圖&#xff0c; 不得不說你開發的…

微信小程序canvas畫圖使用百分比適配不同機型屏幕達到任何屏幕比例皆可!完美適配任何機型!指定canvas尺寸適配亦可!保證全網唯一完美

錯誤代碼示例: // 在onLoad中調用 const that = this wx.getSystemInfo({success: function (res) {console.log(res)that.setData({model: res.model,screen_width: res.windowWidth/375,screen_height: res.windowHeight})} }) 我看到網上很多使用上面這種代碼去適配,其…

C語言 指針——函數指針

目錄 什么是函數指針&#xff1f; 函數指針的定義 定義函數指針時的常見錯誤 函數指針有什么用&#xff1f; 函數指針的主要應用 什么是函數指針&#xff1f; 函數指針 (Function Pointer) 就是指向函數的指針變量 數據類型 ( * 指針變量名 ) ( 形參列表 ); 例如&#x…

【回眸】牛客網刷刷刷(九) ——面試經驗篇(含參考回答)

前言 度過了忙碌的4個月&#xff0c;經歷了加班、籌備wedding、更新簡歷&#xff0c;終于有些許喘息時間。 下面的規劃比較簡單&#xff0c;一個是備考3個月后的雅思&#xff0c;一個是積累牛客網沖浪經驗&#xff0c;最后一個是記錄工作交接項。 牛客網刷刷刷這個系列也終于迎…

el-date-picker 選擇日期范圍只保存左側日期面板

需求 日期篩選&#xff0c;但限制只能選擇同一個月的數據&#xff0c;故此應該去掉右側月份面板。 實現 主要是通過 css 樣式實現&#xff1a; <style> /* 隱藏右邊日期面板 */ .el-picker-panel__content.el-date-range-picker__content.is-right .el-date-table, .…

拼多多商品信息一鍵抓取:深度解析商品詳情接口,Python實戰代碼來襲!

拼多多的商品詳情接口允許開發者通過指定的商品ID獲取商品的詳細信息&#xff0c;如商品標題、價格、描述、圖片等。接口采用HTTP請求方式&#xff0c;支持GET方法&#xff0c;返回格式為JSON。 三、接口調用 要調用拼多多的商品詳情接口&#xff0c;你需要遵循以下步驟&…