Erlang's 'binary_to_term'是否总是能够读取任何以前生成的binary 'term_to_binary'版本?

ecfsfe2w  于 2022-12-08  发布在  Erlang
关注(0)|答案(2)|浏览(174)

这个问题是宽泛的,下面是我的具体语境:

  • 我只使用term_to_binary将二进制文件转储到postgresql,然后用binary_to_term读回
  • 我不使用term_to_binary来生成任何标识符或比较数据。
  • 我的数据类型是only(来自Elixir)、map、list、string、number、nil、boolean。(即没有函数、没有原子、没有结构)

为什么不是jsonb呢?它慢得离谱。Erlang项<->二进制要快得多。(超过10倍)
binary_to_term是否总是能够读取由任何以前版本的term_to_binary生成的二进制文件?
谢谢你!

pkbketx9

pkbketx91#

您可以使用选项强制执行它,但不提供任何保证,而且格式会随时间 * 而更改,但 * erlang始终提供一个选项来读取旧格式以实现向后兼容。
更多信息在Erlang文档中。

yx2lnoni

yx2lnoni2#

Support, Compatibility, Deprecations, and Removal页面上,没有特别提到外部术语格式。但是,分发协议是:

Erlang分布

Erlang节点可以在至少两个先前版本和两个后续版本之间进行通信。
由于分发协议依赖于外部术语格式,因此可以安全地假设binary_to_term能够从至少两个主要版本中读取数据。

相关问题