一、什么是BSON?
BSON(Binary JSON)是对JSON的一种二进制编码数据格式,目前主要用于MongoDB中。和JSON一样,BSON支持嵌入式的文档和数组。BSON包含了JSON没有的数据类型,比如Date type和BinData type。BSON是由零个或多个键值对存储为单个实体,我们称这种实体为文档。
二、BSON的特性
1)轻量级(Lightweight): 空间优势。
2)可遍历性(Traversable): 对于JSON来说,太大的JSON结构会导致数据遍历非常慢。在JSON中,要跳过一个文档进行数据读取,需要对此文档进行扫描,需要麻烦的数据结构匹配。而BSON将JSON的每一个元素的长度存在元素的头部,这样只需要读取元素长度就可以直接seek到指定的点上进行读取了。
3)高效性(Efficient): BSON的编码与解码速度很快。
三、BSON的语法规范(v1.0)
用伪BNF语法描述。有效的BSON数据是由文档与非终结符表示的。
1)基本类型:
用作终结符。每个类型必须被序列化为
小端格式
。
字节 | 1字节(8bit) |
32位整数 | 4字节(32bit有符号整数) |
64位整数 | 8字节(64bit有符号整数) |
双精度浮点数 | 8字节(64bit IEEE 754标准 浮点数) |
2)非终结符:
用
引号
括起来的字符串表示终结符,如
”\x01”
表示字节
00000001
*操作符速记法,”\x01”*2代表”\x01\x01”,当*作为一元操作符,意味着可以重复0次以上。
四、BSON基本示例
五、BSON更多示例