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

4
我正在考虑各种长期存储对象差异的方法(通常情况下需要存储30年)。其中一种选择是使用单个差异表来存储每个对象的更改。由于需要长时间存储差异,差异表会变得非常大,因此我考虑通过不将每个差异都存储为字符串来减少其大小。
差异表主要会存储.NET中的基元类型(如intlongdecimalstring等)。差异表将类似于:
| RowIdentifier | FieldIdentifier | NewValue | Timestamp |

协议缓冲区(protobuf-net或其他protobuf实现)是否适用于此类长期存储?

以现今技术的发展速度来看,准备一个能够持续30年的系统听起来相当乐观 :) - Sergey Kalinichenko
乐观一点,是的。但从法律上讲,即使在此期间数据被迁移到新系统,业务仍需要保证数据可用。 - Nathan
2个回答

4
答案是否定的。
考虑一下你想要什么以及你正在尝试应用的解决方案。
Protocol Buffers: 速度
您的需求:长期兼容性
30年的数据需要以高速读取的方式存储吗?很可能不需要。
我认为XML将是我的首选,因为它是“纯文本”,是“自描述”的典范,并且可以被未来的1000种编程语言阅读。如果存储是一个问题,GZIP也会与XML一同发挥作用。

2
此外,“增量表将变得非常大”。我可能是个未来主义者,但我有一个疯狂的想法,即可用的磁盘容量在未来也会增加。 - adelphus

3

我想没有任何理由不能这样做。如果绝对必要(你知道的,如果没有现有的语言可以使用),规范文档已经被记录下来,并且相当简单。

可附加性使其在增量方面非常有用。

那么:它会工作吗?是的

然而,如果问题是“我是否应该这样做?” - 需要更多信息。可能是肯定的,也可能是否定的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接