mongodb:bson和json的区别
2023-09-27 14:27:10 时间
BSON(/ˈbiːsən/)是一种计算机数据交换格式,主要被用作MongoDB数据库中的数据存储和网络传输格式。它是一种二进制表示形式,能用来表示简单数据结构、关联数组(MongoDB中称为“对象”或“文档”)以及MongoDB中的各种数据类型。BSON之名缘于JSON,含义为Binary JSON(二进制JSON)。
BSON是由10gen开发的一个数据格式,目前主要用于MongoDB中,是mongodb的数据存储格式。
类型
键名为字符串,键值有以下种类:
- string
- integer(32或64位)
- double(64位IEEE 754浮点数)
- decimal128(128位IEEE 754-2008浮点数;Binary Integer Decimal变体),适合作为任意精度为34个十进制数字的数字载体,最大值近似10
- date(整数,自UNIX时间的毫秒数)
- byte array(二进制数组)
- 布尔(true或false)
- null
- BSON对象
- BSON数组
- JavaScript代码
- MD5二进制数据
- 正则表达式(Perl兼容的正则表达式,即PCRE,版本8.41,含UTF-8支持;与Python不完全兼容)
BSON的类型名义上是JSON类型的一个超集(JSON没有date或字节数组类型),但一个例外是没有像JSON那样的通用“数字”(number)类型。
举例
{
title:"MongoDB",
last_editor:"192.168.1.122",
last_modified:new Date("27/06/2011"),
body:"MongoDB introduction",
categories:["Database","NoSQL","BSON"],
revieved:false
}
{
name:"lemo",
age:"12",
address:{
city:"suzhou",
country:"china",
code:215000
} ,
scores:[
{"name":"english","grade:3.0},
{"name":"chinese","grade:2.0}
]
}
优点
- 更快的遍历速度
对JSON格式来说,太大的JSON结构会导致数据遍历非常慢。在JSON中,要跳过一个文档进行数据读取,需要对此文档进行扫描才行,需要进行麻烦的数据结构匹配,比如括号的匹配,而BSON对JSON的一大改进就是,它会将JSON的每一个元素的长度存在元素的头部,这样你只需要读取到元素长度就能直接seek到指定的点上进行读取了。 - 操作更简易
对JSON来说,数据存储是无类型的,比如你要修改基本一个值,从9到10,由于从一个字符变成了两个,所以可能其后面的所有内容都需要往后移一位才可以。而使用BSON,你可以指定这个列为数字列,那么无论数字从9长到10还是100,我们都只是在存储数字的那一位上进行修改,不会导致数据总长变大。当然,在MongoDB中,如果数字从整形增大到长整型,还是会导致数据总长变大的。 - 增加了额外的数据类型
JSON是一个很方便的数据交换格式,但是其类型比较有限。BSON在其基础上增加了“byte array”数据类型。这使得二进制的存储不再需要先base64转换后再存成JSON。大大减少了计算开销和数据大小。
但是,在有的时候,BSON相对JSON来说也并没有空间上的优势,比如对{“field”:7},在JSON的存储上7只使用了一个字节,而如果用BSON,那就是至少4个字节(32位)
相关文章
- MongoDB(一)安装与环境
- windows mongodb最常用命令简单归纳
- koa 基础(二十一)nodejs 操作mongodb数据库 --- 查询数据
- 95分布式电商项目 - MongoDB 简介
- spring boot集成mongodb最简单版
- MongoDB复制集数据是如何复制的
- 【MongoDB】应用场景
- MongoDB 比较运算符 $eq$gt
- 《Node应用程序构建——使用MongoDB和Backbone》一2.3 事件
- MongoDB可视化工具--Robo 3T 安装使用教程
- express+mongoDB(mLab)做一个todolist小项目
- 用java在客户端读取mongodb中的数据并发送至服务器
- mongoDB 删除集合后,空间不释放
- Mongodb 运维讲解
- MongoDB Http Interface
- 开启mongodb 的web
- Linux服务器安装MongoDB---tar包方式
- 分布式服务器框架之搭建C#+MongoDB+Redis初步