【发布时间】:2013-07-06 21:18:18
【问题描述】:
有没有一种简单的方法来获得文件支持的地图?
地图的内容会定期更新,有的被删除,也有的被添加。为了保证地图中的数据安全,需要持久性。我知道数据库是理想的,但遗憾的是,由于限制,无法使用数据库。
我试过了:
每次更新时将地图的全部内容写入文件。这行得通,但显然有一个缺点,即每次都重写整个文件,映射的内容预计从几个条目到 ~2000 不等。还有一些并发问题(即乱写会导致数据丢失)。
使用RandomAccessFile 并保留指向每个文件起始字节的指针,以便可以使用 seek() 查找每个条目。同样,这与以前有类似的问题,更改条目将涉及更新其后的所有引用。
理想情况下,该解决方案将涉及某种缓存,以便仅将最近访问的条目保留在内存中。
有这种事吗?还是可以通过第三方 jar 获得?有人建议使用 Oracle Coherence,但我似乎找不到太多关于如何实现它的信息,这似乎有点像用大锤敲碎坚果。
【问题讨论】:
-
也许您可以改用H2 Database?它是一个纯 Java 数据库。它可以驻留在内存中,也可以写入磁盘到单个文件中。
标签: java oracle-coherence randomaccessfile