MongoDB数据文件结构

.ns文件记录着若干个集合命名空间和索引命名空间。

一个集合命名空间又有多个数据域(extent),集合命名空间里存储着集合的元数据,比如集合名称,集合的第一个数据域和最后一个数据域的位置等等。而一个数据域由若干条文档(document)组成,每个数据域都有一个头部,记录着第一条文档和最后一条文档的为知,以及该数据域的一些元数据。extent之间,document之间通过双向链表连接。



每页的存储空间为4K

TotalSize(4)| { BSONType(1)| FieldName | Data } * EOO(1)

TotalSize:Document转换为BSON后的总长度,4个字节表示

BSONType:Data的数据类型,占一个字节

FieldName:字段名,例子中的hello,key/value的"key",UTF-8字符串,字符串都有一个结束符'\0'

Data:key/value的value,例子中的"world",如果是字符串则在Data前需要另加四个字节存储Data的长度,如果是其他格式可以参考官网规范

*:key/value的对数,比如{"hello":"world", "hello1":"world1"},有两对

EOO:结束符,\x00

分析例子{"hello":"world"}的长度:

TotalSize(4) + BSONType(1) + FieldName(5+1) + Data(4 + 5 + 1) + EOO(1) = 22 字节


Record:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值