0%

LevelFileNumIterator·

LevelFileNumIterator用于访问一个level中的file。

其中ke存放的是 指定要访问的file的最大key。 value为16字节数据,用于存放文件序列号和文件size

原文注释

// An internal iterator. For a given version/level pair, yields

// information about the files in the level. For a given entry, key()

// is the largest key that occurs in the file, and value() is an

// 16-byte value containing the file number and file size, both

// encoded using EncodeFixed64.

LevelFileNumIterator代码很短,直接上所有代码吧。

阅读全文 »

通过之前对LevelDB的整体流程,数据存储以及元信息管理的介绍,我们已经基本完整的了解了LevelDB。从这篇文章开始,我们将重心转移到Iterator上,这是一种统一的访问底层数据的设计模式,用户不用关心底层数据是如何存储,只需使用Iterator提供的几种操作接口,即可访问。本文是leveldb众多iterator的一个总览,后文再对各个Iterator单独分析。

本文转载自:https://www.jianshu.com/p/7fe24a77002a

阅读全文 »

leveldb是一种对写优化的kv存储系统,读性能有所下降,为了充分利用局部性原理,提高读性能,leveldb自己也设计了一个Cache结构。内部采用LRU替换策略。

阅读全文 »

10.leveldb源码阅读记录-SSTable

[toc]

上文中,我们介绍了Version和Manifest,这篇文章将介绍leveldb的核心–SStable。

SSTable·

1. 引言·

https://bean-li.github.io/leveldb-sstable/

这部分在doc/table_format.md有介绍。

SSTable文件是落在磁盘上的真正文件,leveldb存储路径中的.sst 类型的文件都是SSTable文件。 本文介绍该文件的格式,以及leveldb如何一条记录一条记录的增加到SSTable文件。

阅读全文 »