好书推荐 好书速递 排行榜 读书文摘

精通LevelDB

精通LevelDB
作者:廖环宇 / 张仕华
出版社:机械工业出版社
出版年:2021-11
ISBN:9787111693260
行业:其它
浏览数:2

内容简介

全书分为3个部分:

第1部分介绍LevelDB的背景知识,主要描述LevelDB是什么,具有什么样的特性,有什么样的应用场景。此外,分析LevelDB的源代码目录结构,介绍其总体架构与设计思想,并对个各个子模块的功能进行简要的描述。

第二部分,按前面划分好的软件模块,对每一个模块进行详细的介绍。在模块详细介绍时,着重讲清每个模块的原理及其在LevelDB中的具体作用,并有针对性的加入一些C++编程规范相关的内容。

通过阅读本书,读者不仅能学习高性能Kev/Value数据库的实现原理,还能掌握LevelDB中几个经典的数据结构与模块,如SSTable、LSM等,对未来的应用与开发设计提供重要的参考。

......(更多)

作者简介

廖环宇,中南大学硕士、阿里云高级算法专家与工业大脑算法团队负责人,长期致力于人工智能算法与工业大数据技术的研究和实践,主导过许多大型数据智能平台的开发与应用。

张仕华,贝壳找房资深软件开发工程师,毕业于北京科技大学,曾就职于360、滴滴。热衷源码研究与探究技术本质,合著有《Redis 5设计与源码分析》。

......(更多)

目录

前言

第1章 初识LevelDB 1

1.1 键-值数据库的提出与价值 1

1.2 LevelDB的诞生过程 2

1.3 LevelDB的特性 3

1.4 LevelDB的性能分析 4

1.5 LevelDB的衍生产品 5

1.5.1 RocksDB 6

1.5.2 SSDB 7

1.6 小结 8

第2章 基本数据结构 9

2.1 string与Slice 9

2.2 错误处理Status 10

2.3 key比较函数接口Comparator 11

2.4 迭代器接口 13

2.5 系统参数 14

2.5.1 DB参数Options 14

2.5.2 读操作参数ReadOptions 16

2.5.3 写操作参数WriteOptions 16

2.6 小结 17

第3章 LevelDB使用入门 18

3.1 源码简介 18

3.1.1 目录结构 18

3.1.2 安装与编译 19

3.1.3 引用头文件 20

3.2 创建(打开)与关闭数据库 21

3.3 数据的读、写与删除 23

3.4 数据批量操作 24

3.5 迭代器与key的查询操作 26

3.5.1 前向与反向迭代循环遍历 26

3.5.2 按key的范围进行查询 27

3.6 性能优化方案 28

3.6.1 启用压缩 28

3.6.2 启用Cache 29

3.6.3 启用FilterPolicy 30

3.6.4 key的命名设计 30

3.7 小结 31

第4章 总体架构与设计思想 32

4.1 键-值存储系统的基本要求 32

4.2 Bigtable与LevelDB 33

4.3 主要模块功能介绍 34

4.4 主要操作流程分析 36

4.4.1 数据库Open流程分析 36

4.4.2 数据Get流程分析 39

4.4.3 数据Put与Write流程分析 42

4.4.4 快照生成与读取分析 46

4.5 小结 48

第5章 公用基础类 49

5.1 LevelDB跨平台编程 49

5.1.1 LevelDB操作系统可移植方案 49

5.1.2 LevelDB移植到操作系统接口规范 50

5.1.3 POSIX可移植操作系统接口 55

5.1.4 原子指针与内存屏障 61

5.2 文件操作 66

5.2.1 顺序文件操作 66

5.2.2 随机文件操作 73

5.2.3 Log文件操作 77

5.3 Env操作环境抽象接口 81

5.3.1 PosixEnv对象 84

5.3.2 EnvWrapper与InMemoryEnv 93

5.4 int数值编码 99

5.4.1 什么是编码 99

5.4.2 int定长数值编码 100

5.4.3 int变长数值编码 102

5.5 内存管理 104

5.5.1 Arena内存池的基本思想 105

5.5.2 Arena内存池的定义与原理 105

5.5.3 Arena内存的分配 108

5.5.4 内存使用率统计 114

5.5.5 非内存池的内存分配优化 115

5.6 小结 116

第6章 Log模块 117

6.1 Log文件格式定义 117

6.2 Log文件读写操作 119

6.2.1 Log文件写入 119

6.2.2 Log文件读取 122

6.3 记录Log文件 124

6.4 从Log文件恢复MemTable 125

6.5 小结 126

第7章 MemTable模块 127

7.1 MemTable插入与查找 127

7.1.1 MemTable插入 128

7.1.2 MemTable查找 129

7.2 SkipList插入与查找 131

7.2.1 SkipList插入 132

7.2.2 SkipList查找 134

7.3 MemTable生成SSTable 136

7.4 小结 137

第8章 SSTable模块 139

8.1 SSTable文件格式 139

8.1.1 SSTable的组成 140

8.1.2 块格式 141

8.1.3 数据索引区域 145

8.1.4 数据区域 145

8.1.5 元数据索引区域 145

8.1.6 元数据区域 146

8.2 SSTable的读写流程 148

8.2.1 生成块 148

8.2.2 读取块 151

8.2.3 生成SSTable 152

8.2.4 读取SSTable 156

8.3 布隆过滤器的实现 158

8.3.1 布隆过滤器的设计 160

8.3.2 布隆过滤器的使用 162

8.4 LRU Cache的实现 166

8.4.1 LRU Cache的设计 167

8.4.2 LRU Cache的使用 173

8.5 小结 174

第9章 多版本管理与Compaction原理 176

9.1 多版本管理机制 177

9.1.1 VersionEdit机制 177

9.1.2 Version机制 182

9.1.3 VersionSet机制 187

9.1.4 Manifest机制 189

9.2 Compaction原理 189

9.2.1 触发时机 190

9.2.2 文件选取 191

9.2.3 执行流程 195

9.2.4 文件清理 197

9.3 小结 199

附录 LevelDB的演进 200

......(更多)

读书文摘

......(更多)

猜你喜欢

点击查看