摘要: 一、SST文件结构分析 其中data block/filter block/meta_index block称之为 x block index block:每个key_value表示一个index entry,指向一个data block,key为data block中最大的key,value为8字 阅读全文
posted @ 2022-03-01 11:43 Z9Y1J5 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 一、log_writer.h分析 功能:可以将随机写的IO变成Append,极大提高了写磁盘速度;可以防止数据丢失 日志文件的名称由6位数字编号和log后缀组成 xx.log 日志文件格式: header放在buf中:crc(4字节)、length(2字节)、RecordType(1字节) 函数功能 阅读全文
posted @ 2022-03-01 11:09 Z9Y1J5 阅读(37) 评论(0) 推荐(0) 编辑
摘要: 〇、前置知识 写数据时分两步:1、将数据追加到日志中;2、将数据插入到内存数据库 sequenceNumber:leveldb数据存放形式是LSM,以追加的形式存储,相同key时以seqnumber来确定先后关系 write操作要记录到log文件中的格式为: 几种类型的key: user_key:用 阅读全文
posted @ 2022-03-01 10:42 Z9Y1J5 阅读(31) 评论(0) 推荐(0) 编辑
摘要: 一、skiplist.h(跳表)分析 用户只需要处理写冲突,leveldb跳表保证没有读写冲突。函数功能如下: Insert(): FindGreaterOrEqual():保存搜索的路径pre[],找到要插入的节点 KeyIsAfterNode():返回值bool,key是否大于n的数据 Rand 阅读全文
posted @ 2022-03-01 10:02 Z9Y1J5 阅读(28) 评论(0) 推荐(0) 编辑
摘要: 一、slice.h string都封装成了slice 支持的方法有:构造、拷贝构造、赋值、clear()、empty()、size() remove_prefix(n):指定长度前缀移除 starts_with(x):是否是以x开始 compare(x):返回值0/-1/1 二、hash.h 是Mu 阅读全文
posted @ 2022-03-01 09:34 Z9Y1J5 阅读(40) 评论(0) 推荐(0) 编辑
摘要: 一、概括 基本组件:接口方法、参数、数据存储、迭代器(遍历表)、string(自定义的,因为c++自带的拷贝花销大)、锁、状态信息(返回值) leveldb使用的是小端模式 功能:对外提供四个接口:put\delete\write\get 解决了什么问题:内容持久化、顺序读写 leveldb写流程: 阅读全文
posted @ 2022-03-01 08:45 Z9Y1J5 阅读(61) 评论(0) 推荐(0) 编辑