这纯粹是出于教育目的。我想写一个原始数据库。重点不在于性能;但只是数据库背后的原则。我已经有关于锁定/互斥/事务的资料。我所知道的是写入磁盘/保证意外硬件(比如电源)故障的持久性。
为了获得适当的恢复/持久性,我在将文件写入磁盘时需要一定的保证。
出于上述目的,我需要什么类型的文件基元(保证文件写入磁盘?保持文件打开并附加到日志?)? JVM提供什么?
谢谢!
答案 0 :(得分:2)
这是一个值得讨论的巨大领域,因为现在有很多层围绕光盘的抽象,尽管从JVM的角度来看,你几乎依赖于 fsync来实际将你的位写入光盘一旦调用fsync,就依赖于光盘上的这些位。其余的都建立在此基础上。
答案 1 :(得分:0)
要在调用write返回之前强制将数据写入磁盘,必须使用FileChannel并调用force。