文章目录加载中

BSON: Binary JSON 研究

一种数据交换格式,用于 MongoDB 的数据存储和网络格式传输,也可以用于任何支持二进制和 BSON 协议的服务。

# 对比 JSON

可以理解为:二进制的 JSON。

借助官方 SDK,可以用类似 JSON 的方式描述数据结构,并且将其编译为二进制。

const BSON = require("bson");
const Long = BSON.Long;

// Serialize a document
const doc = { long: Long.fromNumber(100), name: "dongyuanxin", arr: [1, 2] };
// Output: data: <Buffer 41 00 00 00 12 6c 6f 6e 67 00 64 00 00 00 00 00 00 00 02 6e 61 6d 65 00 0c 00 00 00 64 6f 6e 67 79 75 61 6e 78 69 6e 00 04 61 72 72 00 13 00 00 00 10 ... 15 more bytes>
const data = BSON.serialize(doc);
console.log("data:", data);

// Deserialize the resulting Buffer
const doc_2 = BSON.deserialize(data);
// Output: doc_2: { long: 100, name: 'dongyuanxin', arr: [ 1, 2 ] }
console.log("doc_2:", doc_2);

# 为什么使用 BSON?

  • 更快的遍历速度:不需要对 json 进行字符串解析,而是直接保存元素长度在头部,直接进行seek()即可
  • 修改数据移动更少:对于 json,将 9 改为 10,字符变多,后面数据都需要移位;bson 可以指定类型(如代码所示),从而提前开辟空间。
  • 数据类型更全面

# 参考链接

本文来自心谭博客:xin-tan.com,经常更新web和算法的文章笔记,前往github查看目录归纳:github.com/dongyuanxin/blog