
LevelDB源码剖析
文章平均质量分 84
独孤_子喻
艰难困苦如同欢乐,终将成为人生最后的财富。
展开
-
LevelDB源码剖析之Cache(HashTable LRUCache ShardedLRUCache)
Cache为接口类,为实际原创 2014-09-18 09:41:49 · 1097 阅读 · 0 评论 -
LevelDB源码剖析之SSTable_sstable文件的读取
6 SSTable之36.5 读取sstable文件6.5.1 类层次Sstable文件的读取逻辑在类Table中,其中涉及到的类还是比较多的,如图6.5-1所示。图6.5-1Table类导出的函数只有3个,先从这三个导出函数开始分析。其中涉及到的类(包括上图中为画出的)都会一一遇到,然后再一一拆解。本节分转载 2014-09-23 15:36:10 · 817 阅读 · 0 评论 -
LevelDB源码剖析之SSTable_sstable文件的创建
SSTable之26.4 创建sstable文件了解了sstable文件的存储格式,以及Data Block的组织,下面就可以分析如何创建sstable文件了。相关代码在table_builder.h/.cc以及block_builder.h/.cc(构建Block)中。6.4.1 TableBuilder类构建sstable文件的类是Tab转载 2014-09-23 15:32:43 · 650 阅读 · 0 评论 -
LevelDB源码剖析之TableCache
7.1 TableCache简介TableCache缓存的是Table对象,每个DB一个,它内部使用一个LRUCache缓存所有的table对象,实际上其内容是文件编号{file number, TableAndFile*}。TableAndFile是一个拥有2个变量的结构体:RandomAccessFile*和Table*;TableCache类的主要成员变量有:转载 2014-09-23 15:38:17 · 981 阅读 · 0 评论 -
LevelDB源码剖析之SSTable_1(Block的创建与读取)
注原文:6 SSTable之1SSTable是Leveldb的核心之一,是表数据最终在磁盘上的物理存储。也是体量比较大的模块。6.1 SSTable的文件组织作者在文档doc/table_format.txt中描述了表的逻辑结构,如图6.1-1所示。逻辑上可分为两大块,数据存储区Data Block,以及各种Meta信息。1)文件中的k/v对是有转载 2014-09-21 21:43:35 · 750 阅读 · 0 评论 -
LevelDB源码剖析之Log_2
5 操作Log 2 5.3 读日志日志读取显然比写入要复杂,要检查checksum,检查是否有损坏等等,处理各种错误。5.3.1 类层次先来看看读取涉及到的类图,如图5.3-1。Reader主要用到了两个接口,一个是汇报错误的Reporter,另一个是log文件读取类SequentialFile。> Reporter的接口只有一个转载 2014-09-20 22:11:18 · 602 阅读 · 0 评论 -
LevelDB源码剖析之Log_1
5 操作Log 1分析完KV在内存中的存储,接下来就是操作日志。所有的写操作都必须先成功的append到操作日志中,然后再更新内存memtable。这样做有两个有点:1可以将随机的写IO变成append,极大的提高写磁盘速度;2防止在节点down机导致内存数据丢失,造成数据丢失,这对系统来说是个灾难。在各种高效的存储系统中,这已经是口水技术了。5.1 格式在转载 2014-09-20 22:09:44 · 548 阅读 · 0 评论 -
Leveldb整体框架
数据分析与处理之二(Leveldb 实现原理)2011-12-04 21:24 by Haippy, 30699 阅读, 8 评论, 收藏, 编辑LevelDb日知录之一:LevelDb 101 说起LevelDb也许您不清楚,但是如果作为IT工程师,不知道下面两位大神级别的工程师,那您的领导估计会Hold不住了:Jeff Dean和Sanjay Gh转载 2014-09-20 14:18:18 · 747 阅读 · 0 评论 -
LevelDB源码剖析之Memtable(1)
http://blog.youkuaiyun.com/sparkliang/article/details/86044164 Memtable之1Memtable是leveldb很重要的一块,leveldb的核心之一。我们肯定关注KV数据在Memtable中是如何组织的,秘密在Skip list中。4.1 用途在Leveldb中,所有内存中的KV数据都存储在Memt转载 2014-09-19 09:49:48 · 1027 阅读 · 0 评论 -
LevelDB源码剖析之Memtable(2)
4 Memtable之24.6 Comparator弄清楚了key,接下来就要看看key的使用了,先从Comparator开始分析。首先Comparator是一个抽象类,导出了几个接口。其中Name()和Compare()接口都很明了,另外的两个Find xxx接口都有什么功能呢,直接看程序注释:[cpp] view plaincopy转载 2014-09-19 09:51:59 · 757 阅读 · 0 评论 -
LevelDB源码剖析之SkipList
SkipList的基本原理及具体实现可参考:http://www.cnblogs.com/xuqiang/archive/2011/05/22/2053516.html(此文中SkipList的实现方式是把多层单链表叠加成一个SkipList链表,SkipList的每个节点中包含一个指向下一个Note的指针数组成员)。如图1:原创 2014-09-16 10:57:02 · 989 阅读 · 0 评论