全文共5703字,预计学习时长17分钟
来源:Pexels
原始互联网对象符号(RION)是一种快速、紧凑、通用的数据格式。你可能会想:“又一个数据格式。”它和CSV、 XML、JSON、YAML、ProtoBuf、MessagePack、CBOR、亚马逊的ION、 ApacheAvro 或者ASN.1有什么不同呢?稍后我会在本文中解释清楚,但首先必须介绍一下RION的背景信息。
用于高效数据交换和数据存储的数据格式
RION由Nanosai研发,Nanosai是一家分布式系统研发公司,持“开放标准”——这意味着欢迎所有人使用。设计RION的最初目的是用于高效数据交换。然而现在扩展了目标用例,使其还包括结构化数据的高效存储。
相信这两个用例是紧密相关的,所以这个扩展是有意义的。它们的主要区别在于,通过网络发送的信息通常具有固定的大小(至少发送一次),而文件的大小可能会随时间推移而增长。
实际上,我们使用RION作为网络协议的消息编码和数据流存储引擎的记录格式。因此,我们对RION的数据交换和数据存储进行了压力测试。
通用的数据格式
从一开始,我们想使RION尽可能的通用化,这意味着可以对多种结构化数据进行编码。愿景在于,通过使用更加通用的数据格式,开发人员将无需经常在不同数据格式间转换。越经常地默认使用RION,就越好。
很明显,没有哪种数据格式能完美适用于所有数据类型。对于如视频、音频、强格式化文档等特定域的编码, MP3、MP4或PDF等格式可能更合适。为了适应这种情形,RION被设计为能够嵌入二进制数据和其他结构化数据(如元数据)。
RION的设计还允许在内置数据类型不足时通过自定义数据类型对其进行扩展。
来源:Pexels
支持的数据结构
要使RION真正通用,RION必须能表示各种各样的数据结构。目前,RION可以表示:
二进制数据
键入数据字段(布尔型、整型、浮点型、文本、日期时间)
单个字段
无界字段流
字段(数组)的有界列
表格数据(如CSV文件,只包含一次列名)
对象和映射(键-值对)
对象图(具有嵌套对象的对象)
可将这些数据结构组合起来以创造更高级的结构。例如,可以在表中嵌套表,或者在表