mongodb - MongoDB 是否首先反序列化存储的 BSON?
问题描述
我想了解 MongoDB 查询是如何工作的。
如果我错了,请纠正我,但 MongoDB 使用序列化协议 BSON 将数据保存在称为集合的真实文档中。真正的我的意思是一个文件,而不是在内存中。
要快速搜索数据,MongoDB 使用 B-tree 进行任何查询。
保存在文档中的 BSON 数据是否首先被反序列化,然后插入到 B-tree 中以被索引并从内存中访问?
如果不是那怎么办?
解决方案
据我了解,BSON是服务器使用的数据存储格式。这意味着文档以 BSON 格式存储在磁盘上以及服务器端的内存中。
索引自然地处理单个字段值,而不是完整的文档。因此 BSON 不适用于索引。我不知道索引是否以与 BSON 相同的格式存储单个值(例如时间戳、uuid、数组)。
保存在文档中的 BSON 数据是否首先被反序列化,然后插入到 B-tree 中以被索引并从内存中访问?
服务器端不需要反序列化,因为服务器既可以直接访问 BSON 文档中的数据,也可以本地迭代 BSON 文档。请参阅http://mongoc.org/libbson/current/parsing.html了解如何完成此操作。
大多数驱动程序,由于使用非 C 语言实现,将整个 BSON 文档反序列化为它们的语言原生数据结构,然后访问和迭代该数据结构。
推荐阅读
- c++ - C++ - 致命错误:circle.h:没有这样的文件或目录
- javascript - Node.js 内置 dns 模块功能基本
- c# - 检测机器人是否在使用语音:RequestAttribute 为 null
- javascript - node.js“找不到命令”
- php - Symfony 4.4 + scheb/2fa:自定义代码生成器和邮件程序
- delphi-7 - mysq[i].caption 到 delphi 7 上的 editbox.text
- r - 使用列表元素的内容子集列表元素
- git - 命令行一直说 fileX :is a directory"
- reactjs - 上下文和提供者无法通过模态访问
- python - 盈透证券 Python API 错误 -1 322 处理请求