Algorithm 简单文件的事务实现

Algorithm 简单文件的事务实现,algorithm,database-design,transactions,Algorithm,Database Design,Transactions,我是一个为嵌入式系统编写应用程序的团队的一员。应用程序通常会因电源不足而遭受数据损坏。我认为实现某种事务可以阻止这种情况的发生。一种方案包括在写入其他存储(事务日志)之前复制文件区域。还有其他可能性吗?数据库使用各种技术来确保状态正确持久化 DBMS通常保留一个复制的控制文件,即多个设备上的多个同步副本。两个就够了。如果你是偏执狂,那就更糟了。控制文件提供了几个用于定位其他文件及其预期状态的关键参数。控制文件可以包括“数据库版本号” 每个文件都有几种形式的“版本号”。很多时候,它是以简单的形式加

我是一个为嵌入式系统编写应用程序的团队的一员。应用程序通常会因电源不足而遭受数据损坏。我认为实现某种事务可以阻止这种情况的发生。一种方案包括在写入其他存储(事务日志)之前复制文件区域。还有其他可能性吗?

数据库使用各种技术来确保状态正确持久化

  • DBMS通常保留一个复制的控制文件,即多个设备上的多个同步副本。两个就够了。如果你是偏执狂,那就更糟了。控制文件提供了几个用于定位其他文件及其预期状态的关键参数。控制文件可以包括“数据库版本号”

  • 每个文件都有几种形式的“版本号”。很多时候,它是以简单的形式加上一些XOR补码,这样就可以轻松地检查两个版本号是否具有正确的关系,并匹配控制文件版本号

  • 所有事务都会写入事务日志。然后将事务日志写入数据库文件

  • 在写入数据库文件之前,将原始数据块复制到“图像之前日志”或回滚段,或类似的部分

  • 将块写入文件时,序列号将更新,并且块将从事务日志中删除


  • 您可以了解RDBMS技术的可靠性。

    数据库使用各种技术来确保状态正确持久化

  • DBMS通常保留一个复制的控制文件,即多个设备上的多个同步副本。两个就够了。如果你是偏执狂,那就更糟了。控制文件提供了几个用于定位其他文件及其预期状态的关键参数。控制文件可以包括“数据库版本号”

  • 每个文件都有几种形式的“版本号”。很多时候,它是以简单的形式加上一些XOR补码,这样就可以轻松地检查两个版本号是否具有正确的关系,并匹配控制文件版本号

  • 所有事务都会写入事务日志。然后将事务日志写入数据库文件

  • 在写入数据库文件之前,将原始数据块复制到“图像之前日志”或回滚段,或类似的部分

  • 将块写入文件时,序列号将更新,并且块将从事务日志中删除


  • 你可以阅读RDBMS的可靠性技术。

    有很多方法可以做到这一点;通常,唯一需要的假设是小写(有很多方法可以做到这一点;通常唯一需要的假设是小写(您可以通过使用文件系统周围的现有事务管理器来避免实现此类事务日志,例如


    旧链接不再可用,github repo也不再可用。

    您可以通过在文件系统周围使用现有事务管理器来避免实现此类事务日志,例如


    旧链接不再可用,github repo已可用。

    如何将写入标头设置为原子?如果写入标头时发生故障,会发生什么?如何将写入标头设置为原子?如果写入标头时发生故障,会发生什么?