json-vs-bson
目录
JSON与BSON介绍
JavaScript Object Notation (JSON) 是一种标准文件格式,它使用人类可读类型的文本来传输具有属性键值对和数组数据类型的数据。JSON是最常见的数据格式之一,主要用于浏览器与服务器之间的异步通信。JSON 是一种独立于语言的格式。
而BSON是一种计算机交换格式,主要用于数据存储和MongoDB数据库数据网络传输。
BSON是一种简单的二进制形式,用于表示数据结构和关联数组(在 MongoDB 中我们称为文档或对象)。
让我们再详细研究一下 JSON 和 BSON:
BSON 代表二进制 JSON,它由包含字段名称、类型和值的有序元素列表组成。字段名称类型通常是字符串。现在很多编程语言都使用BSON生成和解析JSON格式的相关数据。
BSON 类型支持日期和二进制数据,由于这个特性,BSON是人类可读的形式,而JSON 文件由键值对组成,是人类可读的。BSON 文件可能不小于 JSON 文件,但BSON总是会跳过不相关的记录,而JSON需要解析每个字节。这是 MongoDB 中使用BSON的主要原因。
BSON 类型格式本质上是轻量级、快速的、高度可遍历的。BSON实现用于支持对象中嵌入其他对象和数组。在BSON对象内部,可以构建索引,并将对象与查询表达式和 BSON 键进行匹配。BSON 是一种二进制编码的 JSON 文档,用于在集合中存储文档。BSON 中添加了对 JSON 不支持的二进制和日期等数据类型的支持。
BSON 是 JSON 的序列化格式编码格式,主要用于存储和访问文档,而 JSON 是一种人类可读的标准文件格式,主要用于以键值属性对的形式传输数据。
BSON 的设计使其占用的空间更少,但它的效率不如 JSON。事实上,BSON 在某些情况下比 JSON 使用更多的空间,这样做的原因是考虑可遍历性,这意味着BSON向文档添加了一些附加信息,例如字符串长度和子对象,从而使遍历速度更快。
BSON 的设计方式还使其具有相对较快的编码和解码技术,例如,所有整数都存储为32位整数,它们不会与文本一起解析,因此,对于较小的整数,它比 JSON 使用更多的空间,但BSON的解析速度就要快得多。
除了上述几点,BSON 还使用了额外的数据类型,如 JSON 中没有的 二进制数据和日期数据类型。在 JSON 的情况下,没有提供这样的类型。
JSON与BOSN的对比
项目 | JSON | BSON |
---|---|---|
类型 | 标准文件格式 | 二进制文件格式 |
速度 | 相对较慢 | 快点 |
空间 | 占用的空间相对较少 | 消耗更多空间 |
用途 | 数据传输 | 数据的存储 |
编解码技术 | 没有 | 更快的编码和解码技术 |
特点 | 键值对仅用于传输数据 | 轻量级、快速且可遍历 |
结构 | 用于异步服务器浏览器通信的语言独立格式 | 二进制 JSON,由包含字段名称、类型和值的有序元素列表组成。字段名称类型通常是字符串 |
遍历 | JSON 不会跳过而是浏览所有内容 | 另一方面,BSON 只是对相关内容进行索引,并跳过所有不必使用的内容 |
解析 | JSON 格式不需要解析,因为它们已经是人类可读的格式 | 另一方面,BSON 需要解析,因为它们易于机器解析和生成 |
类型 | 广义上的 JSON 由一个对象和一个数组组成,其中对象是键值对的集合,数组是一个有序的值列表 | 二进制编码技术包含附加信息,例如字符串的长度和对象子类型。此外,二进制数据和日期数据类型是JSON 中不支持的数据类型。 |