导语
内容提要
当我们选择、使用并维护一个数据库系统时,理解它的原理至关重要。但是现今有太多的分布式数据库和工具可供使用,要想弄明白每一种工具的作用以及它们之间的区别往往并不容易。在这本实用指南中,作者讲解了现代数据库和存储引擎背后的概念。
通过本书,你将领略到从众多书籍、论文、博客和多个开源数据库源代码中精心选取的相关材料,并且了解到众多现代数据库之间最重要的区别在于决定存储结构和数据分布的子系统。
你将深入了解如下内容:
·存储引擎:学习存储的种类、分类依据,理解基于B树和不可变日志存储结构的存储引擎。
·存储构建块:理解数据库文件如何使用诸如页缓存、缓冲池等辅助数据结构来组织构建高效的存储。
·分布式系统:逐步学习节点和进程间如何连接并构建复杂的通信模式。
·数据库集群:深入探究现在数据库中常用的一致性模型,并了解分布式存储系统是如何实现一致性的。
作者简介
亚历克斯·彼得罗夫(Alex Petrov)是一位数据基础架构工程师,数据库和存储系统的狂热爱好者,Apache Cassandra提交者和PMC成员,精通存储、分布式系统和算法。
目录
前言
第一部分 存储引擎
第1章 简介与概述
1.1 数据库架构
1.2 内存数据库与磁盘数据库
1.3 面向列与面向行的数据库
1.3.1 面向行的数据布局
1.3.2 面向列的数据布局
1.3.3 区别与优化
1.3.4 宽列式存储
1.4 数据文件和索引文件
1.4.1 数据文件
1.4.2 索引文件
1.4.3 间接的主索引
1.5 缓冲、不可变性和有序性
1.6 本章小结
第2章 B树基础知识
2.1 二分搜索树
2.1.1 树的平衡
2.1.2 基于磁盘存储的树
2.2 基于磁盘的结构
2.2.1 机械硬盘
2.2.2 固态硬盘
2.2.3 磁盘存储结构
2.3 无处不在的B树
2.3.1 B树的层次结构
2.3.2 分隔键
2.3.3 B树查找复杂度
2.3.4 B树查找算法
2.3.5 键的数目
2.3.6 B树的节点分裂
2.3.7 B树的节点合并
2.4 本章小结
第3章 文件格式
3.1 动机
3.2 二进制编码
3.2.1 原始类型
3.2.2 字符串和变长数据
3.2.3 按位打包的数据:布尔值、枚举值和标志
3.3 通用原理
3.4 页的结构
3.5 分槽页
3.6 单元格布局
3.7 将单元格放进分槽页
3.8 管理变长数据
3.9 版本
3.10 校验和
3.11 本章小结
第4章 B树的实现
4.1 页头
4.1.1 魔数
4.1.2 同级指针
4.1.3 最右指针
……
第5章 事务处理与恢复
第6章 B树的变体
第7章 日志结构存储
第一部分总结
第二部分 分布式系统
第8章 简介与概述
第9章 故障检测
第10章 领导者选举
第11章 复制和一致性
第12章 反熵和传播
第13章 分布式事务
第14章 共识
第二部分总结
参考文献