主页 > 新闻资讯 > 大数据培训:MongoDB的存储引擎

大数据培训:MongoDB的存储引擎

作者:张老师 浏览次数: 2021-03-31 17:46
MongoDB按照分类来说,通常是作为文档型数据库,而基于分布式环境下,完成大规模的数据存储任务,对于存储引擎而言,也面临着极大的挑战。今天的大数据培训分享,我们就来讲讲MongoDB的存储引擎。

数据库的存储引擎作为数据库的重要组件,决定了数据如何写入数据、如何持久化存储数据。

MongoDB数据库

MongoDB 3.0引入了插件式存储引擎API,为第三方的存储引擎厂商加入MongoDB提供了方便,目前除了早期的MMAP存储引擎外,还有Wired Tiger和In-Memory Storage Engine等,前者更是在被MongoDB公司收购后更是直接引入到了MongoDB 3.0版本中,在3.2版本中的默认存储引擎是Wired Tiger。对于Wired Tiger存储引擎,其内部架构如图所示:

大数据培训:MongoDB的存储引擎
 
MongoDB存储引擎架构

按照Mongodb默认的配置,WiredTiger的写操作会先写入Cache,并持久化到WAL(Write ahead log),每60s或log文件达到2GB时会做一次Checkpoint,将当前的数据持久化,产生一个新的快照。Wiredtiger连接初始化时,首先将数据恢复至最新的快照状态,然后根据WAL恢复数据,以保证存储可靠性。

Wiredtiger的Cache采用Btree的方式组织,每个Btree节点为一个Page,Root Page是Btree的根节点,Internalpage是Btree的中间索引节点,Leaf Page是真正存储数据的叶子节点;Btree的数据以页为单位按需从磁盘加载或写入磁盘。Wiredtiger采用Copy on Write的方式管理修改操作(insert、update、delete),修改操作会先缓存在cache里,持久化时,修改操作不会在原来的Leaf Page上进行,而是写入新分配的Page,每次CheckPoint都会产生一个新的Root Page。

基于Wiredtiger这种存储引擎的架构特点,也赋予其有如下几个特性:

1)文档级别的锁:MongoDB在执行写操作时,WiredTiger在文档级别进行并发控制,就是说,在同一时间,多个写操作能够修改同一个集合中的不同文档;当多个写操作修改同一个文档时,必须以序列化方式执行;这意味着,如果该文档正在被修改,其他写操作必须等待,直到在该文档上的写操作完成之后,其他写操作相互竞争,获胜的写操作在该文档上执行修改操作。

2)检查点机制:类似关系数据库的CheckPoint,在Checkpoint操作开始时,WiredTiger提供指定时间点(point-in-time)的数据库快照(Snapshot),该Snapshot呈现的是内存中数据的一致性视图。当向Disk写入数据时,WiredTiger将Snapshot中的所有数据以一致性方式写入到数据文件中。同样MongoDB借助Journal日志文件也可以还原数据。

3)内存使用:从MongoDB 3.2版本开始,WiredTiger内部缓存的使用量,默认值是:1GB或60%of RAM-1GB,取两值中的较大值(不同版本会有区别,具体参考版本配置文件说明);文件系统缓存的使用量不固定,MongoDB自动使用系统空闲的内存。

关于大数据培训,MongoDB的存储引擎,以上就为大家做了大致的介绍了。MongoDB的存储机制,也是学习当中需要去深入理解的,这样也才能更好地运用它,满足各个场景下的需求。成都加米谷大数据,专业大数据培训机构,大数据开发、数据分析与挖掘,零基础班本月正在招生中,课程大纲及学习视频,可联系客服获取!
热点排行
推荐文章
立即申请>>