码迷,mamicode.com
首页 > 数据库 > 详细

leveldb学习笔记

时间:2017-04-02 12:42:09      阅读:295      评论:0      收藏:0      [点我收藏+]

标签:批量操作   .com   定义   批量   value   自定义key   作用   功能   c++   

 

     LevelDB由 Jeff Dean和Sanjay Ghemawat开发。

     LevelDb是能够处理十亿级别规模Key-Value型数据持久性存储的C++ 程序库。

特别如下:

1、LevelDb是一个持久化存储的KV系统,将大部分数据存储到磁盘上。

2、LevleDb在存储数据时,是根据记录的key值有序存储的,应用可以自定义key大小比较函数。

3、LevelDb的操作接口包括写记录,读记录以及删除记录。针对多条操作的原子批量操作。

4、LevelDb支持数据快照(snapshot)功能,使得读取操作不受写操作影响。

5、LevelDb支持数据压缩。

 

LevelDb性能非常突出,其随机写性能达到40万条记录每秒,而随机读性能达到6万条记录每秒。总体来说,LevelDb的写操作要大大快于读操作,而顺序读写操作则大大快于随机读写操作。

 

整体架构

技术分享

 

 

当应用写入一条Key:Value记录的时候,LevelDb会先往log文件里写入,成功后将记录插进Memtable中。

Log文件在系统中的作用主要是用于系统崩溃恢复而不丢失数据。

当Memtable插入的数据占用内存到了一个界限后,Memtable就成为Immutable Memtable,LevleDb会生成新的Log文件和Memtable。

LevelDb后台调度会将Immutable Memtable的数据导出到磁盘,形成一个新的SSTable文件。

【注释】 Immutable Memtable 这个Memtable的内容是不可更改的,只能读不能写入或者删除。

 

参考地址:

http://www.cnblogs.com/haippy/archive/2011/12/04/2276064.html

 

leveldb学习笔记

标签:批量操作   .com   定义   批量   value   自定义key   作用   功能   c++   

原文地址:http://www.cnblogs.com/hetonghai/p/6658629.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!