如何将leveldb回滚到以前的状态?

时间:2014-04-13 20:06:02

标签: leveldb

我是LevelDB的新手。我需要类似"回滚到特定状态",LevelDB是否支持?经过一些搜索,我知道LevelDB不支持事务,但它支持快照。我可以将数据库还原到快照吗?

我的需要是这样的:

  1. 初始状态
  2. 对数据库进行一些更改
  3. 如果有任何错误,请返回初始状态。

1 个答案:

答案 0 :(得分:0)

LevelDB快照不是用于还原更改,而是允许来自同一线程的其他读者访问数据库的一致版本。

解决您需求的一种方法是自己实现一个事务日志:

  1. 开始交易拍摄快照
  2. 在内存中记录每个修改过的密钥
  3. 然后提交,发布快照和日志
  4. 回滚,查找日志中的每个修改后的密钥,并从快照中检索其初始值并重新设置。发布快照和日志。