dimbin海量数据高性能序列化方案
dimbin,针对大量数据网络传输设计的序列化方案,用于储存多维数组,通过直接内存操作实现高于 JSON 多个数量级的性能和更小的传输体积。
dimbin 为多维数组而设计, 因此传入的数据结构必须为多维数组, 数组维数没有上限, 每一维度数组的元素个数上线为 2^32 ,维度和数组元素个数受运行环境和设备限制。
数组的元素支持以下数据类型:
- number: Int8, UInt8, Int16, UInt16, Int32, UInt32, Float32, Float64
- string
- boolean
默认情况下, 所有的数据将使用 Float32 格式进行保存. 如果需要指定数据格式, 请先转换成 TypedArray. 如需要处理字符串和布尔值, 请使用对应的接口预先转换成 TypedArray。
使用方法
C#
Javascript
npm install --save dimbin
import DIMBIN from 'dimbin' // v3
// import DIMBIN from 'dimbin/v2' // old version
const data = [
[0, 1, 2, 3], // 普通数值数组 ✅
new Int16Array([1, 2, 3, 4]), // TypedArray ✅
[
// 更高维度数组 ✅
[0, 1, 2],
[0, 1, 2, 3, 4],
],
DIMBIN.stringsSerialize(['a', 'bc', '']), // Array<string>
DIMBIN.booleansSerialize([true, false, true, true]), // Array<boolean>
]
// 序列化为ArrayBuffer
const bin = DIMBIN.serialize(data)
// 反序列化为 Array<TypedArray>
const dim = DIMBIN.parse(bin)
dim[3] = DIMBIN.stringsParse(dim[3])
dim[4] = DIMBIN.booleansParse(dim[4])
/*
[
Float32Array{0, 1, 2, 3},
Int16Array{1, 2, 3, 4},
[
Float32Array{0, 1, 2},
Float32Array{0, 1, 2, 3, 4},
],
['a', 'bc', ''],
[true, false, true, true]
]
*/
评论
ScalavroScala 数据序列化
Scalavro是一个使用反射技术实现的Avro库。Avro是一个数据序列化系统,设计用于支持大批量数据交换的应用。它的主要特点有:支持二进制序列化方式,可以便捷,快速地处理大量数据;动态语言友好,A
ScalavroScala 数据序列化
0
SF1R海量数据引擎
什么是SF1RSF1R是一个分布式的存储搜索一体化海量数据引擎。SF1R来自于iZENECloud团队多年的研发成果,并且已经在商业网站上经受住了严苛的考验。2014年,iZENECloud团队把SF
SF1R海量数据引擎
0
Swifter.Json功能强大、高性能的 JSON 序列化/反序列化库
功能强大、高性能的 JSON 序列化和反序列化库,适用于 .Net 平台。特性(1): 支持深度复杂
Swifter.Json功能强大、高性能的 JSON 序列化/反序列化库
0
Swifter.Json功能强大、高性能的 JSON 序列化/反序列化库
功能强大、高性能的JSON序列化和反序列化库,适用于 .Net平台。特性(1): 支持深度复杂的对象结构且易于使用。(2): 用 $ref 表示重复和循环引用的序列化和反序列化。(3): 目前唯一支持
Swifter.Json功能强大、高性能的 JSON 序列化/反序列化库
0