当前位置: 首页 > wzjs >正文

西安做网站公司必达平台网站建设制作

西安做网站公司必达,平台网站建设制作,seo零基础入门教程,自主设计和创建网站BSON 是什么 MongoDB 作为一款流行的文档数据库,采用 BSON 格式来支持文档模型。 BSON 全称是 Binary JSON,和 JSON 很像,但是采用二进制格式进行存储。相比 JSON 有以下优势: 访问速度更快:BSON 会存储 Value 的类…

BSON 是什么

MongoDB 作为一款流行的文档数据库,采用 BSON 格式来支持文档模型。

BSON 全称是 Binary JSON,和 JSON 很像,但是采用二进制格式进行存储。相比 JSON 有以下优势:

  • 访问速度更快:BSON 会存储 Value 的类型,不需要进行字符串类型到其他类型的转换。

    以整型 12345678 为例,JSON 需要将字符串转成整型,而 BSON 中存储了整型类型标志,并用 4 个字节直接存储了整型值。对于 String 类型,会额外存储 String 长度,这样解析操作也会快很多

  • 存储空间更低:如 Int32 统一采用 4 字节存储,Long 和 Double 采用 8 字节存储。

    还是以整型 12345678 为例,JSON 采用明文存储的方式需要 8 个字节,但是 BSON 对于 Int32 的值统一采用 4 字节存储,Long 和 Double 采用 8 字节存储。 当然这里说存储空间更低也分具体情况,比如对于小整型,BSON 消耗的空间反而更高;

  • 数据类型更丰富:BSON 增加了 BinData、TimeStamp、ObjectID、Decimal128 等类型。
JSONBSON
编码方式UTF-8 StringBinary
数据类型String, Boolean, Number, ArrayString, Boolean, Number (Integer, Float, Long, Decimal128…), Array, Date, Raw Binary
可读性Human and MachineMachine Only

BSON 存储格式

一条最简单的 BSON 文档,从前向后可以拆解成以下几个部分:

  1. 文档的总长度,占 4 个字节;
  2. 多个 BSONElement 按顺序排列,每个包含:
    • Value 类型(1 字节)
    • Key 的 C-String(以 \0 结尾)
    • Value 的二进制存储(如 Int32 占 4 字节等)
  3. 文档以 \0 结尾(EOO,End Of Object,1 字节)

常用类型举例

在这里插入图片描述

  • Int 类型:直接存储 4 字节二进制。
    在这里插入图片描述

  • Double 类型:占 8 字节,IEEE 754 标准。
    在这里插入图片描述

  • String 类型:头部有 4 字节长度,内容以 \0 结尾。
    需要注意的是,BSON 有 2 种 String 类型:

1、C-String: 一般用于 Key ,以 ‘\0’ 结尾,不存储长度信息;
2、String: 一般用于 Value,以’\0’ 结尾,头部会存储 4 字节的长度信息;

这样设计的好处是:

1、Key 一般长度较短,可以很快解析。不需要额外的 4 字节的存储开销和解析开销;
2、Value 一般长度较长,通过存储 4 字节的长度信息,可以明显加快解析速度;

  • 嵌套文档:头部有 4 字节长度,内容同普通文档。

    嵌套文档和普通文档一样,头部也包含了额外的 4 字节长度空间。比如下面的例子 {“b” : NumberInt(1)} 的存储长度为 12 字节。
    在这里插入图片描述

  • 数组类型:头部有 4 字节长度,每个元素有下标(‘0’ 开始)。

数组类型头部有 4 个字节存储长度,每个元素都对应有下标,从 ‘0’ 开始递增。
比如下面的例子中,“a.0” 表示第 1 个元素,值为 Double(1), “a.3” 表示第 4 个元素,值为 “4”.
在这里插入图片描述

BSON 的解析和封装

解析流程

  • 先用小端模式读取头部 4 字节,得到 BSON 文档长度。
  • 迭代获取 Value 类型、Key、Value,直到文档结束。
  • 参考 MongoDB 代码中的 BSONObj 和 BSONObjIterator。
    在这里插入图片描述

封装流程

  • 通过 BSONObjBuilder 流式生成 BSON 文档。
  • 修改字段时,通常会生成新的 BSON 文档。
  • 只有不改变二进制结构的更新才支持 UpdateInPlace。
    在这里插入图片描述

性能测试

BSON 在常用的 Double、Long、String 类型下,长度和编解码性能优于 JSON,但不同场景下差异较大。
在这里插入图片描述

1. 存储空间(长度)效率

对于 “长” double/int64 类型,BSON 在空间上,有一定优势。因为 BSON 使用固定 8 字节进行编码。 对于 “短” double/int64 类型,BSON 在空间上,存在劣势。还是因为 BSON 使用固定 8 字节编码的原因。 对于测试使用的 string 类型,BSON 并没有优势。

2. 编码(marshal)效率

对于测试使用的 “长” double 类型和 string 类型, BSON 均有10%-30% 的性能提升。 在 “短” double 类型上,BSON 和 JSON 性能相当。 对于 int64 类型,不管数据的长短,BSON 均有明显的性能下降。需要额外关注,并进一步分析。

3. 解码(unmarshal)效率

BSON 优势非常明显。对于测试使用的 “长” double/int64 类型有 100% 的性能提升,对于 string 类型有 200% 以上的性能提升。 对于 “短” double/int64 类型,也有20% 以上的性能提升。

http://www.dtcms.com/wzjs/537467.html

相关文章:

  • wix怎么做网页网站优化柳州
  • 汕头专业网站建设公司seo网站推广平台
  • 网站怎么提高权重免费的发帖收录网站
  • dedecms网站的源码如何安装空间域名
  • 2016网站备案浏览器主页网址
  • 官方网站welcome专业电商网站建设多少钱
  • 宣武富阳网站建设机加工外贸网站
  • 网站微信分享怎么做wordpress 头部导航栏
  • 什么叫门户类网站企业一号wordpress主题
  • 可以做卷子的网站广东省建设交易中心网站
  • wordpress是建站最快的网站地址栏
  • 哪些网站可宣传seo是什么服
  • 如何在自己网站上做支付宝吗学校的二级网站怎么建设
  • 提升了自己的网站网站网页模板
  • 建设一个网站怎么赚钱天津制作公司网站
  • 网站策划书如何做网站推广和网站优化
  • 用vue开发的网站南通技嘉做网站
  • 西安国际网站设计wordpress别名时间戳
  • 网站建设公司比较好的有哪些seo优化排名推广
  • 视频网站程序模板做网站如何使用数据库
  • 东莞网站建设制作服务网站开发过时了
  • 怎么做网站的seo网页制作技术基础教程
  • 企业开源建站系统软件开发管理工具
  • 购物网站二级页面模板撰写网络推广策划案
  • 汽车网站开发怎么恢复网站数据库
  • 公司网站建设哪家好企业网络规划设计与实现
  • 网站开发运营公司绩效提成方案网页制作培训班课程
  • wordpress数字链接出现404优化的意思
  • 昌平网站制作公司品牌网站建设c股j东大蝌蚪
  • 网站建设与管理专业介绍网红营销是什么意思