请帮助提出Flatbuffers和CBOR协议的一些优点和缺点。这两种二进制格式都声称在他们的网站上很好,但我无法在两者之间做出一些很好的区别。
Flatbuffers:
优点:
坏处:
CBOR
优点:
坏处:
PS: 感觉像CBOR中的管理类型与平板缓冲器相比性能成本高,但是由于CBOR是标准化协议,如果这种差异不大,我倾向于选择它。请让我知道你们两个中的哪一个会推荐以及为什么。
我想你已经很清楚地把它拼写出来了。 FlatBuffer的优势在于无需解析/解包/分配即可访问数据,这在某些情况下可以带来严重的性能优势。但如果这对你没关系,例如协议缓冲区也可以正常工作。
强类型与动态类型的数据也很重要。如果我想要提前没有约束的通用数据存储,我只会使用后者。
顺便说一句,如果由于某种原因你更喜欢动态打字,但也希望获得就地访问的性能优势,实际上有一种格式将两者结合起来:https://google.github.io/flatbuffers/flexbuffers.html
FlatBuffers不是“专有”的。它可能是在谷歌设计的,但它是开源的,并且是许多其他公司所依赖的。
我为我的网站https://kwippe.com选择了CBOR - 我们使用它将所有的艺术作品和关键字数据存储为一个非常小的JSON结构中的压缩字符串,只需要几个属性来对文件进行分类。因此文件非常小,加载速度非常快。我用它来处理超过30,000个SVG文件,我事先将其转换为JSON。所有JSON都转换为字符串并通过字符串压缩库进行压缩,然后保存为我编码为CBOR的较小JSON对象的一部分。
我对这个CBOR系统的问题很少,而且设置比FlatBuffers和我看到的其他一些二进制解决方案要容易得多。