MongoDB3.2后默认采用WiredTiger存储引擎。

组成

WiredTiger由三部分组成:

  • Mongos: 负责查询请求的路由和对ShardServer的管理;
  • ConfigServer: 记录全局配置信息
  • ShardServer:完成实际查询和数据提取操作

     
    p.png

Transport Layer业务层

Transport Layer是处理请求的基本单位。Mongo有专门的listener线程,每次有连接进来,listener会创建一个新的线程conn负责与客户端交互,它把具体的查询请求交给network线程,真正到数据库里查询由TaskExecutor来进行。

 
p-2.png

写请求

WiredTiger的写操作会默认写入Cache,并持久化到WAL(Write Ahead Log),每60s做一次checkpoint,产生快照文件。WiredTiger初始化时,恢复至最新的快照状态,然后根据WAL恢复数据,保证数据的完整性。
Cache是基于BTree的,节点是一个page,root page是根节点,internal page是中间索引节点,leaf page真正存储数据,数据以page为单位与磁道读写。

 
p-3.png

一致性

  1. WiredTiger使用Copy on Write管理修改操作。修改先放在cache中,并持久化,不直接作用在原leaf page,而是写入新分配的page,每次checkpoint产生新page。
    相关文件:
  • WiredTiger.basecfg: 存储基本配置信息,与ConfigServer有关系
  • WiredTiger.lock: 定义锁操作
  • table*.wt: 存储各张表的数据
  • WiredTiger.wt: 存储table* 的元数据
  • WiredTiger.turtle: 存储WiredTiger.wt的元数据
  • journal: 存储WAL
  1. 一次checkpoint过程
    1. 对每个table*.wt做一次checkpoint,各自的元数据都更新到WiredTiger.wt中
    2. 对WiredTiger.wt做一次checkpoint,将元数据存储到WiredTiger.turtle.set中,整个过程完成之前,原来的WiredTiger.turtle继续发挥作用,保证可用性。待过程完成后,将WiredTiger.turtle.set重命名为WiredTiger.turtle。

作者:小码弟
链接:https://www.jianshu.com/p/bea62e2dce31
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

mongodb存储引擎WiredTiger的更多相关文章

  1. MongoDB 存储引擎Wiredtiger原理剖析

    今天开始看MongoDB 3.2的文档,发现了这么两句话 Support for Multiple Storage Engines MongoDB supports multiple storage ...

  2. MongoDB存储引擎(中)——WiredTiger

    上一篇博文介绍了MongoDB的MMAPv1存储引擎,本文接着介绍MongoDB另一个存储引擎--WiredTiger,WiredTiger是在MongoDB3.0版本引入的,并且在MongoDB3. ...

  3. MongoDB 存储引擎和数据模型设计

    标签: MongoDB NoSQL MongoDB 存储引擎和数据模型设计 1. 存储引擎 1.1 存储引擎是什么 1.2 MongoDB中的默认存储引擎 2. 数据模型设计 2.1 内嵌和引用 2. ...

  4. MongoDB存储引擎选择

    MongoDB存储引擎选择 MongoDB存储引擎构架 插件式存储引擎, MongoDB 3.0引入了插件式存储引擎API,为第三方的存储引擎厂商加入MongoDB提供了方便,这一变化无疑参考了MyS ...

  5. MongoDB存储引擎(上)——MMAPv1

    3.0版本以前,MongoDB只有一个存储引擎——MMAP,MongoDB3.0引进了一个新的存储引擎——WiredTiger,同时对原有的MMAP引擎进行改进,产生MMAPv1存储引擎,并将其设置为 ...

  6. MongoDB学习笔记(五、MongoDB存储引擎与索引)

    目录: mongoDB存储引擎 mongoDB索引 索引的属性 MongoDB查询优化 mongoDB存储引擎: 目前mongoDB的存储引擎分为三种: 1.WiredTiger存储引擎: a.Con ...

  7. MongoDB 存储引擎选择

    MongoDB存储引擎选择 MongoDB存储引擎构架 插件式存储引擎, MongoDB 3.0引入了插件式存储引擎API,为第三方的存储引擎厂商加入MongoDB提供了方便,这一变化无疑参考了MyS ...

  8. MongoDB 存储引擎:WiredTiger和In-Memory

    存储引擎(Storage Engine)是MongoDB的核心组件,负责管理数据如何存储在硬盘(Disk)和内存(Memory)上.从MongoDB 3.2 版本开始,MongoDB 支持多数据存储引 ...

  9. MongoDB新存储引擎WiredTiger实现(事务篇)

    导语:计算机硬件在飞速发展,数据规模在急速膨胀,但是数据库仍然使用是十年以前的架构体系,WiredTiger 尝试打破这一切,充分利用多核与大内存时代,开发一种真正满足未来大数据管理所需的数据库.本文 ...

随机推荐

  1. 海思SDK 与各芯片对照

    本文链接:https://blog.csdn.net/liuxizhen2009/article/details/84261221 海思SDK不对外开放. 海思35系列sdk Hi3507   Hi3 ...

  2. 简单即时通讯、聊天室--java NIO版本

    实现的功能: 运行一个服务端,运行多个客户端.在客户端1,发送消息,其余客户端都能收到客户端1发送的消息. 重点: 1.ByteBuffer在使用时,注意flip()方法的调用,否则读取不到消息. 服 ...

  3. 雷达无线电系列(三)经典CFAR算法门限因子alpha计算(matlab)

    前言 本文汇集CA.SO.GO.OS.杂波图等恒虚警算法的门限因子求解方法及其函数 1,CA-CFAR [非常简单,可以直接求解] %% 均值恒虚警_门限因子计算公式 %% 版本:v1 %% 时间:2 ...

  4. 我自己用C++写了个GMM(Gaussian mixture model)模型

    我自己用C++写了个GMM(Gaussian mixture model)模型 Written for an assignment 之前粗粗了解了GMM的原理,但是没有细看,现在有个Assignmen ...

  5. 攻防世界(Ctf-Web 新手练习区 Writeup)

    平台地址:adworld.xctf.org.cn 在打着暑假工赚零花钱之余,我将这些题利用空余时间刷了一遍,感觉内心还是比较满足的! 题目:view_source 这道题没啥好说的,在url的前面加上 ...

  6. 安卓开发之cache 的使用(图片查看器案例)

    package com.lidaochen.test; import android.graphics.Bitmap; import android.graphics.BitmapFactory; i ...

  7. 面试常考HTTP协议知识点

    协议简介 1. 应用层协议, 一般以TCP为基础,数据收发通过TCP实现: 2. 一次性连接.服务器与客户端的每次连接只处理一个请求,下次请求重新建立连接: 3. 无状态协议.服务器不保留与客户交易时 ...

  8. win10 下的 CUDA10.0 +CUDNN + tensorflow + opencv 环境部署

    1 CUDA 10.0 安装  win10 下的cuda 安装是非常简单的,和其他程序安装没什么区别,现在 tensorflow 1.13 版本以上 支持 CUDA 10.0 ,这里选取了CUDA 1 ...

  9. git 把其他分支上的文件拿来覆盖本地

    1:git checkout oldversion -- 文件地址 2: 一个分支从某个角度讲也像是一次commmit,也是有向无环图的一个点

  10. 简述FTP的主动模式与被动模式(精简)

    一.主被动 主动: 客户端从任意一个大于1024的端口现在假设为1234(非特权端口)连接到服务端的21端口(命令端口),随之客户端监听端口(N+1)即为1235端口(可以理解为这是客户端认定的数据端 ...