bson
bson
是由10gen开发的一个数据格式
,目前主要用于mongoDB
中,是mongoDB
的数据存储格式,bson
基于json
格式
bson主要会实现以下三点目标:
- 更快的遍历速度
bson
对json
的一大改进就是,它会将json
的每一个元素的长度
放在元素的头部
,这样你只需要读取到元素长度就能直接seek到指定的点上进行读取了。 - 操作更简易
对json
来说,数据存储是无类型的,比如你要修改基本一个值,从9到10,由于从一个字符变成了两个,所以可能其后面的所有内容都需要往后移一位才可以。
而使用bson
,你可以指定这个列为数字列,那么无论数字从9长到10还是100,我们都只是在存储数字的那一位上进行修改,不会导致数据总长变大。
当然,在mongoDB中,如果数字从整形增大到长整型,还是会导致数据总长变大的。 - 增加了额外的数据类型
bson
在其基础上增加了byte array
数据类型。这使得二进制的存储不再需要先base64
转换后再存成json
,大大减少了计算开销和数据大小。
当然,在有的时候,bson
相对json
来说也并没有空间
上的优势,比如对 {“field”:7},在json
的存储上7只使用了1个字节,而如果用bson
,那就是至少4个字节 (32位)
综上所述:
- 数据结构:
json
是像字符串
一样存储的,bson
是按结构
存储的(像数组 或者说struct) - 存储空间:
bson > json - 操作速度:
bson > json
(比如,遍历查找:json需要扫字符串,而bson可以直接定位) - 修改:
json也要大动大移,bson就不需要。