因此,如果我理解正确的话,当我们想要更好的性能时,我们可以选择二进制格式(protobuf、thrift 或 avro),因为数据以更紧凑的方式表示,并且我们没有 JSON/XML 解析的额外开销(或者甚至 CSV)。
我可以理解,这在文件包含大量记录或通过网络连接发送数据的情况下非常有用。
我不清楚的是,二进制格式是否也可用于在 RDBMS 中保存单个记录。在我看来,这不可能是因为我们没有能力根据任何属性搜索记录,而 RDMBS 已经支持这些属性,例如MySQL。
那么,将二进制协议与 RDBMS 结合使用有哪些有用的用例(保留复制整个 RDBMS 以二进制格式进行备份)?
我不知道protobuf,thrift或avro的细节,但我假设它涉及(1)压缩,(2)以二进制形式存储,(3)读取时解压缩。
如果您没有千兆字节的数据,则建议的优化被认为是不成熟的。
文本(英语、JSON、CSV、XML、C 代码等)压缩率约为 3:1。 虽然这减少了所需的磁盘空间和网络成本,但它是以 CPU 进行压缩和解压缩为代价的。 XML 明显比 JSON 或 YAML 庞大。 (所以我从不“选择”XML。)
大多数图像格式以及 PDF 都已压缩。 因此,压缩它们会适得其反。