-
内容大纲
本书是一本指导DBA进行数据库开发和运维的实用手册,本书共9章,包括漫谈数据库、如何提升数据库性能、如何运维好数据库、如何进行数据库设计、如何做好数据库之间的数据同步、认识HTAP技术、认识数据库的功能原理、认识数据库中的数学(逻辑与算法),以及DBA的日常:数据库管理及开发的最佳实践。另有附录DBA杂谈。
本书内容是资深DBA多年实践经验的归纳总结,涵盖DBA日常工作中的主要方面,通过剖析众多的真实案例,并解读原理、分享技巧、提供思路,内容具备较强的启发性和指导性。
本书的受众包括但不限于想要了解如何提升数据库性能的应用开发人员、DBA、业务架构师、IT架构师、数据架构师、数据分析师、系统架构师、解决方案架构师和企业高级管理人员。 -
作者介绍
-
目录
序言1
序言2
序言3
前言
第1章 漫谈数据库
1.1 什么是数据库
1.2 数据库发展史
1.2.1 国外数据库的历史
1.2.2 国内数据库的历史
1.3 数据库的主要分类
1.3.1 关系数据库:传统交易数据库
1.3.2 键值数据库:基于KV键值对的内存数据库
1.3.3 列式数据库:列式存储的分析型数据库
1.3.4 文档型数据库:松散型数据结构的数据库
1.3.5 图数据库:用于社交图谱的数据库
1.3.6 时序数据库:适用于物联网场景的数据库
1.3.7 搜索引擎数据库:全文索引的数据库
1.3.8 多模数据库:具有多种数据库模式的融合数据库
1.3.9 最容易忽视的数据库——移动端数据库
1.4 数据库应用的发展趋势
1.4.1 国外数据库应用发展趋势
1.4.2 国内数据库应用发展趋势
1.5 数据库与新兴数字技术
1.5.1 数据库与大数据技术
1.5.2 数据库的延伸:区块链、物联网
1.6 与数据库长相厮守的DBA
1.6.1 DBA的定义与内涵
1.6.2 DBA的工作职责
1.6.3 DBA需要具备的能力
1.6.4 DBA的价值
1.6.5 DBA是可以做一辈子的职业
第2章 如何提升数据库性能
2.1 通过索引提升性能
2.1.1 索引的概念及原理
2.1.2 索引的种类
2.1.3 规避索引使用的误区
2.1.4 通过索引实现海量数据中的高效查询
2.1.5 自动化索引:数据库自治的趋势
2.2 通过SQL优化提升性能
2.2.1 SQL优化实现高速执行任务
2.2.2 慎用分页有效提升性能
2.2.3 从认知上杜绝低效SQL
2.3 避免数据库对象设计失误
2.3.1 避免不必要的多表关联导致的低效查询
2.3.2 避免动态计算结果没有单独存储导致的低效查询
2.3.3 避免没有明确需求查询条件导致的低效查询
2.3.4 避免过度分表
2.4 从识别需求的合理性提升性能
2.4.1 拒绝无效需求
2.4.2 正确理解开发需求
2.4.3 拒绝不合理的需求
2.4.4 引导业务改善需求
2.5 减少IO操作提升数据库性能
2.5.1 正确认识数据库的性能
2.5.2 减少IO交互——批量写入数据(MySQL)
2.5.3 减少IO交互——批量写入数据(Oracle)
2.5.4 减少IO交互——批量写入数据(PostgreSQL)
2.5.5 精简架构
第3章 如何运维好数据库
3.1 运维好数据库的关键:处理故障
3.1.1 常见的数据库故障类型
3.1.2 数据库故障的危害
3.2 分析处理数据库故障的关键点
3.2.1 分析数据库故障的主要原因——SQL
3.2.2 分析SQL的主要问题——处理速度慢
3.2.3 分析数据库参数对数据库的影响
3.2.4 分析硬件短板带来的问题——IO吞吐能力与CPU计算能力
3.3 数据库故障处理的典型案例分析
3.3.1 一次Elasticsearch误删除的故障分析
3.3.2 一次配置文件丢失导致的MySQL数据库故障分析
3.3.3 一次In-Memory丢失引起的故障分析
3.3.4 一次疑似分区查询异常的故障分析
3.3.5 一次数据库归档导致的故障分析
3.3.6 一次数据库binlog写入失败的故障分析
3.3.7 一次两表关联导致的故障分析
3.3.8 数据库连接数与连接复用不当的故障分析
3.3.9 一次数据库CPU使用率100%的故障分析
3.3.10 一次数据库索引不当引起的故障分析
3.3.11 一次数据库主从延迟过大的故障分析
3.3.12 一次数据库主从不一致的故障分析
3.3.13 一次Redis数据库无法启动的故障分析
3.3.14 一次MySQL数据库数据类型不恰当导致的故障
3.3.15 一次数据库全表查询的优化
第4章 如何进行数据库设计
4.1 数据库都有哪些架构
4.1.1 集中式架构
4.1.2 分布式架构
4.1.3 数据库内部的体系架构
4.1.4 “烟囱”式的数据库架构
4.1.5 独立业务线的数据库架构
4.2 根据实际场景选择数据库架构
4.3 五个维度谈数据库选型
4.3.1 从业务场景特征维度
4.3.2 从数据规模大小维度
4.3.3 从用户自身开发团队能力维度
4.3.4 从用户自身运维团队能力维度
4.3.5 从公司管理能力维度
4.4 数据库拆分的利与弊
4.4.1 数据库拆分的背景
4.4.2 数据库拆分的三大问题:一致性、数据关联、数据同步
4.4.3 分表带来的问题:一致性、聚合、排序、扩缩容
4.5 如何看待数据库的合并
4.5.1 为何要做数据库合并
4.5.2 数据库合并的意义:降成本、提升稳定性
4.5.3 数据库合并带来的问题:鸡蛋放在一个篮子里
4.5.4 数据库合并的前提:高质量SQL、硬件的进步、稳定的基础环境
4.6 CAP理论与分布式数据库
4.6.1 CAP理论概述
4.6.2 CAP理论的延展
4.6.3 分库分表不是分布式数据库
4.7 如何看待数据库与中间件
4.7.1 数据库与中间件:上下游的“难兄难弟”
4.7.2 中间件内存溢出的原因:源头还是数据库
4.7.3 适当减少数据库与中间件的数量:避免不必要的故障节点
第5章 如何做好数据库之间的数据同步
5.1 数据同步的作用
5.1.1 实现数据传输
5.1.2 实现数据汇聚
5.1.3 实现数据迁移
5.2 数据库同步的分类
5.2.1 同构数据库的同步
5.2.2 异构数据库的同步
5.2.3 数据库到消息队列的同步
5.2.4 数据库到Hadoop的数据同步
5.3 同构数据库数据同步的示例
5.3.1 使用dblink实现Oracle数据库之间的数据同步
5.3.2 使用物化视图实现远程Oracle数据库之间的数据同步
5.3.3 使用插件实现MySQL数据库之间的数据同步
5.3.4 利用数据同步实现MySQL的版本升级
5.3.5 采用多源复制的功能实现MySQL数据库之间的数据同步
5.3.6 采用主从模式实现PostgreSQL主从数据同步
5.4 异构数据库同步的实例——基于OGG
5.4.1 CDC简介
5.4.2 OGG概述
5.4.3 OGG微服务版的安装部署
5.4.4 使用OGG for Oracle实现Oracle数据库之间的数据同步
5.4.5 使用OGG for MySQL实现MySQL与异构数据库的同步
5.4.6 使用OGG for BigData实现大数据组件与异构数据库的数据同步
第6章 认识HTAP技术
6.1 HTAP的概念及其价值
6.1.1 HTAP:混合事物/分析处理
6.1.2 HTAP的价值
6.2 HTAP的几种实现方式
6.2.1 垂直方向的实现:以Oracle数据库为例
6.2.2 水平方向的实现:以MySQL、TiDB数据库为例
6.2.3 其他类型数据库的实现方式
第7章 认识数据库的功能原理
7.1 优化器——基于统计学原理
7.2 数据库的查询——火山模型
7.3 数据库AI——向量化
7.4 编译执行
第8章 认识数据库中的数学(逻辑与算法)
8.1 数据库中的典型逻辑与算法
8.1.1 从斐波那契数列到数据分析
8.1.2 增加数据维度处理——减少关联
8.1.3 多表关联算法——一对多与多对多
8.1.4 排除处理算法——笛卡儿积
8.1.5 函数算法——对SQL的影响
8.2 动态规划法在数据库中的应用
8.2.1 动态规划原理1:爬楼梯
8.2.2 动态规划原理2:背包问题
8.2.3 动态规划的五部曲
8.3 数据库开发中的逻辑思维
8.3.1 元数据的空与非空
8.3.2 优化器处理极值和极限:加速查询速度
8.3.3 并发处理热点的逻辑:避免锁
8.3.4 减库存的逻辑:从设计出发防止超卖
第9章 DBA的日常:数据库管理及开发的最佳实践
9.1 七个针对数据库特性的最佳实践
9.1.1 Oracle的DML重定向
9.1.2 Oracle的资源隔离
9.1.3 MySQL的延迟复制——挽救误删除
9.1.4 PostgreSQL的延迟复制
9.1.5 数据库对于磁盘IO吞吐的要求
9.2 面向执行器和优化器的最佳实践
9.2.1 主流数据库的事务异常处理机制对比(MySQL、PostgreSQL、Oracle)
9.2.2 MySQL和达梦两个数据库优化器的对比
9.2.3 SQL语句的解析过程分析
9.2.4 优化器的多表关联
9.2.5 SQL使用in进行子查询
9.2.6 数据归档和数据迁移
9.3 数据库的复制(克隆)与高可用受控切换的最佳实践
9.3.1 Oracle的PDB数据库克隆
9.3.2 MySQL克隆的关键点
9.3.3 MySQL的MGR架构以及受控切换
9.3.4 PostgreSQL的高可用切换
9.3.5 Redis的高可用切换
9.4 三个SQL编写的最佳实践
9.4.1 关于MyBatis开发框架使用绑定变量的实践
9.4.2 使用exists的SQL语句的改写
9.4.3 设计上出发减少SQL的标量子查询
9.5 时序数据库使用的最佳实践
9.5.1 时序数据库的数据库表设计
9.5.2 时序数据库的数据分析
附录 DBA杂谈
同类热销排行榜
- C语言与程序设计教程(高等学校计算机类十二五规划教材)16
- 电机与拖动基础(教育部高等学校自动化专业教学指导分委员会规划工程应用型自动化专业系列教材)13.48
- 传感器与检测技术(第2版高职高专电子信息类系列教材)13.6
- ASP.NET项目开发实战(高职高专计算机项目任务驱动模式教材)15.2
- Access数据库实用教程(第2版十二五职业教育国家规划教材)14.72
- 信号与系统(第3版下普通高等教育九五国家级重点教材)15.08
- 电气控制与PLC(普通高等教育十二五电气信息类规划教材)17.2
- 数字电子技术基础(第2版)17.36
- VB程序设计及应用(第3版十二五职业教育国家规划教材)14.32
- Java Web从入门到精通(附光盘)/软件开发视频大讲堂27.92
推荐书目
-
孩子你慢慢来/人生三书 华人世界率性犀利的一枝笔,龙应台独家授权《孩子你慢慢来》20周年经典新版。她的《...
-
时间简史(插图版) 相对论、黑洞、弯曲空间……这些词给我们的感觉是艰深、晦涩、难以理解而且与我们的...
-
本质(精) 改革开放40年,恰如一部四部曲的年代大戏。技术突变、产品迭代、产业升级、资本对接...