MongoDB WiredTiger基础数据结构

WiredTiger引擎被MongoDB收购,WiredTiger数据结构不是b-tree,不是b-tree,不是b-tree。
WiredTiger数据结构官方说明
在这里插入图片描述
简单截图作为证明。

对于WiredTiger存储引擎来说,集合所在的数据文件和相应的索引文件都是按b-tree结构来组织的,不同之处在于数据文件对应的b-tree叶子结点上除了存储键名外(keys),还会存储真正的集合数据(values),所以数据文件的存储结构也可以认为是一种b+tree,其整体结构如下图所示:
在这里插入图片描述
rootpage、internal page和leaf page,前两者包含指向其子页的page index指针,不包含集合中的真正数据,leaf page包含集合中的真正数据。leaf page包含一个页头(page header)、块头(block header)和真正的数据(key/value),其中页头定义了页的类型、页中实际载荷数据的大小、页中记录条数等信息;块头定义了此页的checksum、块在磁盘上的寻址位置等信息。
WiredTiger有一个block manage模块,用来为page分配block。如果要定位某一行数据(key/value)的位置,可以先通过block的位置找到此page(相对于文件起始位置的偏移量),再通过page找到行数据的相对位置,最后可以得到行数据相对于文件起始位置的偏移量offsets。

mongodb和mysql索引数据结构也是采用b+tree,但是叶子节点存储的是数据主键id,这也是为什么mongodb和mysql必须要有主键的原因,而PostgreSQL索引数据结构也是采用b+tree,但叶子节点存储的是数据偏移量,这也是PostgreSQL无需主键的原因.

推荐两篇文章:wiredtiger作者文章预写日志第一篇
wiredtiger作者文章预写日志第二篇

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值