我正在尝试深入了解 BSON。我读了一些信息丰富的问题,例如: 为什么 Node.js 中 JSON 比 BSON 更快?,JSON 和 BSON 哪个更轻?。 但我还是不明白是什么让 BSON 遍历比 JSON 快。
根据https://bsonspec.org/faq.html,
BSON 还被设计为快速编码和解码。例如, 整数存储为 32(或 64)位整数,因此它们不需要 与文本进行解析。对于小型数据,这比 JSON 使用更多的空间 整数,但解析速度要快得多。
我假设计算机以二进制形式存储所有内容。 为什么这很特别?
FAQ文档(上面)也提供了BSON的示例,但是阅读它我无法理解为什么BSON比JSON更快?他们是否正在寻找一些 BSON 特定且在 JSON 中缺失的开始和结束字符,这有助于快速遍历?
{"hello": "world"}
→
\x16\x00\x00\x00 // total document size
\x02 // 0x02 = type String
hello\x00 // field name
\x06\x00\x00\x00world\x00 // field value
\x00 // 0x00 = type EOO ('end of object')
{"BSON": ["awesome", 5.05, 1986]}
→
\x31\x00\x00\x00
\x04BSON\x00
\x26\x00\x00\x00
\x02\x30\x00\x08\x00\x00\x00awesome\x00
\x01\x31\x00\x33\x33\x33\x33\x33\x33\x14\x40
\x10\x32\x00\xc2\x07\x00\x00
\x00
\x00
由于其二进制格式、显式类型信息、紧凑性、减少的预处理和高效的数据结构,BSON 解析比 JSON 更快。