![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leveldb
文章平均质量分 75
AntonyXux
这个作者很懒,什么都没留下…
展开
-
Leveldb源码解析第一篇【Data Block】
版权声明:本文为博主原创文章,未经博主允许不得转载。 leveldb 作为一个 key-value 数据库,它和 redis 的区别在于不仅没有把所有的数据放在内存中,而是把大部分数据放在了磁盘中leveldb 存数据的流程 先指定一块内存写数据(这块内存称为 MemTable),当占用的内存高于阈值后,将这块内存转为只读(这块只读内存称为 Immutable MemTable) 同时开辟一块新的内原创 2017-06-09 17:17:41 · 10447 阅读 · 11 评论 -
Leveldb源码解析第二篇【Meta Block】
版权声明:本文为博主原创文章,未经博主允许不得转载。 上一章中详细讲解了 table 中的 data block 的结构以及涉及的源码,本章中将讲解 table 结构中的 meta blocktable 结构 <beginning_of_file> [data block 1] [data block 2] ... [data block N] [met原创 2017-06-09 17:20:54 · 2042 阅读 · 3 评论 -
Leveldb源码解析第三篇【sstable 收尾】
版权声明:本文为博主原创文章,未经博主允许不得转载。 前面介绍完了table的data block和filter block,今天就来讲table收一下尾,table还剩meta index block,index block,footer这几个都比较简单,就一起介绍了table.h中是用来解析一个table的,在没搞懂table是什么东西前直接解析有点困难,而了解table最快速的办法就是看怎么t原创 2017-06-09 17:21:58 · 987 阅读 · 1 评论 -
Leveldb源码解析第四篇【sstable添加key的流程】
版权声明:本文为博主原创文章,未经博主允许不得转载。添加一个key-value需要构造一个TableBuilder 在构造TableBuilder时会构造一个Rep Rep里面有BlockBuilder类型的data_block和index_block,还有FilterBlockBuilder类型的filter_block index_block的重启点频率设置为1(默认是16) filter_b原创 2017-06-09 17:22:51 · 790 阅读 · 1 评论 -
Leveldb源码解析第五篇【memtable之skiplist】
版权声明:本文为博主原创文章,未经博主允许不得转载。 前面讲到了在 table 中插入数据,然后将数据持久化到磁盘中,这些都是一下底层的操作,用户真正写数据是放到内存中。本章就来介绍 key-value 在内存的操作skiplistkey-value 存放在在内存中采用的结构是 skiplist,结构如下所示head_------>7---------------------------------原创 2017-06-09 17:25:54 · 2080 阅读 · 0 评论 -
Leveldb源码解析第六篇【memtable】
版权声明:本文为博主原创文章,未经博主允许不得转载。 数据在插入内存中的时候会在key前面和后面添加不同的表示,形成多种分类搞懂Memtable需要阅读如下源码db/MemTable.h db/MemTable.cc db/dbformat.h db/dbformat.ccMemTable.hclass MemTable { public: // 构造方法,传入的是InternalKey类型的比原创 2017-06-09 17:28:18 · 947 阅读 · 0 评论 -
Leveldb源码解析第七篇【log】
版权声明:本文为博主原创文章,未经博主允许不得转载。 这里的 log 非彼 log,这里的 log 是记录下用户的所有操作,防止设备异常导致 memtable 里面的数据丢失,用户在操作数据的时候首先会将操作写到 log 中,然后才会对数据进行操作 log相关的源码文件有 db/log_format.h db/log_reader.h db/log_reader.cc db/log_writer原创 2017-06-09 17:29:33 · 947 阅读 · 0 评论