![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
levedb阅读与分析
文章平均质量分 79
飞鸟Mu
这个作者很懒,什么都没留下…
展开
-
The design and Implementation of a Log-Structured File System
hgh翻译 2014-11-07 15:01:36 · 2418 阅读 · 0 评论 -
跳表SkipList
Skiplist主要是利用多级链表,实现链式结构快速的查找。链表的高度为O(logn)的概率很大,删除和运行的时间也是O(logn),而且需要的空间数目小于2n。总的来说,skiplist可以获得比较好的整体性能,而且不需要太复杂的平衡操作,因此运行速度和运行空间能够取得比较好的折中。具体的可以参考http://blog.csdn.net/haidao2009/article/details/82原创 2014-11-26 09:47:41 · 482 阅读 · 0 评论 -
leveldb阅读-arena内存池
arena内存缓冲池采用一种比较简单的分配方案,只提供了Allocate() 和AllocateAligned()接口,系统申请的缓冲池随着arena的销毁而销毁。简单来说,arena不应该算作是缓冲池,应理解为一种内存管理机制,适合memtable的内存管理方案。其中,arena.h头文件内容如下:// Copyright (c) 2011 The LevelDB Authors. Al原创 2014-11-26 17:01:24 · 857 阅读 · 0 评论 -
leveldb阅读-Slice字符串
Slice是一个类似于String的类,用于管理字符串,相比较于String支持的许多操作,Slice只包含最简单和基本的功能,也就是字符串的地址、字符串的大小;与string不同的是,Slice自己本身并不提供存储字符串的空间,而是保留字符串的指针,因此相比较于String,Slice运行起来就简单多了。Slice里面包含了两个基本的组成部分,指向字符串存储地址的const char* da原创 2014-11-27 11:08:47 · 733 阅读 · 0 评论 -
leveldb 初步运用
一.leveldb安装与使用1. 下载leveldb-1.15.0.tar.gz2. 解压tar -zxvf leveldb-1.15.0.tar.gz3. cd leveldb-1.15.04. Make生成libleveldb.a5. Cp –r include/leveldb /usr/local/include6. Cp libleveldb.a /u转载 2014-11-06 15:41:53 · 1251 阅读 · 0 评论 -
leveldb阅读-Skiplist
Skiplist是一种随机化的链表,通过并联链表,可以实现数据的快速插入和查找,同时能够取得比较好的时间开销和空间开销。详细的实现原理可以参照http://blog.csdn.net/haidao2009/article/details/8206856。leveldb采用skiplist来实现k-value的处理应该也是综合考虑到空间开销和时间开销的成本。在介绍leveldb中的Skiplis原创 2014-11-29 16:11:46 · 865 阅读 · 0 评论 -
leveldb源码阅读-memtable
memtable在leveldb中扮演着及其重要的地位,用于存储最新的数据修改信息,当数据的规模达到一定的上限之后,就会将数据转存储为immutable memtable,这时候就会被存储到sstale中;因此总的来说,所有在内存的数据都是以memtable进行存储的;memtable的接口如下:void Ref() { ++refs_; }//引用次数// Drop referenc原创 2014-12-30 16:14:11 · 860 阅读 · 0 评论