相关文章推荐
个性的大白菜  ·  得分超奥尼尔,篮板超邓肯,助攻超保罗,约基奇 ...·  11 月前    · 
愉快的单车  ·  沈阳地铁7号线和1号线交汇处规划大调整,涉及 ...·  1 年前    · 
英俊的键盘  ·  惊!!紫光集团前联席总裁刁石京失联_董事长_ ...·  1 年前    · 
英勇无比的松鼠  ·  新乡市教育局关于公布第二批家庭教育专家评选结 ...·  1 年前    · 
干练的薯片  ·  小时候老人用来打手镯的“银元”,你家还有吗, ...·  1 年前    · 
Code  ›  k-k-v映射的最优数据结构开发者社区
云计算 数据结构 哈希表
https://cloud.tencent.com/developer/ask/sof/780692
爱喝酒的荔枝
1 年前
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
提问

问 k-k-v映射的最优数据结构

Stack Overflow用户
提问于 2020-06-24 11:54:07
EN

我有一个包含14亿条记录的大型映射表。数据结构现在类似于 {<Key1, Key2>: List<Value>} 。

Key1 和 Value 来自同一个集合,比方说 A ,有大约1亿个独特的元素。

Key2 来自另一个集合,比方说 B ,只有32个独特的元素。

List<Value> 是可变长度列表,最多包含200个元素。

谁能推荐一些更好的数据结构或检索算法,以便快速在线检索和适当的空间消耗。

1 47 0 票数 0
EN
dictionary
data-structures
data-retrieval

回答 1

Stack Overflow用户

发布于 2020-06-24 16:01:03

您可以使用一个可扩展的哈希表来实现以下目的:

https://en.wikipedia.org/wiki/Extendible_hashing

如果您不想自己实现它,那么可以尝试使用Redis或Memcached之类的东西作为持久哈希表的外部实现。

要创建散列键,只需组合Key1和Key2 (连接?xor?)并将其用作散列键。

如果在RAM中,请使用带有动态数组的哈希表作为列表。这应该可以很好地工作。

除非您关心键的顺序,否则哈希表应该可以完成这项工作。

如果你想把所有的Key1s都关联到一个Key2上,你也可以通过维护一个单独的哈希表来实现。或者,如果你真的实现了这一点,你可以链接这些键,这样所有包含Key2的键就形成了一个链表。

票数 0
EN
页面原文内容由 Stack Overflow 提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62547333

复制

Copyright © 2013 - 2024 Tencent Cloud.

All Rights Reserved. 腾讯云 版权所有

 
推荐文章
个性的大白菜  ·  得分超奥尼尔,篮板超邓肯,助攻超保罗,约基奇的MVP稳了_腾讯新闻
11 月前
愉快的单车  ·  沈阳地铁7号线和1号线交汇处规划大调整,涉及创新型产业用地、宅地等!_建设_地块
1 年前
英俊的键盘  ·  惊!!紫光集团前联席总裁刁石京失联_董事长_信息化_职务
1 年前
英勇无比的松鼠  ·  新乡市教育局关于公布第二批家庭教育专家评选结果的通知 - 部门文件-法定主动公开内容-政府信息公开 - 新乡市教育局
1 年前
干练的薯片  ·  小时候老人用来打手镯的“银元”,你家还有吗,现在价值不凡!
1 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号