📜  什么是 BSON?

📅  最后修改于: 2022-05-13 01:56:15.366000             🧑  作者: Mango

什么是 BSON?

BSON 代表二进制 JSON。它是一种二进制文件格式,用于以二进制编码格式存储序列化的 JSON 文档。它由 MongoDB 于 2009 年开发。 MongoDB 数据库有几种只对 MongoDB 特别感兴趣的标量数据格式,因此他们开发了 BSON 数据格式,以便在通过网络传输文件时使用。尽管该格式是专门为 MongoDB 开发的,但它可以根据业务需求在任何地方独立使用。

它与 JSON 有一些相似之处,例如 BSON 也支持嵌套文档和其他文档中的数组,但仍有许多显着差异。请参阅这篇文章以了解有关 JSON 和 BSON 之间区别的更多信息。

示例 BSON 文档

考虑以下 JSON 文档:

{
    "hello" : "world"
}

它的 BSON 等价物将是:

\x16\x00\x00\x00             // Size of the Document
\x02                         // 0x02 = type String
hello\x00                    // field name
\x06\x00\x00\x00world\x00    // field value        
\x00                         // Used to represent end of object

其中“\x01”用于表示 0000 0001。

BSON 文档的特征:以下是 BSON 文档的三个主要特征-

  1. 轻量级——数据传输期间的术语开销是指传输不需要的额外位(如校验和、奇偶校验等)。这些位通常作为标头的一部分与数据一起传输。 BSON 将空间开销保持在最低限度,这使得它在通过任何网络传输时都是轻量级的。
  2. 遍历的——BSON 被设计成本质上是高度可遍历的。由于它的二进制结构,它支持类型和长度编码,因此可以轻松快速地解析它。
  3. 高效——BSON 支持高效的数据编码和解码。数据可以非常轻松快速地编码到 BSON 并从 BSON 解码。

为什么选择 BSON?

以下是在数据传输过程中使用 BSON 的优势——

  1. BSON 可以轻松快速地解析,因为它支持类型和长度编码,这要归功于它的二进制结构。
  2. BSON 对象的设计本质上是高度可遍历和轻量级的,这使其成为数据传输的更好选择。
  3. 与 JSON 对象相比,它占用更少的空间并提供更快的扫描速度。
  4. 它提供了广泛的数据类型,例如 – 日期类型等),其中许多不受 JSON 支持。

BSON 支持的数据类型:以下是 BSON支持的数据类型——

S NoData TypeSize (bytes)
1byte1
2int324
3int648
4uint648
5double8
6decimal12816
7date8
8objectId12
9arrayBased on data (For ex – A byte array uses 1 byte)

使用 BSON 的缺点: BSON 支持快速遍历 BSON 文档。为了支持它,BSON 在文档中添加了额外的信息(如子对象的长度等)。在某些情况下,与 JSON 相比,这会导致文档大小增加并降低效率。