随笔分类 - Leveldb
摘要:应用场景:由于Leveldb采用的是分层的存储结构,那么当Get一个key的时候最坏情况就是在所有的层级上都查询一遍这个key,这个开销是非常大的,引入BloomFilter之后,利用BloomFilter能够快速判断“是否存在”的特点可以很快速的知道需不需要在这个Level中进行查询。构造函数:explicit BloomFilterPolicy(int bits_per_key)这里没有默认构造函数,使用时需传入bits_per_key表示每个key的大小主要流程:1)初始化:k_ = static_cast(bits_per_key * 0.69);if (k_ 30) k_ = 30.
阅读全文
摘要:文件leveldb是根据单机版BigTable来实现的,但是文件的组织方式却有以下几点不同。每一个数据库是由存储在文件夹下面的一系列文件集合来实现的,有很多不同类型的文件:Log Files:log文件(*.log) 存储了一系列最近的更新。每一个更新都会追加到当前的log文件中。当一个log文件到达一个预设阈值(默认是4MB),它将会转变成一个有序表,并且为以后的更新操作生成一个新的log文件。sorted tables一个 sorted tables (*.sst) 存储一系列有序的key。每一个entry是一个key的value或者一个删除的key。sorted tables 由多级的方
阅读全文
摘要:./include../leveldb../../db.h db.h 定义了基本的操作接口,包括 Put、Write、Delete等。这里Put,Write等接口用纯虚函数实现,但是却有默认实现。../../cache.h lebeldb 缓存的接口,用LUR算法实现,提供了添加、删除、查找等接口../../comparator.h 压缩算法接口../../env.h 环境设置,一些文件操作../../filter_policy.h 一些过滤的方式,定义了一系列接口,以供实现../../iterator.h 迭代器的一系列操作,包括First,end,seek等../....
阅读全文

浙公网安备 33010602011771号