【发布时间】:2014-05-11 23:43:58
【问题描述】:
我打算将一些大对象存储到数据库 (BLOB) 中。在我看来,protobuf 是序列化/反序列化 BLOB 的最佳候选者之一。尽管它具有二进制格式,但它仍然易于阅读和更改其内容(字符串、整数等)。所以我需要某种数据验证,无论何时原始 BLOB 或修改(被黑客?被太聪明的用户?)。
一种可能性是在表中有一个专用字段,称为crc,计算 BLOB 的校验和并将其放在那里。但是当 crc 是 BLOB 本身的一部分时(在许多情况下)会好得多。
我可以在 protobuf 流的末尾添加 额外 个字节,但我必须删除它们(否则反序列化器会抛出异常“invalid field blablabla”)。
我可以将 protobuf 流放入包装器中,但解包/包装又是开销。
是否有一种简单且便宜的方法可以在 protobuf 流的末尾添加一些内容,以避免在反序列化期间需要额外的操作?在 XML 中,我可以添加注释。我认为 protobuf 中没有注释,但是如何将 1 或 2 个字节的 CRC 放在示例中?
【问题讨论】:
标签: protocol-buffers crc