长期归档数据格式的二进制序列化(Protobuf、CBOR、MessagePack 等)的注意事项

ter*_*rse 3 format json protocol-buffers msgpack cbor

在对下一代科学数据格式的讨论中,已经确定需要某种类似 JSON 的数据结构(字段的逻辑分组)。此外,最好利用现有的编码而不是使用自定义的二进制结构。对于序列化格式有很多选择。对于那些具有此类编码经验的人的任何指导或见解表示赞赏。

要求:在我们的格式中,数据需要打包在记录中,通常不大于 4096 字节。每条记录必须可独立使用。数据必须在未来几十年内可读。数据归档和交换是通过存储和传输一系列记录来完成的。数据损坏必须只影响损坏的记录,使文件/流/对象中的所有其他记录都可读。

优先级(大致按顺序)是:

  • 稳定性,长期存档使用
  • 性能,主要是阅读
  • 存储不透明斑点的能力
  • 尺寸
  • 简单
  • 广泛的软件(又名库)支持
  • 流能力,在生成记录时传输和可读(如果可能)

我们已经开始研究 Protobuf ( Protocol Buffers RFC )、CBOR ( RFC ) 和一些MessagePack

那些有经验的人提供的任何可以帮助我们确定最合适的信息,或者更重要的是,避免陷阱和死胡同的信息,我们将不胜感激。

提前致谢!

ker*_*ert 5

迟到的答案但是:您可能想决定是否需要基于模式的格式或自描述格式。Amazon Ion概述讨论了这些设计决策的一些优缺点,以及其他ION与 Amazon Ion 完全不同)。

这些都不完全符合您的标准,但这些文章应该列出您可能需要考虑的一些标准。显然,实际上成为一个标准并被采用比任何技术设计标准都具有更高的寿命保证