【问题标题】:Issue with Hash Map Space and Performance哈希映射空间和性能问题
【发布时间】:2012-03-30 14:08:23
【问题描述】:

我必须在我的 HashMultiMap 中存储超过 1 亿个键值(键可以有多个值)。谁能帮我存储和搜索哪个更快:

1) Berkeley DB

2) Tokyo Cabinet

3)H2

4) EhCache

5) 或其他

还有一点,那些性能是否与内存中的哈希映射大致相同?一点指导会更有帮助。谢谢。

注意:有关其中任何一项的信息也很有帮助。

【问题讨论】:

  • 您的键/值大小是多少?它们有什么结构?
  • @JeffFoster,键/值是整数。
  • 您的整数是否随机分布在 32 位空间中?我不明白为什么你不能将它全部存储在内存中(使用 MultiMap 的手写未装箱实现)。或者你可以试试 Redis。
  • @JeffFoster,是的,已分发。我必须为我的 JVM (2GB) 提供非常有限的内存。如果我要存储 1 亿个 int,则需要 3 GB 以上。

标签: java ehcache h2 berkeley-db tokyo-cabinet


【解决方案1】:

我推荐Redis。它比其他存储更多的数据结构(例如,它支持地图和集合)并且需要很少的努力就可以开始使用。太不可思议了 使用简单,有一个很棒的Java API

我将首先查看函数 here,它允许您将键与一组值相关联。

【讨论】:

  • 非常感谢。根据您的经验,Redis 的性能是否与内存中的哈希映射大致相同?
  • 这取决于您的情况。我从来没有遇到过 Redis 的性能问题。最好的建议是拼凑一个原型,然后看看会发生什么。另见redis.io/topics/benchmarks
【解决方案2】:

我会看看leveldb,因为它声称是faster than Kyoto Cabinet。其他有趣的库是 Kyoto CabinetJDBM3

这些是低级库(不支持关系查询或 SQL)。有些提供交易支持,但我不确定您是否需要它。尽管如此,内存中的哈希映射更快。

【讨论】:

    猜你喜欢
    • 2016-04-24
    • 2014-03-12
    • 1970-01-01
    • 2018-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-04
    • 2020-07-08
    相关资源
    最近更新 更多