首页 > 解决方案 > MongoDB 是否首先反序列化存储的 BSON?

问题描述

我想了解 MongoDB 查询是如何工作的。

如果我错了,请纠正我,但 MongoDB 使用序列化协议 BSON 将数据保存在称为集合的真实文档中。真正的我的意思是一个文件,而不是在内存中。

要快速搜索数据,MongoDB 使用 B-tree 进行任何查询。

保存在文档中的 BSON 数据是否首先被反序列化,然后插入到 B-tree 中以被索引并从内存中访问?

如果不是那怎么办?

标签: mongodb

解决方案


据我了解,BSON是服务器使用的数据存储格式。这意味着文档以 BSON 格式存储在磁盘上以及服务器端的内存中。

索引自然地处理单个字段值,而不是完整的文档。因此 BSON 不适用于索引。我不知道索引是否以与 BSON 相同的格式存储单个值(例如时间戳、uuid、数组)。

保存在文档中的 BSON 数据是否首先被反序列化,然后插入到 B-tree 中以被索引并从内存中访问?

服务器端不需要反序列化,因为服务器既可以直接访问 BSON 文档中的数据,也可以本地迭代 BSON 文档。请参阅http://mongoc.org/libbson/current/parsing.html了解如何完成此操作。

大多数驱动程序,由于使用非 C 语言实现,将整个 BSON 文档反序列化为它们的语言原生数据结构,然后访问和迭代该数据结构。


推荐阅读