我有一个包含14亿条记录的大型映射表。数据结构现在类似于{<Key1, Key2>: List<Value>}
。
Key1
和Value
来自同一个集合,比方说A
,有大约1亿个独特的元素。
Key2
来自另一个集合,比方说B
,只有32个独特的元素。
List<Value>
是可变长度列表,最多包含200个元素。
谁能推荐一些更好的数据结构或检索算法,以便快速在线检索和适当的空间消耗。
发布于 2020-06-24 16:01:03
您可以使用一个可扩展的哈希表来实现以下目的:
https://en.wikipedia.org/wiki/Extendible_hashing
如果您不想自己实现它,那么可以尝试使用Redis或Memcached之类的东西作为持久哈希表的外部实现。
要创建散列键,只需组合Key1和Key2 (连接?xor?)并将其用作散列键。
如果在RAM中,请使用带有动态数组的哈希表作为列表。这应该可以很好地工作。
除非您关心键的顺序,否则哈希表应该可以完成这项工作。
如果你想把所有的Key1s都关联到一个Key2上,你也可以通过维护一个单独的哈希表来实现。或者,如果你真的实现了这一点,你可以链接这些键,这样所有包含Key2的键就形成了一个链表。
https://stackoverflow.com/questions/62547333
复制相似问题