这篇文章我们一起来看看Block::Iter, 这个Iter顾名思义使用来访问一个block的Iter,block可以是sstable中的data block,或者index block。还记得data block的布局吗:
leveldb源码阅读记录-MemTableIterator
leveldb源码阅读记录-Iterator-OverView
通过之前对LevelDB的整体流程,数据存储以及元信息管理的介绍,我们已经基本完整的了解了LevelDB。从这篇文章开始,我们将重心转移到Iterator上,这是一种统一的访问底层数据的设计模式,用户不用关心底层数据是如何存储,只需使用Iterator提供的几种操作接口,即可访问。本文是leveldb众多iterator的一个总览,后文再对各个Iterator单独分析。
本文转载自:https://www.jianshu.com/p/7fe24a77002a
leveldb源码阅读记录-Cache
leveldb是一种对写优化的kv存储系统,读性能有所下降,为了充分利用局部性原理,提高读性能,leveldb自己也设计了一个Cache结构。内部采用LRU替换策略。
leveldb源码阅读记录-Compaction
截至到上文,我们已经将levedb中几个重要的组件都分析了,包括log、manifest、memtable和sstable。今天将介绍leveldb中最重要的内部操作–Compaction。
leveldb源码阅读记录-SSTable
leveldb源码阅读记录-Version数据结构及MANIFEST文件
文本要介绍一个在leveldb中相当重要的数据结构 - Version及其相关的VersionEdit和VersionSet。理解了这些内容后,我们会提到leveldb系统中MANIFEST文件。
leveldb源码阅读记录-Memtable
上文我们介绍了Skiplist,它是leveldbMemtable的底层数据结构,这篇文章,我们一起来分析MemTable。
leveldb源码阅读记录-Memtable基础-Skiplist
在leveldb中,memtable的实现是采用skiplist的,所以本篇文章,我们就来分析以下leveldb的skiplist。
对于不了解skiplist,建议先学习以下skiplist的基本概念,最好能跟着实现一个skiplist。
leveldb源码阅读记录-log文件
log文件是用来保证写入的持久性的。当用户向系统发出write请求,首先就会将数据写入一份到log文件中,然后再写入到memtable,这是为了防止系统crash而出现数据loss。