我是编写嵌入式系统应用程序团队的一员.该应用程序经常遭受由电力短缺引起的数据损坏.我认为实施某种交易会阻止这种情况发生.一种情况包括在写入一些额外存储(事务日志)之前复制文件区域.还有什么其他可能性?
数据库使用各种技术来确保状态得到适当的持久化.
DBMS通常会保留一个复制的控制文件 - 在多个设备上有几个同步的副本.两个就够了.更多,如果你是偏执狂.控制文件提供了一些用于定位其他文件及其预期状态的关键参数.控制文件可以包括"数据库版本号".
每个文件都有几种形式的"版本号".很多时候它是以简单形式加上一些XOR补码,因此可以轻松检查两个版本号以获得正确的关系,并匹配控制文件版本号.
所有交易都写入交易日记帐.然后将事务日志写入数据库文件.
在写入数据库文件之前,原始数据块将复制到"之前的映像日志"或回滚段或其他类似的文件.
将块写入文件时,将更新序列号,并从事务日志中删除该块.
您可以阅读RDBMS技术以获得可靠性.