我需要一个磁盘支持的Map结构才能在Java应用程序中使用.它必须具有以下标准:
记录键将是字符串或长整数.如上所述,读取将比写入更频繁,并且大多数读取将仅仅是检查密钥是否存在(即,不需要读取密钥相关数据).每条记录仅更新一次,记录不会被删除.
我目前使用Bdb JE但我正在寻找其他选择.
更新
从那以后,通过减少对二级密钥的依赖性,提高了现有BDB设置的查询性能.有些查询需要在两个辅助密钥上进行连接,并将它们组合成一个复合密钥,我在查找中删除了一个间接级别,这样可以很好地加快速度.
我在java中寻找一个持久的哈希结构,一个简单的键值存储,其中key是唯一的字符串,值是int.每次将现有密钥添加到商店时,密钥的值都会递增.
我需要这个很大 - 可能是500m - 10n键.我一直在评估tokyo-cabinet http://fallabs.com/tokyocabinet/javadoc/但不确定它的扩展程度 - 随着哈希的增长,插入时间似乎越来越长.
关于什么可能合适的任何想法?
谢谢
编辑:为了减少磁盘I/O,我将在内存中的HashMap中缓存数据,然后在缓存增长到一定大小时一次性更新持久性哈希.
编辑2:持久性的原因之一是我有限制的RAM,4GB,所以我无法在内存中加入大量的结构.