内存数据结构,用于将数十亿字典键紧密映射到值

时间:2010-10-27 01:33:32

标签: data-structures

我有数十亿条记录(键/值),我想紧凑地存储在内存中,我需要支持的唯一操作是按键查找值。键和值都是小字符串。最重要的是如何压缩数据结构;它应该比简单的关联数组更深入地使用键的内部结构。例如,将键“apple”,“apply”和“apron”映射到值“1”,“2”和“3”应该以某种方式被压缩。我正在寻找什么样的数据结构?

3 个答案:

答案 0 :(得分:3)

听起来你想要一个trie - 它通过只存储一次前缀来实现你所描述的那种“压缩”。

我认为你有足够的内存来存储“数十亿”的密钥,当然,你需要在64位系统上才能在第一时间处理这么多项目。

答案 1 :(得分:2)

您可以尝试Trie。它从关键字符串本身形成树结构。不会有空位置(如在哈希映射中)。

答案 2 :(得分:1)

即使您处理的数据是小字符串,您确实确定您在内存中需要这么多数据吗?这可能很容易达到千兆字节的内存,并且可能不会经常查询大多数数据。

精心调整的数据库可能足以满足您的需求。