zoukankan      html  css  js  c++  java
  • mongodb存储引擎WiredTiger

     

    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
    来源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
  • 相关阅读:
    【基于初学者】SSH+Maven实现Excel导出功能
    【基于初学者】IDEA中Git的使用
    【基于初学者】通过eclipse工具如何创建Spring Boot工程
    【基于初学者】基于ssm框架实现不同用户显示不同的菜单模块
    【基于初学者】Struts框架
    【基于初学者】Maven相关配置和创建
    树莓派2+无线网卡=钓鱼热点
    mockjs 项目实战踩坑
    上传文件 上传图片 源码跟思路
    css 浮动及清除浮动 详细讲解
  • 原文地址:https://www.cnblogs.com/xibuhaohao/p/11226029.html
Copyright © 2011-2022 走看看