Java:大型持久哈希结构?

标签 java hash persistent

我正在寻找 java 中的持久哈希结构,一个简单的键值存储,其中键是一个唯一的字符串,值是一个 int。每次将现有 key 添加到商店时, key 的值都会递增。

我需要它非常大 - 可能有 500m - 10 亿个 key 。我一直在评估 Tokyo Cabinet http://fallabs.com/tokyocabinet/javadoc/但不确定它的扩展性如何 - 插入时间似乎随着散列的增长而变长。

关于什么可能是合适的有什么想法吗?

谢谢

编辑:为了减少磁盘 I/O,我将在内存中的 HashMap 中缓存数据,然后在缓存增长到一定程度时一次性更新持久哈希大小。

Edit2: 持久化的原因之一是我的 RAM 有限,只有 4GB,所以我无法将大结构放入内存。

最佳答案

我认为 Megamap 就是您要找的:http://megamap.sourceforge.net/ .以下是 Megamap 主页上的简短描述:

MegaMap is a Java implementation of a map (or hashtable) that can store an unbounded amount of data, limited only by the amount of disk space available. Objects stored in the map are persisted to disk. Good performance is achieved by an in-memory cache. The MegaMap can, for all practical reasons, be thought of as a map implementation with unlimited storage space.

关于Java:大型持久哈希结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3832622/

相关文章:

java - 如何通过 java 打开现有文件,如 .docx、.txt、.pptx?

perl - 如何在Perl中按键对哈希的哈希排序?

java - 对于可变长度数据应考虑哪些哈希算法

java - Apache Ignite 持久存储类版本的推荐方式

swift - UISwitch 未解除分配

java - hibernate中具有相同主键的一对一单向映射

java runtime.freememory() 与 jconsole 输出不匹配

java - 将 Spring REST 服务与 Wicket 结合起来

java - 创建帐户时,如何将密码哈希安全地存储在内存中?

Linux 内核模块、配置和持久状态的概念