
LevelDB
haha and giraffe
一只努力的长颈鹿
展开
-
LevelDB源码解读——Compaction和VersionEdit
前面几篇简单介绍了LevelDB中的数据结构和存储方式(log、MemTable、sstable)。这一章节来解读一下LevelDB最核心的内容——合并操作与版本控制。Compaction按照LevelDB的框架思路,Compaction有两种使用方式,一种是MemTable -> Level0 ,称为Minor Com-paction,另一种是Level0 -> Level1,称...原创 2019-10-29 22:46:47 · 435 阅读 · 0 评论 -
LevelDB源码解读——MemTable和sstable
在前几章中,我们已经熟悉了LevelDB中的创建、读数据、写数据等基本操作,现在应该仔细来看看存储数据的结构体了,一开始我们已经看了skiplist的实现,其实MemTable中基本上就是依靠skiplist来实现的。MemTable是在内存中的数据存储结构,一些基本的读取操作都是会先对其做操作,而sstable则是磁盘上的存储结构。MemTableMemTable的结构较为简单。对其的get...原创 2019-10-27 15:22:19 · 1222 阅读 · 0 评论 -
LevelDB源码解读——数据库开启、读取与存入
本章主要介绍对LevelDB基础操作Open,Put,Get等操作,熟悉具体的数据读写处理流程。原创 2019-10-24 21:54:49 · 554 阅读 · 0 评论 -
LevelDB源码解读——Log日志文件
日志文件是LevelDB架构中最重要的一个部分,由于LSM-Tree是将写入的数据先存放在内存中的Memtable, 当到达临界时,就将其变成只读Immutable Memtable,随后后台进程将其flush到磁盘上sstable,如果在这个过程中系统发生错误,内存中的数据就会受到破坏,这时候就需要日志文件进行恢复。LevelDB在将数据写入内存的时候就会将其记录在日志文件中。日志格式每一条...原创 2019-10-22 17:23:29 · 669 阅读 · 0 评论 -
LevelDB源码解读——简介及数据结构
久闻LevelDB大名,由于课程需要,借助此次机会对levelDB源码的几个主要模块进行解读,同时加强对c++的理解。LevelDB简介LevelDB是一个google开源的持久型K-V数据存储引擎,是一个很好的c++学习源码。LevelDB的主要特点在于其写性能十分优秀(在牺牲了部分读性能的前提下),这也是LSM-Tree的主要特性之一。LevelDB的安装这里不再叙述,详见LevelDB...原创 2019-10-19 22:28:54 · 1270 阅读 · 0 评论