B.1 BSON
MongoDB中的文档是一个抽象概念,文档具体的存在形式取决于使用的驱动程序和编程语言。因为文档被广泛应用于MongoDB的通讯,因此还需要一种由MongoDB生态系统里所有驱动程序、工具和进程共享的文档。这种文档格式叫做Binary JSON(二进制JSON),或称BSON(没人知道其中的J去哪了)。
BSON是一种轻量的二进制格式,可用一串字节来描述任何MongoDB文档。数据库能够理解BSON格式,BSON也是文档存放于磁盘中的格式。
驱动程序在使用文档进行插入、查询或其他操作时,会先将文档编码成BSON格式,然后发送给服务器。同样地,服务器将文档返回给客户端时,也是以BSON格式进行的。驱动程序会先对此BSON数据进行解码,然后再发送给客户端。
BSON格式主要有以下三大优点。
高效
BSON可高效描述数据,而无需占用过多额外空间。在最坏的情况下,其效率比JSON低一点。而在最好的情况下(如存储二进制信息或大数据时),其效率要高出JSON很多。
可遍历性
在有些情况下,BSON以空间效率为代价,使自身更容易被遍历。例如,字符串值会被加上一个前缀用以表示长度,而不是依赖于中止符号来判断字符的末尾。这一特性在MongoDB服务器需对文档进行内省(introspect)时十分实用。
高性能
最后,BSON可快速进行编码和解码。它使用类C类型表示,这在大部分编程语言中可快速运作。
如需了解BSON的详细规范,请查看http://www.bsonspec.org。