它们是Java的Map的任何体面的磁盘实现吗?

我正在寻找java.util.Map的磁盘实现。 没有什么太花哨的东西,只是我可以指向一个目录或文件并让它以某种方式将其内容存储在那里。 有谁知道这样的事情?

您可以查看Disk-Backed-map项目。

在Java中实现磁盘支持映射的库

一个小型库,提供磁盘支持的映射实现,用于存储大量键值对。 对于非常简单的键/值对,地图实现(HashMap,HashTable)最大可以输出大约3-4百万个键/ GB内存,并且在大多数情况下,限制要低得多。 另一方面,DiskBacked地图可以存储在16Million(64bit JVM)到20Million(32bit JVM)密钥/ GB之间,而不管密钥/值对的大小。

如果您正在寻找基于key-object的结构来保存数据,那么NoSQL数据库是一个非常好的选择。 您会发现其中一些MongoDB或Redis可以扩展并执行大数据集,除了基于哈希的查找外,它们还提供有趣的查询和事务function。

实质上,这些类型的系统是Map实现。 并且实现自己的适配器实现java.util.Map来桥接它们应该不会太复杂。

MapDB( mapdb.org )完全符合您的要求。 除了磁盘支持的TreeMap和HashMap,它还为您提供了其他集合类型。

它的地图也是线程安全的,并且具有非常好的性能。

查看function

您可以使用简单的EHCache实现吗? EHCache的优点在于它可以非常简单地实现:-)

我认为你排除了序列化/反序列化实际的Map实例?

对于这个问题,这似乎是一个相对较新的开源解决方案,我已经使用过它,并且喜欢它到目前为止

https://github.com/jankotek/JDBM4

Chronicle Map是解决这个问题的现代和最快的解决方案。 它实现了ConcurrentMap接口并将数据保存到磁盘(在引擎盖下,它通过将Chronicle Map的内存映射到文件来完成)。