
如果有人说我精通ORACLE ,MYSQL ,那我信,但如果有人说特别精通MONGODB 的原理以及源代码,那就真的佩服了。这方面的书比较少,所以说精通MONGODB 的原理,那真是比较不容易。
为什么是胡想瞎猜,是因为如果说错了,那就等着您来指正,互相提高技术水平。
首先看一个可能被看烂了的mongodb 的整体架构图,从图中可以总结出以下list
1 mongodb 支持行 和 列存储,目前大部分状态下使用的是行存储
2 数据存储在磁盘和cache中的数据的格式应是不一样的,需要压缩,解压
3 数据的处理都是处理无压缩的数据
4 系统通过snapshot 的方式进行 MVCC 的多版本控制,减少锁的产生
5 事务产生则最先要落LOG日志,数据则在缓冲中在刷入到磁盘

由于大部分的数据处理在内存中,并且尽量降低锁,和并发之间的互斥操作,使得MONGODB 的结构相对于其他传统数据库要简单,这也是使得MONGODB 的操作相对其他数据库要快的一个原因。这就要提到 in memory ,mongodb 的寻址设计中并没有使用传统的文件系统的偏移量作为指针。如果是B+ 树三层的展现,则在内存中,非叶子节点的信息会在内存中
所以寻址都是在内存中进行的,这就会带来更高的性能,这也是有些文字中提到的,给与MONGODB 的内存不要太吝啬的一个原因。

本文深入探讨MongoDB WiredTiger存储引擎的架构设计,解释其高性能的秘密,包括无锁机制、MVCC、内存优化、压缩技术及特殊更新方式,揭示为何MongoDB在读写密集型应用中表现卓越。
最低0.47元/天 解锁文章
368

被折叠的 条评论
为什么被折叠?



