
levelDB源码阅读
levelDB是一个轻量型的k-v数据库
lynalmost
这个作者很懒,什么都没留下…
展开
-
LevelDB源码阅读-key
levelDB中的key前言在levelDB中有五种不同的key,在正式分析memtable之前我们先介绍一下这5中不同的keyuser_keyParsedInternalKeyInternalKeyLookupKeyMemtableKeyuser_key(用户key)user_key是Slice结构体来表示的,其内部就是简单封装了字符串和它的size。顾名思义,这个key...原创 2018-12-24 10:46:04 · 823 阅读 · 0 评论 -
LevelDB源码阅读-coding
LevelDB源码阅读-coding原文:https://blog.youkuaiyun.com/caoshangpa/article/details/78815940LevelDB默认使用的是小端字节序存储,低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。编码分为变长的EncodeVarint和固定大小的EncodeFixed两种,每种又分32位和64位。一.EncodeFixedvo...转载 2018-12-19 17:47:59 · 358 阅读 · 0 评论 -
levelDB源码阅读-内存池arena
levelDB源码阅读-内存池arena前言直接使用系统调用分配内存是非常不明智的频繁调用malloc/new是非常耗时的,且系统需要根据一些算法在内存空闲块表中查找可能会产生大量的内存碎片如果使用不细心也很容易造成内存泄漏采用内存池,预先申请一块比较大的空间供申请,可以根据程序的实际需要指定申请的规则,并且对这些内存资源统一管理。使用内存池的好处申请内存的时间会更快,直接在...原创 2018-12-18 16:44:29 · 285 阅读 · 0 评论 -
levelDB源码阅读-skiplist跳表下
levelDB中的skiplist跳表 下前言在跳表 上 中介绍了跳表的基本结构,接下来将要介绍跳表的迭代器和其内部实现的方法。Iterator -跳表的迭代器跳表的迭代器实现非常简单,调用了跳表内部的一些实现方法。 // Iteration over the contents of a skip list class Iterator { public: // In...原创 2018-12-17 11:15:29 · 358 阅读 · 0 评论 -
levelDB源码阅读-skiplist跳表 上
levelDB中的skiplist跳表 上前言在之前的博客中已经简要介绍了跳表的原理,接下来将介绍跳表在levelDB中的实现。本小节主要讲一下跳表和其Node的实现结构,关于具体的方法将在下一节中讲到。代码位置:leveldb-master/db/skiplist.h深入源码skiplist结构template<typename Key, class Comparator&g...原创 2018-12-17 10:22:45 · 432 阅读 · 0 评论 -
SkipList 跳表的原理
SkipList 跳表的原理前言在各类数据结构中,实现的方式无非两种,数组/链表,跳表是一种基于链表改进的数据结构,能够实现快速查找;levelDB中便用到了它。跳表是平衡树的一种替代的数据结构,但是和红黑树不同的是,跳表对于树的平衡的实现是基于一种随机化的算法也就是说跳表的插入和删除工作是比较简单的。接下来我们将了解跳表的实现原理。跳表的结构以下是一个普通的链表,假设我们需要访问...原创 2018-12-16 14:41:08 · 660 阅读 · 0 评论 -
levelDB的LSM文件树
前言下面是一篇转自简书的文章,介绍了leveldb所使用的LSM算法。作者:散入风中链接:https://www.jianshu.com/p/d578495f8557來源:简书LSM文件树是基于Bigtable思想用于levelDB数据库(google两位重量级架构,Jeff Dean和Sanjay Ghemawat所发起的开源数据库)的一个存储结构,在这里做一个简单的理解。LSM文件...转载 2018-12-15 19:15:38 · 652 阅读 · 0 评论