对于与数据库相关的操作来说,使用事务可以很好的做到失败回滚的操作
但是对于与数据库无关的一些操作,如:文件的操作(有序的新增或删除多个文件),失败后回滚有没有什么优雅的实现?
1
glacer 2019-07-09 11:29:18 +08:00 1
备份+日志
|
2
ho121 2019-07-09 12:29:43 +08:00 via Android
类似 windows 的系统还原?
|
3
dapang1221 2019-07-09 12:37:40 +08:00
每执行完一个操作,就记录一个反向操作的 log,回滚时执行这个
|
5
chi1st OP @dapang1221 那如果回滚失败呢,还要继续回滚吗
|
6
fuyufjh 2019-07-10 14:43:40 +08:00
无非两个方案:
1. 磁盘上保持最新状态,用 undo log 回滚失败的修改 2. 磁盘上保持一个历史 checkpoint,用 redo log 恢复到最新的状态 |