日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

M05-MongoDB数据库核心知识

發布時間:2024/3/24 数据库 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 M05-MongoDB数据库核心知识 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

MongoDB數據庫架構

MongoDB存儲引擎

存儲引擎負責管理數據存儲,包括內存和磁盤,解決數據的存儲和磁盤的交互
mongodb的存儲引擎可以自由的替換,但是要符合mongoDB的API

mongoDB官方支持的存儲引擎

WiredTiger是3.2之后默認使用的存儲引擎:提高了更良好的鎖并發機制,可以支持文檔級別的鎖
MMAPv1是3.2之前的使用的存儲引擎,在鎖機制這一塊兒不是太好
In-Memory是企業版支持從存儲引擎
Encrypted是企業版支持的存儲引擎,加密存儲引擎

第三方

RocksDB是facebook出的一個nosql存儲引擎,主要是解決寫入并發的性能,也可以結合mysql使用
TerarKDB是解決存儲空間的優化和查詢性能的優化
阿里云數據庫mongoDB版擴展支持的存儲引擎

命令查看服務狀態信息

db.serverStatus()

查看服務引擎

db.serverStatus().storageEngine

db.serverStatus().storageEngine
{
“name” : “wiredTiger”,
“supportsCommittedReads” : true,
“oldestRequiredTimestampForCrashRecovery” : Timestamp(0, 0),
“supportsPendingDrops” : true,
“dropPendingIdents” : NumberLong(0),
“supportsSnapshotReadConcern” : true,
“readOnly” : false,
“persistent” : true,
“backupCursorOpen” : false
}

MongoDB數據邏輯架構


固定集合Capped:定義了一個集合容量(數據大小)固定,超過了運行淘汰,設定一個淘汰機制,例如先進先出,場景:數據排隊的消息隊列,在MongoDB內部做主從復制的時候,使用了base集合,使用固定容量大小的存儲日志同步到從服務器

集合Collection

  • 類似與關系型數據庫中的表Table
  • MogonDB數據庫可以包含多個集合,一個集合可以包含多個文檔(Document)
  • 如果集合不存在,MongoDB會在保存第一條數據的時候創建
  • 可以使用db.createCollection()創建集合
  • 集合不限制文檔doucment的字段架構
  • MongoDB 3.2 開始可以啟用Schema Validation 強制驗證文檔結構
  • MongoDB還提供了Capped Collection 固定容量大小的集合
  • db.createCollection(“log”,{capped:true,size:5242880,max:5000})
  • max:5000 文檔的個數,兩個都指定滿足一個就行
  • use deerlili show collections db.users.stats() {"ns" : "deerlili.users","size" : 1717,"count" : 22,"avgObjSize" : 78,"storageSize" : 36864,"capped" : false,"wiredTiger" : {"metadata" : {"formatVersion" : 1}... }

    MongoDB文檔模型與BSON

    • Doucment文檔,類似于關系型數據庫中的行Row,數據基本單元
    • 文檔結構類似于JSON文檔,存儲鍵值對數據
    • MongoDB保存數據的基本格式是BSON Doucment
    • BSON是二進制的JSON,目的的節約存儲空間
    • MongoDB的文檔支持更豐富的數據類型
    • _id是默認的主鍵,使用的是ObjectId類型保證唯一,也可以自定義
    • 字段存儲有特定的順序,允許嵌套復雜類型,如文檔類型的數據
    • 除了數據使用文檔、查詢、過濾、索引管理等功能也全部使用文檔
    • BSON文檔大小有16M的限制,就是一行的數據16M
    • 超出16M限制的數據可以使用GridFS存儲

    MongoDB文檔模型設計原則

    數據模型兩種方式

    Normalized 范式
    Denormalized 反范式

    MongoDB文檔結構分為

    引用式:也就是RDBMS中的外鍵關聯
    嵌入式:也就是Doucment文檔中的內嵌結點

    MongoDB日志Log機制(Journal)

    • 為了防止突發故障導致的數據丟失,MongoDB提供了日志機制
    • WiredTiger使用前寫日志write-ahead transaction log和Checkpoint檢查點一起來確保數據正確持久性
    • 如果MongoDB日志存在檢查點,就使用日志重放功能修改直到上一個檢查點
    • 日志使用了snappy壓縮庫
    • 最小日志大小128字節,小于此大小不啟用壓縮
    • 單節點,不啟用日志,可能導致數據修改丟失
    • WiredTiger引擎日志默認大小100ms毫秒刷一次磁盤,日志大小最大100M,超過會自動創建新文件
    • WiredTiger引擎會自動刪除直到上一個checkpoint的日志文件

    配置文件

    locate mongod.conf
    一般在在/etc/mongod.conf

    Mongod.conf 控制日志

    深入MongoDB日志模式底層原理

    控制WiredTiger日志持久化

    • MongoDB的日志在dbpath目錄下的Journal目錄下
    • 啟動參數--journal開始啟用--nojournal關閉,也可以配置文件關閉
    • WiredTiger默認提交日志時間的間隔100毫秒
    • 3.2版本WiredTiger寫入日志間隔默認50毫秒
    • 3.6以后WiredTiger設置檢查點間隔是60秒
    • 如果寫入操作設置了j:true,引擎會立即寫磁盤
    • 日志大小最大100M,超過會自動創建新文件
    • 如果強制關閉Mongod進程可能會導致日志丟失
    • 使用storage.journal.commitIntervalMs控制間隔
    • In-Memory引擎不支持此參數
    • MMAPv1引擎默認提交日志時間的間隔30毫秒
    • WiredTiger引擎自動刪除直到上一個checkpoint的日志文件

    MongoDB面試題

  • Document內嵌vs引用
    Embedding內嵌:快速讀取、數據冗余、數據更新時候比較復雜
    Linking引用:節約空間,關系靈活,數據更新比較簡單、需要從多個表讀數據
  • MongoDB存儲引擎主要有哪些?
  • 幾種主流存儲引擎的差異?優缺點?
  • MongoDB日志結構
  • MongoDB恢復數據庫數據的原理?
  • BSON如何保證數據的序列化?
  • MongoDB文檔模型?
  • MongoDB文檔模型的優缺點?
  • 如何控制MongoDB日志寫入時間?
  • 總結

    以上是生活随笔為你收集整理的M05-MongoDB数据库核心知识的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。