《深入浅出存储引擎》文小飞 | PDF下载|ePub下载
深入浅出存储引擎 版权信息
- 出版社:机械工业出版社
- 出版时间:2024-05-01
- ISBN:9787111753001
- 条形码:9787111753001 ; 978-7-111-75300-1
深入浅出存储引擎 本书特色
1.实战积淀,资深工程师倾囊相授:本书由互联网大厂资深工程师撰写,凝聚其多年一线实践经验,为读者提供了宝贵的存储引擎底层原理与实战攻略,助力高效掌握关键技术,从容解决业务挑战。2.问题导向,深度揭秘存储引擎:作者创新采用问题引导式教学法,通过一系列精心设计的问题逐步揭示存储引擎的奥秘,包括存储引擎特性、高频数据结构及存储介质等方面内容,让读者轻松理解并深化记忆。3.两大主流引擎深度解析:书中详尽阐述了B 树和LSM派系存储引擎的宏观原理与微观设计,辅以主流源码实现解读,让您既能把握整体架构,又能洞悉细微之处,全面提升对存储引擎的认知水平。4.理论联系实际,案例丰富:全书结合实际应用场景,以BoltDB和LevelDB为实例,细致剖析存储引擎的实际运作机制,无论是初学者还是资深开发者,都能从中获得深刻理解和实战指导。5.业界权威人士鼎力推荐:多位来自腾讯、PingCAP等知名企业的数据库技术专家联袂推荐,一致认为本书对于理解存储引擎原理、提升数据处理与优化能力具有重要价值,是每一位软件开发者及数据库从业者深入研究存储技术的理想读本。
深入浅出存储引擎 内容简介
全书分为3篇: 1.第1篇首先会详细讲解存储引擎的全貌,让读者能对存储引擎有一个整体的思维框架,介绍存储引擎的两大分支:基于b+树的存储引擎、基于lsm派系的存储引擎,其次对存储引擎部分涉及的一些数据结构、存储介质等概念做一个简要的介绍,为后面内容的深入学习做铺垫。 2.第二篇主要介绍基于b+树的存储引擎,在理论部分重点回答为什么选择b+树做存储引擎索引结构、b+树存储引擎解决哪些问题以及如何解决。在实践部分选择开源社区中比较有名的boltdb存储引擎项目来讲解其内部核心源码的实现细节。 3.第三篇主要介绍基于lsm派系的存储引擎,理论部分重点介绍lsm tree中各组件的功能及作用,并在此基础上扩展介绍其他几类lsm派系存储引擎的实现思路,帮助读者开阔视野,实践部分分别以bitcask、moss、leveldb等开源项目的核心源码来展开,介绍其内部实现细节。 通过阅读本书,读者不仅能对存储引擎,尤其是单机的存储引擎有一个整体的框架,而且能对两类存储引擎的实现思路及背后原理有个深刻的掌握,只有深刻理解了存储引擎的背后实现原理,读者不仅可以自己动手开发自己的存储引擎,更可以很快掌握关系型数据库或者NoSql这类组件的核心原理,对未来实际应用与开发提供参考。
深入浅出存储引擎 目录
前言
第1章 存储引擎概述1
1.1 数据存储体系1
1.1.1 OLTP、OLAP与HTAP1
1.1.2 关系数据库、NoSQL数据库与
NewSQL数据库2
1.1.3 内存型存储组件与磁盘型存储
组件8
1.1.4 读多写少组件、写多读少组件
和读多写多组件9
1.1.5 数据存储与检索10
1.2 数据存储的核心:存储引擎10
1.2.1 存储引擎整体架构10
1.2.2 存储引擎的共性问题13
1.3 存储引擎的分类13
1.3.1 读多写少:基于B 树的存储
引擎14
1.3.2 写多读少:基于LSM派系的
存储引擎15
1.4 小结17
第2章 索引数据结构18
2.1 基础数据结构18
2.1.1 数组18
2.1.2 链表20
2.2 Hash类数据结构22
2.2.1 Hash表22
2.2.2 位图27
2.2.3 布隆过滤器28
2.3 二叉树类数据结构32
2.3.1 二叉搜索树33
2.3.2 红黑树36
2.3.3 跳表45
2.4 多叉树类数据结构48
2.4.1 B树49
2.4.2 B 树57
2.4.3 其他多叉树61
2.5 小结61
第3章 数据存储介质64
3.1 内存65
3.1.1 内存的基本内容65
3.1.2 内存管理机制69
3.1.3 虚拟内存管理机制80
3.2 持久化内存92
3.3 磁盘96
3.3.1 磁盘的基本内容97
3.3.2 磁盘管理机制102
3.3.3 加速磁盘访问的方案111
3.4 小结112
第4章 从宏观角度理解B 树存储
引擎的原理113
4.1 B 树存储引擎产生的起点114
4.1.1 诞生的背景114
4.1.2 设计的目标116
4.2 B 树存储引擎方案选型117
4.2.1 数据结构方案对比117
4.2.2 目光转向磁盘118
4.2.3 索引维护和存储121
4.2.4 选择B树还是B 树125
4.3 B 树存储引擎方案选型结果128
4.3.1 方案选型结果128
4.3.2 反向论证130
4.4 小结130
第5章 从微观角度理解B 树存储
引擎的工程细节132
5.1 边界条件处理132
5.1.1 B 树在磁盘和内存中的映射132
5.1.2 读操作的处理133
5.1.3 写操作的处理137
5.2 异常情况处理154
5.2.1 异常情况总体分析154
5.2.2 数据部分写入的异常处理156
5.3 事务158
5.3.1 事务的基本概念158
5.3.2 并发控制160
5.4 范围查询与全量遍历170
5.5 小结171
第6章 BoltDB核心源码分析172
6.1 BoltDB整体结构172
6.1.1 BoltDB项目结构172
6.1.2 BoltDB整体实现架构173
6.2 page解析175
6.2.1 page基本结构176
6.2.2 元数据页177
6.2.3 空闲列表页179
6.2.4 分支节点页183
6.2.5 叶子节点页186
6.3 node解析187
6.3.1 B 树结构概述187
6.3.2 node结构分析187
6.3.3 node的增删改查189
6.3.4 node分裂190
6.3.5 node合并195
6.4 Bucket解析199
6.4.1 Bucket结构分析199
6.4.2 Bucket遍历的Cursor核心
结构分析201
6.4.3 Bucket的增删改查206
6.4.4 KV数据的增删改查210
6.4.5 Bucket的分裂和合并211
6.5 Tx解析213
6.5.1 Tx结构分析213
6.5.2 Commit()方法分析214
6.5.3 Rollback()方法分析217
6.6 DB解析219
6.6.1 DB结构分析219
6.6.2 Open()方法分析221
6.6.3 Begin()方法分析224
6.6.4 Update()和View()方法分析226
6.6.5 Batch()方法分析227
6.7 小结229
第7章 深入理解LSM Tree原理232
7.1 LSM Tree的发展背景232
7.2 从零推导LSM Tree234
7.2.1 存储介质的选择234
7.2.2 写请求的处理234
7.2.3 读请求的处理239
7.3 LSM Tree的架构演进240
7.3.1 数据更新分类240
7.3.2 双组件LSM Tree结构241
7.3.3 多组件LSM Tree结构242
7.3.4 实际的LSM Tree结构243
7.4 LSM Tree的核心问题245
7.4.1 数据压缩/合并245
7.4.2 数据分区246
7.4.3 读放大、写放大和空间放大249
7.4.4 写放大优化251
7.5 小结252
第8章 LSM派系存储引擎253
8.1 LSM Tree存储引擎253
8.1.1 LSM Tree工程应用253
8.1.2 LSM Tree的KV分离存储
技术WiscKey256
8.2 LSM Hash存储引擎264
8.2.1 LSM Hash的起源264
8.2.2 Bitcask的核心原理265
8.3 LSM Array存储引擎269
8.3.1 LSM Array的设计思想269
8.3.2 Moss的核心原理270
8.4 其他LSM存储引擎274
8.4.1 LSM存储引擎扩展274
8.4.2 消息队列Kafka存储引擎275
8.5 小结277
第9章 LevelDB核心源码分析278
9.1 LevelDB概述278
9.1.1 LevelDB整体架构279
9.1.2 LevelDB项目结构280
深入浅出存储引擎 作者简介
文小飞,在腾讯负责推荐系统后台核心模块研发工作,擅长go语言,熟悉推荐系统后台工作;对网络编程、微服务rpc框架、存储、分布式共识算法(raft)等技术比较感兴趣。