2014-11-25 88 views
0

我做了一些關於什麼是我公司最好的數據交換格式的研究。目前我比較Protocol Buffers和Apache Avro。 請求正在我們的體系結構中的組件之間交換,但只能一個接一個地交換。而且我的印象是,Avro在運輸時只能一個接一個地比Protocol Buffers大得多。在avro文件中,模式總是存在的,我們的請求有很多可選字段,所以即使我們的數據很小,我們的模式也是很大的。 但我不知道我是否錯過了一些東西,它比avro更小,但對我們來說,似乎我們必須將一千個請求放在一個文件中,以使PBuffers和avro的大小相等。 我錯過了什麼,或者我的想法是真的嗎? 謝謝Avro尺寸太大?

回答

1

這並不奇怪,兩個序列化格式會產生基本相同的大小。這些不是壓縮算法,它們只是結構。對於任何像樣的格式,絕大多數數據將會是您的數據;它周圍的結構(這是根據序列化格式而變化的部分)應該可以忽略不計。 您的數據的大小根本不會改變,無論其周圍的序列化格式如何。

還要注意,任何聲稱一種格式總是小於另一種格式的人是說謊或不知道他們在說什麼。每種格式都有優點和缺點,所以「最佳」格式完全取決於用例。使用自己的數據測試每種格式以查明哪種最適合您 - 這聽起來像是您正在做的那樣,這非常棒!如果Protobuf和Avro在您的測試中出現了相同的尺寸,那麼您應該根據其他因素進行選擇。例如,您可能想要測試編碼/解碼速度。