我正在研究在 ARM9 上运行的嵌入式 linux。文件系统是 ext4 类型(rw、sync、noatime、data=writeback)我实现了一个进程,该进程以 Write-Ahead-Loggin (WAL) 模式写入/读取 SQLite3 数据库,并启用了 unsync。发生断电时,我有大约两秒钟的时间通过同步和检查数据库来保存所有数据。但是,我仍然看到有时数据库被损坏,这在我的情况下真的不好。
我想为我的目的编写一个新的数据库引擎,以类似于 SQLite 的方式,数据库将保存在一个文件中。但是在这种情况下,我正在考虑将标头数据写入一个扇区,其余数据至少在两个扇区之后,因此数据库的大小会更大但是在写入数据时,它不会破坏标头文件,它包含索引等。这样,只有最后的数据会被破坏,而不是所有的文件,因为 SQLite 的行为。
我的问题是我的方法是否正确?