我对我公司最好的数据交换格式做了一些研究。目前我比较了Protocol Buffers和Apache Avro。 请求在我们的体系结构中的组件之间进行交换,但只是逐个交换。而我的印象是Avro在逐个传输时比协议缓冲区大得多。在avro文件中,模式总是存在,我们的请求有很多可选字段,所以即使我们的数据很小,我们的模式也很大。 但我不知道我是否错过了什么,它写的比avro更小,但对我们来说似乎我们必须在一个文件中放入一千个请求才能拥有PBuffers和avro' s大小等于。 我错过了什么或者我的想法是真的吗? 感谢
答案 0 :(得分:1)
两种序列化格式产生基本相同的大小并不奇怪。这些不是压缩算法,它们只是结构。对于任何体面的格式,绝大多数数据都将是您的数据;它周围的结构(根据序列化格式而变化的部分)应该可以忽略不计。无论周围的序列化格式如何,您的数据的大小都不会改变。
另请注意,声称一种格式总是小于另一种格式的人要么撒谎,要么不知道他们在谈论什么。每种格式都有优点和缺点,因此“最佳”格式完全取决于用例。使用您自己的数据测试每种格式以找出最适合您的格式非常重要 - 听起来您就是这么做的,这太棒了!如果Protobuf和Avro在您的测试中出现相同的大小,那么您应该根据其他因素进行选择。例如,您可能希望测试编码/解码速度。