3

语境

这纯粹是为了教育目的。我想写一个原始数据库。重点不在于表现;但只是数据库背后的原则。我已经有关于锁定/互斥体/事务的材料。我一无所知的是写入磁盘/保证意外硬件(比如电源)故障的持久性。

为了有适当的恢复/持久性,我在将文件写入磁盘时需要一定的保证。

问题:

出于上述目的,我需要什么类型的文件原语(保证文件写入磁盘?保持文件打开并附加到日志?)?JVM 提供什么?

谢谢!

4

2 回答 2

2

这是一个很大的话题,因为现在磁盘周围有许多抽象层,尽管从 JVM 的角度来看,一旦调用 fsync,您就非常依赖fsync 将您的位实际写入磁盘,您依赖于磁盘上的这些位. 其余的都建立在此之上。

于 2012-06-27T00:13:44.163 回答
0

要在 write 调用返回之前强制将数据写入磁盘,您必须使用 FileChannel 并调用force

于 2012-06-27T02:49:20.577 回答