代码之家  ›  专栏  ›  技术社区  ›  Richard H

Java:大型持久散列结构?

  •  7
  • Richard H  · 技术社区  · 14 年前

    我需要这个相当大-可能5亿-10亿的钥匙。我一直在评估东京内阁 http://fallabs.com/tokyocabinet/javadoc/ 但不确定它的伸缩性如何-随着散列的增长,插入时间似乎越来越长。

    有什么合适的主意吗?

    谢谢

    为了减少磁盘I/O,我将在内存HashMap中缓存数据,然后在缓存增长到一定大小时一次性更新持久散列。

    持久性的原因之一是我的内存有限,4GB,所以我无法将一个大的结构放入内存。

    5 回复  |  直到 14 年前
        1
  •  5
  •   Skarab    14 年前

    我认为Megamap是您需要的: http://megamap.sourceforge.net/ . 以下是Megamap主页上的简短说明:

    MegaMap是 可以存储 数据量无限,仅限 存储在地图中的对象是 保存到磁盘。好的表现是 通过内存缓存实现。这个 MegaMap可以,所有实用的 理由,被认为是一张地图 无限制存储的实现 空间。

        2
  •  2
  •   Tony Ennis    14 年前

        3
  •  2
  •   Fred Foo    14 年前

    你看过Berkeley BD Java版吗?他们有一个 Collections-compatible API StoredMap ).

        4
  •  0
  •   romacafe    14 年前

    如果我理解正确的话, Redis 可能是个选择。您可以发出INCR[key]命令以原子方式递增与该键相关的值。如果密钥不存在,则将其设置为0,然后递增(结果为1)。根据 docs

    Redis能够将其自身持久化到文件中,并且您可以控制如何实现这一点的参数。

        5
  •  0
  •   Emil    14 年前