2014-11-25 125 views
0

我做了一些关于什么是我公司最好的数据交换格式的研究。目前我比较Protocol Buffers和Apache Avro。 请求正在我们的体系结构中的组件之间交换,但只能一个接一个地交换。而且我的印象是,Avro在运输时只能一个接一个地比Protocol Buffers大得多。在avro文件中,模式总是存在的,我们的请求有很多可选字段,所以即使我们的数据很小,我们的模式也是很大的。 但我不知道我是否错过了一些东西,它比avro更小,但对我们来说,似乎我们必须将一千个请求放在一个文件中,以使PBuffers和avro的大小相等。 我错过了什么,或者我的想法是真的吗? 谢谢Avro尺寸太大?

回答

1

这并不奇怪,两个序列化格式会产生基本相同的大小。这些不是压缩算法,它们只是结构。对于任何像样的格式,绝大多数数据将会是您的数据;它周围的结构(这是根据序列化格式而变化的部分)应该可以忽略不计。 您的数据的大小根本不会改变,无论其周围的序列化格式如何。

还要注意,任何声称一种格式总是小于另一种格式的人是说谎或不知道他们在说什么。每种格式都有优点和缺点,所以“最佳”格式完全取决于用例。使用自己的数据测试每种格式以查明哪种最适合您 - 这听起来像是您正在做的那样,这非常棒!如果Protobuf和Avro在您的测试中出现了相同的尺寸,那么您应该根据其他因素进行选择。例如,您可能想要测试编码/解码速度。