上文我们介绍了Skiplist,它是leveldbMemtable的底层数据结构,这篇文章,我们一起来分析MemTable。
leveldb源码阅读记录-Memtable基础-Skiplist
在leveldb中,memtable的实现是采用skiplist的,所以本篇文章,我们就来分析以下leveldb的skiplist。
对于不了解skiplist,建议先学习以下skiplist的基本概念,最好能跟着实现一个skiplist。
leveldb源码阅读记录-log文件
log文件是用来保证写入的持久性的。当用户向系统发出write请求,首先就会将数据写入一份到log文件中,然后再写入到memtable,这是为了防止系统crash而出现数据loss。
leveldb源码阅读记录-leveldbutil工具
从本文之后,我们将正式分析leveldb内部组件,如memtable,sstable, log, manifest等。
leveldb源码阅读记录-文件命名规则
本片文章我们说一说leveldb中的文件命名规则。
这篇文章虽然放在前置知识,但是内部原理牵涉到leveldb中的Version相关类,所以看不懂没关系,只用知道一个结论:leveldb的所有带编号的文件共用一套编号系统,也就是说任何带编号的文件不可能有重复的编号。如不会出现 000001.ldb和000001.log文件这种情况。
leveldb源码阅读记录-编码
leveldb源码阅读记录-Env类
本系列的前几篇文章并不准备深入到leveldb中的”核心“,而是分析一些leveldb中用到的”杂项“内容,如本文要说的Env类,后面要提到的编码、文件命名方式等。
leveldb源码阅读记录-整体架构
1.leveldb源码阅读记录-整体架构
[toc]
0. 前言·
本系列文章是对leveldb源码分析的笔记,基本会包含leveldb中的方方面面。阅读过程中,参照网上各博客并加上了个人的理解,所以难免有错,如有错误还请告知。
如果你是刚开始看leveldb,我希望你对LSM有一定的概念。为了避免过度陷入代码细节,本文将解释leveldb的整体设计架构,各个组件的宏观设计,这样能在心里对leveldb有个轮廓,也能指导我们从哪里入手代码。
本文非写者编辑,转载自:http://cighao.com/2016/08/14/leveldb-source-analysis-02-structure/
Csapp-Proxylab题解
Csapp-Malloclab题解
本次lab,malloclab,自己手写一个内存分配器。