LevelDB-07-Compaction
Compaction
前文有述,对于LevelDb来说,写入记录操作很简单,删除记录仅仅写入一个删除标记就算完事,但是读取记录比较复杂,需要在内存以及各个层级文件中依照新鲜程度依次查找,代价很高。
为了加快读取速度,levelDb采取了compaction的方式来对已有的记录进行整理压缩,通过这种方式,来删除掉一些不再有效的KV数据,减小数据规模,减少文件数量等。
levelDb的co...
2018-09-06 23:44:19 |
Cache
LevelDB-06-CURD
写入与删除记录
在之前的五节LevelDb日知录中,我们介绍了LevelDb的一些静态文件及其详细布局,从本节开始,我们看看LevelDb的一些动态操作,比如读写记录,Compaction,错误恢复等操作。
本节介绍levelDb的记录更新操作,即插入一条KV记录或者删除一条KV记录。levelDb的更新操作速度是非常快的,源于其内部机制决定了这种更新操作的简单性。
图6.1是le...
2018-09-06 23:44:19 |
Cache
LevelDB-05-MemTable
MemTable
LevelDb日知录前述小节大致讲述了磁盘文件相关的重要静态结构,
本小节讲述内存中的数据结构Memtable,Memtable在整个体系中的重要地位也不言而喻。
总体而言,所有KV数据都是存储在Memtable,Immutable Memtable和SSTable中的,
Immutable Memtable从结构上讲和Memtable是完全一样的,区别仅仅在于其是只读的...
2018-09-06 23:44:19 |
Cache
LevelDB-04-SSTable
SSTable文件
SSTable是Bigtable中至关重要的一块,对于LevelDb来说也是如此,对LevelDb的SSTable实现细节的了解也有助于了解Bigtable中一些实现细节。
本节内容主要讲述SSTable的静态布局结构,我们曾在“LevelDb日知录之二:整体架构”中说过,SSTable文件形成了不同Level的层级结构,
至于这个层级结构是如何形成的我们放在后面Co...
2018-09-06 23:44:19 |
Cache
LevelDB-03-log
Log
上节内容讲到log文件在LevelDb中的主要作用是系统故障恢复时,能够保证不会丢失数据。
因为在将记录写入内存的Memtable之前,会先写入Log文件,这样即使系统发生故障,Memtable中的数据没有来得及Dump到磁盘的SSTable文件,LevelDB也可以根据log文件恢复内存的Memtable数据结构内容,不会造成系统丢失数据,在这点上LevelDb和Bigtabl...
2018-09-06 23:44:19 |
Cache
LevelDB-02-为什么这么快
整体架构
LevelDb本质上是一套存储系统以及在这套存储系统上提供的一些操作接口。为了便于理解整个系统及其处理流程,我们可以从两个不同的角度来看待LevleDb:静态角度和动态角度。从静态角度,可以假想整个系统正在运行过程中(不断插入删除读取数据),此时我们给LevelDb照相,从照片可以看到之前系统的数据在内存和磁盘中是如何分布的,处于什么状态等;从动态的角度,主要是了解系统是如何写入...
2018-09-06 23:44:19 |
Cache
LevelDB-01-入门
LevelDB
LevelDB is a fast key-value storage library written at Google that provides an ordered mapping from string keys to string values.
Features
键和值是任意的字节数组。
数据按键存储。
...
2018-09-06 23:44:19 |
Cache
Memcached
Memcached
官方定义
Memcached 是免费和开源、高性能、分布式内存对象缓存系统,本质上是通用的,但用于通过减轻数据库负载来加速动态web应用程序。
Memcached是内存中的一个键值存储,用于存储来自数据库调用、API调用或页面呈现结果的任意数据块(字符串、对象)。
Memcached简单而强大。其简单的设计促进了快速部署,易于开发,并解决了大型数据缓存所面临的许多...
2018-09-06 23:44:19 |
Cache