leveldb研究系列二——各个组件和读写时序介绍

本文介绍了leveldb的组件和读写时序,强调其作为KV数据库重视写性能的设计。write操作包括顺序写入磁盘log和插入memtable,采用skiplist数据结构。读操作则涉及memtable、immutable memtable、SSTable及manifest索引文件。leveldb利用LSM树策略,延迟更新索引,通过批量处理减少磁盘I/O,以优化读性能。
摘要由CSDN通过智能技术生成

在学习leveldb的过程中,我走了很多弯路,比如在对整体了解不足的情况下就开始阅读源代码,这其实是不可取的,所以我希望大家在学习leveldb的时候要对整体有个大致的了解,这样就可以加快整个学习过程,leveldb涉及很多数据结构的知识( skiplist,  bloom filter, 多路归并排序,还有一个LRUcache,hash,等等) 还有一点点令人棘手底层的问题,多线程,并发控制,原子操作,内存屏障,(memory barrier,想想关键字volitale)编码约定(大小端)。

总而言之,希望大家先有相关准备再去看源代码,让我先给大家介绍leveldb的组件和读写时序:

1.首先 我们要牢记,leveldb的是一个用来提高写性能的,内存小巧可控的KV数据库(可控的原因是在于后面讲到cache可以配置,可选), 采用一系列的方式保证写性能  先上图 给个写时序



write 操作很简单,写入磁盘log (顺序写入数据),在memtable 插入<key,value>  ,memtalbe主要依靠skiplist实现数据挂载,skiplist是一种类似于自平衡二叉树的数据结构,不过相对而言具有更好的写性能(调整节点少)   在后续章节我会详细讲解此数据结构。      到这里为止, write操作已经结束,也就是说write操作包括一次顺序磁盘顺序写

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值