是适合长期序列化的协议缓冲区吗?

时间:2012-02-29 16:01:53

标签: .net serialization protocol-buffers protobuf-net

我正在考虑长时间在物体上存储增量的各种方法(30年是常见的情况)。一种选择是使用单个增量表来存储每个对象的更改。因为增量需要存储这么长时间,所以delta表会变得非常大,所以我考虑的选项是至少将它配对一点,不要将每个delta存储为字符串。

delta表主要存储来自.NET的基元(intlongdecimalstring等。增量表看起来像

| RowIdentifier | FieldIdentifier | NewValue | Timestamp |

协议缓冲区(protobuf-net或其他一些protobuf实现)是否适合这种长期存储?

2 个答案:

答案 0 :(得分:3)

答案是否。

考虑一下您的要求以及您尝试应用的解决方案。

  • 协议缓冲区:速度
  • 您的需求:长期兼容性

30年的数据需要以能够高速读取的方式存储吗?可能没有。

我认为XML将是我的第一选择,因为它是“明文”,它是“自我描述”的缩影,并且将来可以被1000种不同的编程语言阅读。如果存储是一个问题,GZIP还将有一个带XML的字段日。

答案 1 :(得分:3)

我看不出它不会有任何原因。如果绝对必要(你知道,如果现有的语言都不起作用),那么规范就会记录下来并且非常简单。

可附加使得它对delta也非常有用。

所以:它会起作用吗?是

但是,如果问题是“我应该吗?” - 如果需要更多信息。可能是的,可能没有。