leveldb学习
坚持到底cw
奋斗青年
展开
-
levedb之SSTable
1. LevelDb不同层级有很多SSTable文件(以后缀.sst为特征),所有.sst文件内部布局都是一样的。上节介绍Log文件是物理分块的,SSTable也一样会将文件划分为固定大小的物理存储块,但是两者逻辑布局大不相同,根本原因是:Log文件中的记录是Key无序的,即先后记录的key大小没有明确大小关系,而.sst文件内部则是根据记录的Key由小到大排列的上图展示了一个.转载 2014-03-08 15:05:36 · 924 阅读 · 0 评论 -
leveldb之Compaction的过程
对于LevelDb来说,写入记录操作很简单,删除记录仅仅写入一个删除标记就算完事了,但是读取记录比较复杂,需要在内存以及各个层级文件中依照新鲜程度依次查找,代价很高。为了加快读取速度,levelDb采取了compaction的方式来对已有的记录进行整理压缩,通过这种方式,来删除掉一些不再有效的KV数据,减小数据规模,减少文件数量等。 levelDb的compaction机制和过程与转载 2014-03-10 10:49:48 · 2207 阅读 · 0 评论 -
leveldb之根据Key读取记录
LevelDb是针对大规模Key/Value数据的单机存储库,从应用的角度来看,LevelDb就是一个存储工具。而作为称职的存储工具,常见的调用接口无非是新增KV,删除KV,读取KV,更新Key对应的Value值这么几种操作。LevelDb的接口没有直接支持更新操作的接口,如果需要更新某个Key的Value,你可以选择直接生猛地插入新的KV,保持Key相同,这样系统内的key对应的value就会被转载 2014-03-10 10:48:10 · 2800 阅读 · 0 评论 -
leveldb之写入与删除记录
本节介绍levelDb的记录更新操作,即插入一条KV记录或者删除一条KV记录。levelDb的更新操作速度是非常快的,源于其内部机制决定了这种更新操作的简单性。 图6.1 LevelDb写入记录 图6.1是levelDb如何更新KV数据的示意图,从图中可以看出,对于一个插入操作P转载 2014-03-10 10:45:47 · 3292 阅读 · 0 评论 -
leveldb之log文件
1. log文件在LevelDb中的主要作用是系统故障恢复时,能够保证不会丢失数据。因为在将记录写入内存的Memtable之前,会先写入Log文件,这样即使系统发生故障,Memtable中的数据没有来得及Dump到磁盘的SSTable文件,LevelDB也可以根据log文件恢复内存的Memtable数据结构内容,不会造成系统丢失数据.2. LevelDb对于一个log文件,转载 2014-03-08 14:45:12 · 1825 阅读 · 0 评论 -
leveldb整体架构
1. LevelDb作为存储系统,数据记录的存储介质包括内存以及磁盘文件, 当LevelDb运行了一段时间,此时我们给LevelDb进行透视拍照,会看到如下图:从图中可以看出,构成LevelDb静态结构的包括六个主要部分:内存中的MemTable和ImmutableMemTable以及磁盘上的几种主要文件:Current文件,Manifest文件,log文件以及SSTable文转载 2014-03-08 14:23:27 · 2141 阅读 · 0 评论 -
关于leveldb
本文转自 http://blog.csdn.net/poweruser5956/article/details/7727325Leveldb概述leveldb提供了持久的键值对的存储。key和value为任意的字节数组。键的存储是有序的,可以通过用户自定义的比较函数进行排序。打开数据库leveldb数据库的名字和文件系统目录是一致的。所有数据库的转载 2014-03-12 21:10:44 · 2350 阅读 · 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-03-08 13:57:55 · 1057 阅读 · 0 评论 -
leveldb之Mem Table
1. 所有KV数据都是存储在Memtable,Immutable Memtable和SSTable中的,Immutable Memtable从结构上讲和Memtable是完全一样的,区别仅仅在于其是只读的,不允许写入操作,而Memtable则是允许写入和读取的。当Memtable写入的数据占用内存到达指定数量,则自动转换为Immutable Memtable,等待D转载 2014-03-08 15:10:59 · 1310 阅读 · 0 评论 -
leveldb之Cache
前面讲过对于levelDb来说,读取操作如果没有在内存的memtable中找到记录,要多次进行磁盘访问操作。假设最优情况,即第一次就在level 0中最新的文件中找到了这个key,那么也需要读取2次磁盘,一次是将SSTable的文件中的index部分读入内存,这样根据这个index可以确定key是在哪个block中存储;第二次是读入这个block的内容,然后在内存中查找key对应的value。转载 2014-03-10 10:51:41 · 1220 阅读 · 0 评论