什么是最有效的erlang模块,用于在Term下存储大量的键/ Term-Values

gex*_*tra 5 erlang

关注读取性能,我想创建一个术语,如Orddict或Proplist,其中包含大量(100,000个)条目,每个条目包含一个ID和一个Term值.这个封装术语应该能够返回存储在其键下的值,就像Orddict能够做到的那样.

example:

 K001 - Term001
 K002 - Term002
 K003 - Term003
Run Code Online (Sandbox Code Playgroud)

包含整个集合的结果Term需要从一个函数传递到另一个函数,用于多个计算目的,而不将其存储在持久性存储中以避免磁盘I/O. 我还选择在此阶段不使用内存缓存来避免此时的架构复杂性,因此我的重点是让所有这些都只是密钥搜索.

Orddicts是密钥排序的,与普通的Dict相比,它增强了密钥的搜索.我不知道任何其他Erlang模块可以在其Term中嵌入更有效的索引机制.

对于比Orddict更好的方法的任何建议?

Mar*_*all 8

实际上,它orddict是作为排序列表()实现的,因此它在插入和查找方面都表现不佳,尤其是当按升序插入键时.远离它; 它不适用于您的用例.dict是一种基于哈希的数据结构,提供可靠的插入/​​查找性能.如果键的顺序对您很重要,请考虑使用基于树的映射(例如gb_trees),因为您可以通过采用有序树步进来提取有序键序列.