- 博客(5)
- 资源 (6)
- 收藏
- 关注
原创 Leveldb源码分析--5
5 操作Log 1分析完KV在内存中的存储,接下来就是操作日志。所有的写操作都必须先成功的append到操作日志中,然后再更新内存memtable。这样做有两个有点:1可以将随机的写IO变成append,极大的提高写磁盘速度;2防止在节点down机导致内存数据丢失,造成数据丢失,这对系统来说是个灾难。在各种高效的存储系统中,这已经是口水技术了。5.1 格式在源码下的
2013-02-28 20:56:04 11643 3
原创 Leveldb源码分析--4
4 Memtable之24.6 Comparator弄清楚了key,接下来就要看看key的使用了,先从Comparator开始分析。首先Comparator是一个抽象类,导出了几个接口。其中Name()和Compare()接口都很明了,另外的两个Find xxx接口都有什么功能呢,直接看程序注释: // Advanced functions: these are used to reduce t
2013-02-23 00:24:12 14038 7
原创 Leveldb源码分析--3
4 Memtable之1Memtable是leveldb很重要的一块,leveldb的核心之一。我们肯定关注KV数据在Memtable中是如何组织的,秘密在Skip list中。4.1 用途在Leveldb中,所有内存中的KV数据都存储在Memtable中,物理disk则存储在SSTable中。在系统运行过程中,如果Memtable中的数据占用内存到达指定值(Optio
2013-02-23 00:06:07 19952 10
原创 Leveldb源码分析--2
3 Int Coding轻松一刻,前面约定中讲过Leveldb使用了很多VarInt型编码,典型的如后面将涉及到的各种key。其中的编码、解码函数分为VarInt和FixedInt两种。int32和int64操作都是类似的。3.1 Decode首先是FixedInt编码,直接上代码,很简单明了。void EncodeFixed32(char* buf, uint32_t
2013-02-06 11:32:46 17588 2
原创 Leveldb源码分析--1
【前言:看了一点oceanbase,没有意志力继续坚持下去了,暂时就此中断,基本上算把master看完了,比较重要的update server和merge server代码却没有细看。中间又陆续研究了hadoop的源码,主要是name node和写入pipeline。主要的目的是想看看name node对namespace的管理,以及hadoop在写入操作时,client、data nod
2013-02-05 22:58:28 58980 15
CRC32算法-从bit到table-driven
2010-01-24
Linux Slab分配器分析文档
2009-12-22
GUI版Tail源码-支持Filter功能
2009-11-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人