java - 文件支持的 Java 映射

标签 java oracle-coherence randomaccessfile

是否有一种简单的方法来获得文件支持的 map ?

map 内容定期更新,有删减的,也有新增的。为了保证 map 中数据的安全,需要持久性。我知道数据库是理想的,但遗憾的是,由于限制,无法使用数据库。

我试过:

每次更新时将 map 的全部内容写入文件。这行得通,但显然有一个缺点,即每次都会重写整个文件, map 的内容预计从几个条目到 ~2000 不等。还有一些并发问题(即乱写会导致数据丢失)。

使用 RandomAccessFile并保留指向每个文件的起始字节的指针,以便可以使用 seek() 查找每个条目。这再次与以前有类似的问题,更改条目将涉及更新它之后的所有引用。

理想情况下,该解决方案将涉及某种缓存,以便只有最近访问的条目保留在内存中。

有这样的事吗?还是可以通过第三方 jar 获得?有人建议使用 Oracle Coherence,但我似乎找不到太多关于如何实现它的信息,而且它似乎有点像用大锤敲螺母。

最佳答案

你可以看看MapDB这是出于这个目的而创建的。

MapDB provides concurrent Maps, Sets and Queues backed by disk storage or off-heap-memory. It is a fast and easy to use embedded Java database engine.

关于java - 文件支持的 Java 映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17507250/

相关文章:

java - 类似于 Java 的#warning 指令?

java - coracle 一致性错误 "No storage-enabled nodes exist for service DistributedSessions"

java - Oracle Coherence 中的参数化搜索返回空列表

java - 操作 JSON 文件并在操作完成后将其解析为对象 - 在内存中

Java RandomAccessFile 从开始截断

java - Java中用于填充表格的for循环

java - 序列化:将字节转换为字节?

java - 一致性缓存 | ConcurrentHashMap 入,HashMap 出

java - 使用字节数组创建新字符串会产生奇怪的结果

java - 实现 Prim 算法的策略模式