亚欧色一区w666天堂,色情一区二区三区免费看,少妇特黄A片一区二区三区,亚洲人成网站999久久久综合,国产av熟女一区二区三区

  • 發布文章
  • 消息中心
點贊
收藏
評論
分享
原創

MongoDB數據模型及存儲引擎簡介

2024-06-19 09:36:43
8
0

1.邏輯結構

MongoDB 與 MySQL 中的架構相差不多,底層都使用了可插拔的存儲引擎以滿足用戶的不同需要。用戶可以根據程序的數據特征選擇不同的存儲引擎,在最新版本的 MongoDB 中使用了 WiredTiger 作為默認的存儲引擎,WiredTiger 提供了不同粒度的并發控制和壓縮機制,能夠為不同種類的應用提供了最好的性能和存儲率。
 在存儲引擎上層的就是 MongoDB 的數據模型和查詢語言了,由于 MongoDB 對數據的存儲與 RDBMS有較大的差異,所以它創建了一套不同的數據模型和查詢語言。

2.數據模型

2.1內嵌

內嵌的方式指的是把相關聯的數據保存在同一個文檔結構之中。MongoDB的文檔結構允許一個字段或者一個數組內的值作為一個嵌套的文檔。

主要適用于:

  1. 數據對象之間有包含關系 ,一般是數據對象之間有一對多或者一對一的關系 。
  2. 需要經常一起讀取的數據。
  3. 有 map-reduce/aggregation 需求的數據放在一起,這些操作都只能操作單個 collection。

2.2引用

引用方式通過存儲數據引用信息來實現兩個不同文檔之間的關聯,應用程序可以通過解析這些數據引用來訪問相關數據。

主要適用于:

  1. 當內嵌數據會導致很多數據的重復,并且讀性能的優勢又不足于覆蓋數據重復的弊端 。
  2. 需要表達比較復雜的多對多關系的時候 。
  3. 大型層次結果數據集嵌套不要太深。

3.存儲引擎

3.1 概述

存儲引擎是MongoDB的核心組件,負責管理數據如何存儲在硬盤和內存上。MongoDB支持的存儲引擎有MMAPv1 ,WiredTiger和InMemory。
InMemory存儲引擎用于將數據只存儲在內存中,只將少量的元數據(meta-data)和診斷日志(Diagnostic)存儲到硬盤文件中,由于不需要Disk的IO操作,就能獲取所需的數據,InMemory存儲引擎大幅度降低了數據查詢的延遲(Latency)。
 從MongoDB3.2開始默認的存儲引擎是WiredTiger,3.2版本之前的默認存儲引擎是MMAPv1. MongoDB4.x版本不再支持MMAPv1存儲引擎。

3.2 WiredTiger存儲引擎優勢

  1. 文檔空間分配方式
    WiredTiger使用的是BTree存儲;
    MMAPv1使用的是線性存儲;
  2. 并發級別
    WiredTiger使用文檔級別鎖;
    MMAPv1使用表級鎖;
  3. 數據壓縮
    WiredTiger采用snappy (默認) 和 zlib 壓縮表數據;
    WiredTiger相比MMAPV1(無壓縮) 空間節省數倍;
  4. 內存使用
    WiredTiger 可以指定內存的使用大小;
  5. Cache使用
    WiredTiger引擎使用了二階緩存WiredTiger Cache, File System Cache來保證Disk上的數據的最終一致性;
    MMAPv1 只有journal 日志;
0條評論
作者已關閉評論
1****m
13文章數
0粉絲數
1****m
13 文章 | 0 粉絲
原創

MongoDB數據模型及存儲引擎簡介

2024-06-19 09:36:43
8
0

1.邏輯結構

MongoDB 與 MySQL 中的架構相差不多,底層都使用了可插拔的存儲引擎以滿足用戶的不同需要。用戶可以根據程序的數據特征選擇不同的存儲引擎,在最新版本的 MongoDB 中使用了 WiredTiger 作為默認的存儲引擎,WiredTiger 提供了不同粒度的并發控制和壓縮機制,能夠為不同種類的應用提供了最好的性能和存儲率。
 在存儲引擎上層的就是 MongoDB 的數據模型和查詢語言了,由于 MongoDB 對數據的存儲與 RDBMS有較大的差異,所以它創建了一套不同的數據模型和查詢語言。

2.數據模型

2.1內嵌

內嵌的方式指的是把相關聯的數據保存在同一個文檔結構之中。MongoDB的文檔結構允許一個字段或者一個數組內的值作為一個嵌套的文檔。

主要適用于:

  1. 數據對象之間有包含關系 ,一般是數據對象之間有一對多或者一對一的關系 。
  2. 需要經常一起讀取的數據。
  3. 有 map-reduce/aggregation 需求的數據放在一起,這些操作都只能操作單個 collection。

2.2引用

引用方式通過存儲數據引用信息來實現兩個不同文檔之間的關聯,應用程序可以通過解析這些數據引用來訪問相關數據。

主要適用于:

  1. 當內嵌數據會導致很多數據的重復,并且讀性能的優勢又不足于覆蓋數據重復的弊端 。
  2. 需要表達比較復雜的多對多關系的時候 。
  3. 大型層次結果數據集嵌套不要太深。

3.存儲引擎

3.1 概述

存儲引擎是MongoDB的核心組件,負責管理數據如何存儲在硬盤和內存上。MongoDB支持的存儲引擎有MMAPv1 ,WiredTiger和InMemory。
InMemory存儲引擎用于將數據只存儲在內存中,只將少量的元數據(meta-data)和診斷日志(Diagnostic)存儲到硬盤文件中,由于不需要Disk的IO操作,就能獲取所需的數據,InMemory存儲引擎大幅度降低了數據查詢的延遲(Latency)。
 從MongoDB3.2開始默認的存儲引擎是WiredTiger,3.2版本之前的默認存儲引擎是MMAPv1. MongoDB4.x版本不再支持MMAPv1存儲引擎。

3.2 WiredTiger存儲引擎優勢

  1. 文檔空間分配方式
    WiredTiger使用的是BTree存儲;
    MMAPv1使用的是線性存儲;
  2. 并發級別
    WiredTiger使用文檔級別鎖;
    MMAPv1使用表級鎖;
  3. 數據壓縮
    WiredTiger采用snappy (默認) 和 zlib 壓縮表數據;
    WiredTiger相比MMAPV1(無壓縮) 空間節省數倍;
  4. 內存使用
    WiredTiger 可以指定內存的使用大小;
  5. Cache使用
    WiredTiger引擎使用了二階緩存WiredTiger Cache, File System Cache來保證Disk上的數據的最終一致性;
    MMAPv1 只有journal 日志;
文章來自個人專欄
文章 | 訂閱
0條評論
作者已關閉評論
作者已關閉評論
0
0