这个问题是宽泛的,下面是我的具体语境:
- 我只使用
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
生成的二进制文件?
谢谢你!
2条答案
按热度按时间pkbketx91#
您可以使用选项强制执行它,但不提供任何保证,而且格式会随时间 * 而更改,但 * erlang始终提供一个选项来读取旧格式以实现向后兼容。
更多信息在Erlang文档中。
yx2lnoni2#
在Support, Compatibility, Deprecations, and Removal页面上,没有特别提到外部术语格式。但是,分发协议是:
Erlang分布
Erlang节点可以在至少两个先前版本和两个后续版本之间进行通信。
由于分发协议依赖于外部术语格式,因此可以安全地假设
binary_to_term
能够从至少两个主要版本中读取数据。