LevelDb之六 写入与删除记录

        在之前的五节LevelDb日知录中我们介绍了LevelDb的一些静态文件及其详细布局从本节开始我们看看LevelDb的一些动态操作比如读写记录Compaction错误恢复等操作本节介绍levelDb的记录更新操作即插入一条KV记录或者删除一条KV记录levelDb的更新操作速度是非常快的源于其内部机制决定了这种更新操作的简单性 


LevelDb写入记录

       图1levelDb如何更新KV数据的示意图从图中可以看出对于一个插入操作Put(Key,Value)来说完成插入操作包含两个具体步骤首先是将这条KV记录以顺序写的方式追加到之前介绍过的log文件末尾因为尽管这是一个磁盘读写操作但是文件的顺序追加写入效率是很高的所以并不会导致写入速度的降低第二个步骤是:如果写入log件成功那么将这条KV记录插入内存中的Memtable前面介绍过Memtable只是一层封装其内部其实是一个Key有序的SkipList列表插入一条新记录的过程也很简单即先查找合适的插入位置然后修改相应的链接指针将新记录插入即可完成这一步写入记录就算完成了所以一个插入记录操作涉及一次磁盘文件追加写和内存SkipList插入操作这是为何levelDb写入速度如此高效的根本原因

        从上面的介绍过程中也可以看出log文件内是key无序的Memtable中是key有序的那么如果是删除一条KV记录呢对于levelDb来说并不存在立即删除的操作而是与插入操作相同的区别是插入操作插入的是Key:Value 而删除操作插入的是Key:删除标记并不真正去删除记录而是后台Compaction的时候才去做真正的删除操作

       levelDb的写入操作就是如此简单真正的麻烦在后面将要介绍的读取操作中

备注:本文转载自朗格科技:http://www.samecity.com/blog/Article.asp?ItemID=117

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值