逻辑层面上如何实现失败回滚操作?

2019-07-09 11:26:51 +08:00
 chi1st

对于与数据库相关的操作来说,使用事务可以很好的做到失败回滚的操作

但是对于与数据库无关的一些操作,如:文件的操作(有序的新增或删除多个文件),失败后回滚有没有什么优雅的实现?

1690 次点击
所在节点    问与答
6 条回复
glacer
2019-07-09 11:29:18 +08:00
备份+日志
ho121
2019-07-09 12:29:43 +08:00
类似 windows 的系统还原?
dapang1221
2019-07-09 12:37:40 +08:00
每执行完一个操作,就记录一个反向操作的 log,回滚时执行这个
chi1st
2019-07-09 13:39:55 +08:00
@ho121 系统还原是比较笼统的一个概念吧
chi1st
2019-07-09 13:40:20 +08:00
@dapang1221 那如果回滚失败呢,还要继续回滚吗
fuyufjh
2019-07-10 14:43:40 +08:00
无非两个方案:
1. 磁盘上保持最新状态,用 undo log 回滚失败的修改
2. 磁盘上保持一个历史 checkpoint,用 redo log 恢复到最新的状态

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/581260

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX