BSON

BSON（）是一种计算机数据交换格式，主要被用作MongoDB数据库中的数据存储和网络传输格式。它是一种二进制表示形式，能用来表示简单数据结构、关联数组（MongoDB中称为“对象”或“文档”）以及MongoDB中的各种数据类型。BSON之名缘于JSON，含义为Binary JSON（二进制JSON）。

 数据类型和语法 
BSON文档（对象）由一个有序的元素列表构成。每个元素由一个字段名、一个类型和一个值组成。字段名为字符串。类型包括：
 string
 integer（32或64位）
 double（64位IEEE 754浮点数）
 decimal128（128位IEEE 754-2008浮点数；变体），适合作为任意精度为34个十进制数字的数字载体，最大值近似106145
 date（整数，自UNIX时间的毫秒数)
 byte array（二进制数组）
 布林（true或false）
 null
 BSON对象
 BSON数组
 JavaScript代码
 MD5二进制数据
 正则表达式（Perl兼容的正则表达式，即，版本8.41，含UTF-8支持；与Python不完全兼容）

BSON的类型名义上是JSON类型的一个超集（JSON没有date或字节数组类型），但一个例外是没有像JSON那样的通用“数字”（number）类型。

 效率 
与JSON相比，BSON着眼于提高存储和扫描效率。BSON文档中的大型元素以长度字段为前缀以便于扫描。在某些情况下，由于长度前缀和显式数组索引的存在，BSON使用的空间会多于JSON。

 例子 
一个内容为{"hello":"world"}的文档将存储为：Bson:
  \x16\x00\x00\x00               // 总文档大小
  \x02                           // 0x02 = 类型：String（字符串）
  hello\x00                      // 字段名
  \x06\x00\x00\x00world\x00      // 字段值（值大小，值，空终止符）
  \x00                           // 0x00 = 类型：EOO（'end of object'，对象结尾）

 参见 

 JSON

 （二进制JSON）

 Protocol Buffers

 Thrift
 MessagePack
 文件導向的數據庫
 MongoDB
 ASN.1
 （WBXML）


参考文献

 外部链接 
 BSON Specification
 BSON documentation on the MongoDB website
 bsondump tool included with MongoDB

Category:数据序列化格式
Category:面向文档的数据库
Category:JSON