bson是由10gen开发的一个数据格式,目前主要用于mongoDB中,是mongoDB的数据存储格式。bson基于json格式,选择json进行改造的原因主要是json的通用性及json的schemaless的特性。

  bson主要会实现以下三点目标:

1.更快的遍历速度

  对json格式来说,太大的json结构会导致数据遍历非常慢。在json中,要跳过一个文档进行数据读取,需要对此文档进行扫描才行,需要进行麻烦的数据结构匹配,比如括号的匹配。 
  而bson对json的一大改进就是,它会将json的每一个元素的长度存在元素的头部,这样你只需要读取到元素长度就能直接seek到指定的点上进行读取了。

2.操作更简易

  对json来说,数据存储是无类型的,比如你要修改基本一个值,从9到10,由于从一个字符变成了两个,所以可能其后面的所有内容都需要往后移一位才可以。 
  而使用bson,你可以指定这个列为数字列,那么无论数字从9长到10还是100,我们都只是在存储数字的那一位上进行修改,不会导致数据总长变大。 
  当然,在mongoDB中,如果数字从整形增大到长整型,还是会导致数据总长变大的。

3.增加了额外的数据类型

  json是一个很方便的数据交换格式,但是其类型比较有限。 
  bson在其基础上增加了“byte array”数据类型。这使得二进制的存储不再需要先base64转换后再存成json,大大减少了计算开销和数据大小。 
  当然,在有的时候,bson相对json来说也并没有空间上的优势,比如对{“field”:7},在json的存储上7只使用了一个字节,而如果用bson,那就是至少4个字节(32位)

  目前在10gen的努力下,bson已经有了针对多种语言的编码解码包。并且都是Apache 2 license下开源的。并且还在随着mongoDB进一步地发展。

总上所述:

数据结构: 
  json是像字符串一样存储的,bson是按结构存储的(像数组 或者说struct)

存储空间 
  bson>json

操作速度 
  bson>json。比如,遍历查找:json需要扫字符串,而bson可以直接定位

修改: 
  json也要大动大移,bson就不需要。

参考:https://blog.csdn.net/amuseme_lu/article/details/6573912

最新文章

  1. android px,dp,sp大小转换工具
  2. Recylerview的使用系列教程
  3. 使用TCP的HelloServer
  4. Emberjs之Observer
  5. css之首字母大写 | 全部大写 | 全部小写 | text-transform
  6. ESB数据发布思路
  7. linux驱动系列之arm汇编
  8. windows10安装composer并解决和xdebug的冲突
  9. transform和transition
  10. TLD视觉跟踪算法(转)
  11. file_get_contents HTTP request failed! Internal Server Error
  12. hadoop 2.x 简单实现wordCount
  13. 微信小程序之初探(常见语法 VS vue)常见问题(点击不生效,数据绑定)
  14. Bootstrap 字体与图标
  15. php的imagick模块扩展
  16. FPGA小例子
  17. 数据库管理 trove openstack
  18. POI HSSFCellStyle 设置 Excel 单元格样式
  19. oracle中实现自增id
  20. ApiPost自动化测试基础之:流程测试

热门文章

  1. 20145210姚思羽《网络对抗技术》逆向及Bof基础实践
  2. (转)Windows下面安装和配置MySQL(5.6.20)
  3. EntityFramework 学习 一 DBEntityEntry
  4. linux 磁盘管理与文件系统
  5. Jquery + css 日期控件用法实例.zip
  6. R基础之批处理--R IN ACTION
  7. tomcat使用JDNI配置信息和使用信息。用于JDBC连接池
  8. Hough变换原理
  9. Poj 2411 Mondriaan's Dream(压缩矩阵DP)
  10. Hadoop十年