首页 > 代码库 > mongodb数据文件结构——record是内嵌BSON的双向链表,多个record或索引组成extent

mongodb数据文件结构——record是内嵌BSON的双向链表,多个record或索引组成extent

数据文件结构

Extent

在每一个数据文件内,MongoDB把所存储的BSON文档的数据和B树索引组织到逻辑容器“Extent”里面。如下图所示(my-db.1和my-db.2 是数据库的两个数据文件):

技术分享

  • 一个文件可以有多个Extent
  • 每一个Extent只会包含一个集合的数据或者索引
  • 同一个集合的数据或索引可以分布在多个Extent内。这几个Extent也可以分步于多个文件内
  • 同一个Extent不会又有数据又有索引

Record 记录

在每个Extent里面存放有多个”Record“, 每一个记录里包含一个记录头以及MongoDB的BSON文档,以及一些额外的padding空间。Padding是MongoDB在插入记录时额外分配 一些未用空间,这样将来文档变大的时候不至于需要把文档迁移到别处。 记录头以整个记录的大小开始,包括该记录自己的位置以及前一个记录和后一个记录的位置。可以想象成一个Double Linked List。

技术分享

转自:http://www.mongoing.com/blog/file-storage

mongodb数据文件结构——record是内嵌BSON的双向链表,多个record或索引组成extent