SequoiaDB 巨杉数据库中的事务日志记录了事务对数据库的所有更改,是备份和恢复的重要组件,也在事务操作中被用于回滚数据。因此事务日志中通常包含 REDO 和 UNDO 两部分,其中 REDO 部分用于数据恢复和复制组节点间数据进行增量同步,UNDO 部分用于事务回滚操作恢复数据到事务操作前的状态。
如执行更新操作的事务日志中,将分别记录新值(New)和旧值(Orig):
Version: 0x00000001(1)
LSN : 0x0000000058b90740(236)
PreLSN : 0x0000000058b906d0(156)
Length : 228
Type : UPDATE(2)
FullName : sample.employee
Orig id : { "_id": { "$oid": "5c88afe31a3f5822754040d0" } }
Orig : { "$set" : { "balance" : 10000 } }
New id : { "_id": { "$oid": "5c88afe31a3f5822754040d0" } }
New : { "$set" : { "balance" : 8000 } }
TransID : 0x00040069d6d96e
TransPreLSN : 0x0000000058b906d0
如果事务日志的记录中有事务 ID(TransID)