我正在Java中寻找一个持久的哈希结构,这是一个简单的键值存储,其中key是唯一的字符串,value是一个int。每次将现有密钥添加到存储中时,密钥的值将增加。

我需要它很大-可能有5亿-10亿个密钥。我一直在评估tokyo-cabinet http://fallabs.com/tokyocabinet/javadoc/,但不确定它的扩展程度-随着哈希值的增加,插入时间似乎越来越长。

关于什么合适的任何想法?

谢谢

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

Edit2:持久性的原因之一是我的RAM有限,只有4GB,因此我无法在内存中放入较大的结构。

最佳答案

我觉得Megamap是您要寻找的:http://megamap.sourceforge.net/。这是Megamap主页的简短描述:

MegaMap是Java实现的
可以存储
无限数量的数据,仅受限制
由可用磁盘空间量决定。
地图中存储的对象是
坚持到磁盘。好的表现是
通过内存中的缓存实现。的
MegaMap可以实用
原因,被认为是一张地图
具有无限存储空间的实施
空间。

07-26 06:24