内容简介
本书详细剖析了作为核心基础软件系统的数据库在云计算时代的技术演进历程,从架构设计、实现机制和系统优化等多个角度阐述传统数据库技术是如何一步步发展到云原生形态的。本书强调理论和实践的充分结合,分析MySQL、PostgreSQL等工业界“活”的系统实现数据库的SQL优化与执行、事务处理、缓存与索引等原理,在面对实际应用需求时做了哪些权衡与折中,面对复杂的应用场景如何优化,以及做出种种选择背后的原因。同时,本书结合阿里云在数据库领域的研发实践经验,着重讲述现代数据库从系统进化到服务的一系列核心技术原理,例如利用云计算资源池化技术、分布式技术实现数据库的高可用、弹扩展和按需使用等。本书内容实,兼具理论深度和实现细节,同时开放地探索了数据库的新发展方向,能够启发读者进一步深入思考。本书可作为高等院校信息类专业的本科生和硕士研究生教材,也可作为数据库行业的内核研发和系统运维等从业人员的参考书。
目录
目 录第1章 数据库发展历程 11.1 数据库发展概述 21.1.1 萌芽 21.1.2 商业化起步 31.1.3 发展成熟 31.1.4 云原生与分布式时代 41.2 数据库技术发展趋势 61.2.1 云原生与分布式 61.2.2 大数据与数据库一体化 61.2.3 软硬件一体化 71.2.4 多模 71.2.5 智能化运维 81.2.6 可信 81.3 关系数据库主要技术原理 81.3.1 接入管理 91.3.2 查询引擎 101.3.3 事务处理 141.3.4 存储引擎 17参考文献 19第2章 数据库与云原生 202.1 数据库在云时代的发展 212.1.1 云计算时代的兴起 212.1.2 数据库作为一种服务 222.2 数据库在云原生时代面临的挑战 232.3 云原生数据库的主要特点 242.3.1 分层架构 242.3.2 资源解耦与池化 242.3.3 弹伸缩能力 242.3.4 高可用与数据一致 252.3.5 多租户与资源隔离 262.3.6 智能化运维 26参考文献 26第3章 云原生数据库架构 273.1 设计理念 283.1.1 云原生数据库的本质 283.1.2 计算与存储分离 293.2 架构设计 303.3 典型的云原生数据库 313.3.1 AWS Aurora 313.3.2 PolarDB 373.3.3 Microsoft Socrates 40参考文献 44第4章 存储引擎 454.1 数据组织 464.1.1 B+树 474.1.2 InnoDB引擎中的B+树 494.1.3 LSM-tree 524.2 并发控制 564.2.1 基本概念 564.2.2 锁方法 564.2.3 时间戳方法 584.2.4 MVCC 614.2.5 InnoDB MVCC的实现 634.3 日志与恢复 654.3.1 基本概念 654.3.2 逻辑日志 664.3.3 物理日志 664.3.4 恢复原理 674.3.5 MySQL的Binlog 684.3.6 InnoDB的物理日志 684.4 新型LSM存储引擎 704.4.1 PolarDB X-Engine 704.4.2 高能事务处理 724.4.3 软硬结合优化 754.4.4 低成本分层存储 784.4.5 双存储引擎技术 844.4.6 实验评估 85参考文献 88第5章 高可用共享存储系统 895.1 高可用基础 905.1.1 Primary-Backup 905.1.2 Quorum 925.1.3 Paxos 935.1.4 Raft 955.1.5 Parallel Raft 985.2 集群高可用 1005.2.1 MySQL集群高可用 1005.2.2 PolarDB高可用 1035.3 共享存储架构 1165.3.1 Aurora存储系统 1175.3.2 PolarFS 1195.4 文件系统优化 1215.4.1 用户态I/O计算 1215.4.2 存储计算 124参考文献 130第6章 数据库缓存 1316.1 数据库缓存简介 1326.1.1 数据库缓冲作用 1326.1.2 缓冲池 1326.2 缓存恢复 1336.2.1 云环境对缓存的挑战 1336.2.2 基于CPU与内存分离的缓存恢复 1336.3 PolarDB的实践 1356.3.1 缓冲池的优化 1356.3.2 数据字典缓存和文件系统缓存的优化 1406.3.3 基于RDMA的共享内存池 141参考文献 146第7章 计算引擎 1477.1 查询处理概述 1487.1.1 数据库查询处理概述 1487.1.2 并行查询概述 1497.2 查询执行模型 1517.2.1 火山模型 1517.2.2 编译执行模型 1527.2.3 向量化执行模型 1527.3 查询优化概述 1537.3.1 查询优化整体介绍 1537.3.2 逻辑查询优化 1537.3.3 物理查询优化 1547.3.4 其他优化方法 1547.4 PolarDB查询引擎实践 1557.4.1 PolarDB的并行查询技术 1557.4.2 PolarDB的执行计划管理 1687.4.3 PolarDB的向量化执行 175参考文献 178第8章 云原生与分布式融合 1798.1 分布式数据库的基本原理 1808.1.1 分布式数据库架构 1808.1.2 数据分区 1818.1.3 分布式事务 1838.1.4 MPP并行查询处理 1878.2 分布式与云原生 1888.2.1 共享存储架构 1898.2.2 无共享存储架构 1898.3 云原生分布式数据库 PolarDB-X 1908.3.1 架构设计 1908.3.2 拆分方式 1918.3.3 全局二级索引 1928.3.4 分布式事务 1938.3.5 HTAP 193参考文献 194第9章 云原生数据库PolarDB 应用实践 1959.1 创建云上实例 1969.2 数据库接入 1989.2.1 相关账号的创建 1989.2.2 图形化访问 1989.2.3 连接方式访问 1999.3 基本操作 2029.3.1 数据库与表创建 2029.3.2 创建测试数据 2039.3.3 账号与权限管理 2049.3.4 数据查询 2059.4 云上数据迁移 2089.4.1 云上数据的迁入 2089.4.2 云上数据的导出 211第10章 PolarDB运维管理 21210.1 数据库运维概述 21310.2 扩展资源 21310.2.1 系统扩展 21310.2.2 手动升降配 21310.2.3 手动增减节点 21410.2.4 自动升降配和增减节点 21410.3 备份与恢复 21510.3.1 备份 21510.3.2 恢复 21710.4 监控与诊断 21810.4.1 监控与报警 21810.4.2 诊断与优化 218参考文献 220