🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
### DBA修炼之道:数据库管理员的第一本书(原书第2版) #### 内容简介 · · · · · · 【编辑推荐】 资深数据库管理专家30余年经验结晶,全面阐释数据库管理的各种技术问题与解决方法; 实战性强,包含大量典型数据管理分析经验,为快速掌握并灵活运用数据库管理技术提供最佳指导。 【名家推荐】 我已经不记得多少次向人推荐这本书了。这本书写得好,重要的是,它涵盖了成为一名高效DBA所需要知道的所有方面。 ——Scott Ambler,敏捷数据方法的领导者 这是一本精心编写和组织的数据库管理实践的指南。不像一般的数据库理论或关系数据库理论书籍,这本书更直接地侧重于当今数据库专业人员进行数据库管理的理论与实践,并且没有太多迎合任何特定的产品实施。因此,数据库管理非常适合那些有兴趣研究DBA或类似但更具体的角色(如数据建模或数据库性能分析师)的职责的人。 ——Sal Ricciardi,微软项目经理 Craig的特点之一是他的写作清晰、易读。任何技术类书籍的主要目的是在作者和读者之间传递信息,这一点Craig做得很棒。他希望读者学习,并且完整表达了自己的想法。 ——Chris Foot,远程DBA专家和Oracle ACE 本书涉及DBA任务和职责的完整且全面的清单,从创建数据库环境到数据仓库管理,以及中间可能会发生的一切。 ——Mike Tarrani,计算机顾问 我认为,每一名业务经理和IT经理都应该拥有这样一本书。 ——Dan Hotka,独立顾问和Oracle ACE Craig Mullins的这本书见解深刻。Mullins以卓越的洞察力清晰描述了现代企业中数据管理员和数据库管理员的角色以及他们的职责。 ——Michael Tozer,作家及前美国海军军官 【内容简介】 本书是资深数据库管理专家30余年经验的结晶,通过大量的典型数据管理分析经验,全面而系统地讲解数据库管理的各种技术问题与解决方法,内容全面而深入,包括创建数据库环境、数据建模、规范化、设计、性能、数据完整性、合规性、治理、安全、备份/恢复、灾难规划、数据和存储管理、数据移动/分布、数据仓库、连接、元数据、工具等。 全书共24章:第1~2章介绍如何建立可用的企业数据库环境;第3~4章阐释如何制定合理的数据模型和数据库设计,并将其应用于企业生产;第5~6章介绍应用创新的数据库功能,如时态数据和多级安全,以及部署运行良好并能保护数据完整性的应用程序;第7~8章介绍管理所有形式的数据库相关的变更和数据的可用性问题;第9~12章涉及系统优化性能和可用性方面的问题;第13~15章涉及部署现代数据安全程序和切实可行的数据管理策略;第16~17章介绍数据库备份/恢复和业务连续性规划;第18章介绍数据和存储设备的管理;第19章介绍一些用于将数据从一个位置移动到另一个位置并且在多个位置对数据提供支持的主要工具;第20~22章介绍数据仓库、数据集市和其他分析处理系统的管理;第23章介绍如何选用DBA工具,以节约时间和成本。第24章介绍DBA经验法则,帮助企业招聘顶级DBA人才,创建DBA职位描述。 举报 #### 作者简介 · · · · · · Craig S. Mullins 资深数据库管理专家,Mullins咨询公司(领先的数据和数据库管理咨询公司)总裁和首席顾问。从事数据库管理和研发逾30年,曾担任过多种数据库管理系统(包括DB2、Oracle和SQL Server)的应用程序开发人员、DBA和讲师,涉及的行业有制造业、金融、商业软件研发、教育、科研、公共事业和咨询等。由于他在DB2社区所做出的贡献,IBM曾授予他“信息管理冠军”的称号。他还著有《DB2开发人员指南》。 #### 目录 · · · · · · 译者序 前 言 致 谢 第1章 什么是DBA 1 1.1 为什么学习数据库管理 2 1.2 独特的优势 3 1.2.1 DBA的薪资 3 1.2.2 数据库技术 5 1.3 DBA的管理准则 6 1.4 评估DBA的工作邀请 10 1.5 数据库管理、数据管理和系统管理 10 1.5.1 数据管理 10 1.5.2 数据库管理 13 1.5.3 系统管理 13 1.6 DBA的任务 14 1.6.1 数据库设计 14 1.6.2 性能监控和调优 15 1.6.3 保证可用性 16 1.6.4 数据库安全和授权 16 1.6.5 治理与合规性 17 1.6.6 备份和恢复 18 1.6.7 确保数据完整性 18 1.7 DBMS版本迁移 19 1.8 DBA的类型 21 1.8.1 系统DBA 21 1.8.2 数据库架构师 21 1.8.3 数据库分析师 22 1.8.4 数据建模师 22 1.8.5 应用程序DBA 22 1.8.6 面向任务的DBA 24 1.8.7 性能分析师 24 1.8.8 数据仓库管理员 24 1.9 人员配备的考虑 24 1.9.1 需要多少DBA 25 1.9.2 DBA报告结构 26 1.10 跨平台的DBA问题 28 1.11 生产环境与测试环境 29 1.12 新技术对DBA的影响 30 1.12.1 过程DBA:管理数据库逻辑 30 1.12.2 互联网:从DBA到eDBA 33 1.12.3 个人DBA与云计算 35 1.12.4 NoSQL、大数据和DBA 37 1.12.5 新技术对DBA的影响 37 1.13 DBA认证 38 1.14 本书的其余部分 39 1.15 回顾 39 第2章 创建数据库环境 40 2.1 定义企业的DBMS策略 40 2.1.1 DBMS选型 41 2.1.2 DBMS架构 45 2.1.3 DBMS集群 47 2.1.4 DBMS泛滥 48 2.1.5 硬件问题 49 2.1.6 云数据库系统 49 2.2 安装DBMS 50 2.2.1 DBMS安装基础 50 2.2.2 硬件需求 50 2.2.3 存储需求 51 2.2.4 内存需求 52 2.2.5 配置DBMS 53 2.2.6 连接DBMS与基础设施配套软件 54 2.2.7 安装验证 54 2.2.8 DBMS环境 55 2.3 升级DBMS的主版本和次版本 55 2.3.1 产品特性与复杂性 58 2.3.2 DBMS环境的复杂性 59 2.3.3 DBMS供应商的声誉 59 2.3.4 DBMS的支持条款 59 2.3.5 企业风格 60 2.3.6 DBA人员技能组合 60 2.3.7 平台支持 60 2.3.8 配套软件 61 2.3.9 回滚计划 61 2.3.10 迁移验证 62 2.3.11 DBMS升级策略 62 2.4 数据库标准与过程 62 2.4.1 数据库命名约定 62 2.4.2 其他数据库标准和过程 65 2.5 DBMS教育 69 2.6 小结 70 2.7 回顾 70 2.8 推荐书目 71 第3章 数据建模与规范化 72 3.1 数据建模的概念 73 3.2 数据模型的组件 77 3.2.1 实体 77 3.2.2 属性 78 3.2.3 码 82 3.2.4 关联 82 3.3 发现实体、属性和关联 84 3.4 概念、逻辑和物理数据模型 85 3.5 什么是规范化 87 3.6 范式 87 3.6.1 第一范式 87 3.6.2 第二范式 89 3.6.3 第三范式 90 3.6.4 一个规范化的数据模型 91 3.6.5 进一步的范式 91 3.7 规范化实践 92 3.8 其他数据建模问题 92 3.9 小结 93 3.10 回顾 93 3.11 推荐书目 94 第4章 数据库设计 96 4.1 从逻辑模型到物理数据库 96 4.1.1 实体转换成表 97 4.1.2 属性转换成列 97 4.1.3 为所有关联建立引用约束 100 4.1.4 建立物理数据结构 100 4.2 数据库性能设计 102 4.2.1 索引设计 102 4.2.2 散列 107 4.2.3 集群 108 4.2.4 交叉数据 109 4.3 非规范化 109 4.3.1 何时进行非规范化 109 4.3.2 预连接表 111 4.3.3 报告表 111 4.3.4 镜像表 112 4.3.5 拆分表 112 4.3.6 组合表 114 4.3.7 冗余数据 114 4.3.8 重复组 114 4.3.9 可导性数据 115 4.3.10 层次结构 116 4.3.11 特殊物理实施需求 117 4.3.12 非规范化小结 117 4.4 视图 118 4.5 数据定义语言 119 4.6 时态数据支持 120 4.6.1 时态的例子 120 4.6.2 业务时间和系统时间 120 4.7 小结 121 4.8 回顾 122 4.9 推荐书目 123 第5章 应用程序设计 124 5.1 数据库应用程序开发和SQL 124 5.1.1 SQL 125 5.1.2 Set-at-a-Time处理和关系闭包 127 5.1.3 在程序中嵌入SQL语句 128 5.1.4 SQL中间件和API 129 5.1.5 应用程序基础架构 130 5.1.6 面向对象与SQL 134 5.1.7 SQL类型 135 5.1.8 SQL性能编码 136 5.1.9 查询XML数据 137 5.2 定义事务 138 5.2.1 事务指南 139 5.2.2 工作单元 140 5.2.3 事务处理系统 140 5.2.4 应用程序服务器 141 5.3 锁 142 5.3.1 锁的类型 143 5.3.2 锁超时 144 5.3.3 死锁 144 5.3.4 锁定持续时间 145 5.3.5 锁升级 148 5.3.6 最小化锁定问题的编程技术 148 5.3.7 锁定小结 149 5.4 批处理 149 5.5 小结 150 5.6 回顾 150 5.7 推荐书目 151 第6章 设计审查 153 6.1 什么是设计审查 153 6.1.1 交战规则 154 6.1.2 设计审查的参与者 154 6.1.3 所需的知识与技能 156 6.2 设计审查的类型 157 6.2.1 概念设计审查 158 6.2.2 逻辑设计审查 158 6.2.3 物理设计审查 159 6.2.4 组织设计审查 159 6.2.5 SQL与应用程序代码设计审查 160 6.2.6 部署前的设计审查 160 6.2.7 部署后的设计审查 161 6.3 设计审查输出 161 6.4 其他注意事项 161 6.4.1 应对远程工作人员 162 6.4.2 制度和知识迁移 162 6.5 小结 162 6.6 回顾 162 6.7 推荐书目 163 第7章 数据库变更管理 164 7.1 变更管理要求 165 7.2 变更的类型 167 7.2.1 DBMS软件 167 7.2.2 硬件配置 167 7.2.3 逻辑和物理设计 167 7.2.4 应用程序 168 7.2.5 物理数据库结构 168 7.3 数据库结构变更的影响 169 7.3.1 ALTER的限制 170 7.3.2 数据库变更业务场景 171 7.3.3 比较数据库结构 173 7.3.4 请求数据库变更 174 7.3.5 标准化的变更请求 174 7.3.6 沟通 175 7.3.7 协调数据库和应用程序变更 175 7.3.8 合规性 176 7.3.9 DBA脚本和变更管理 176 7.4 小结 177 7.5 回顾 177 7.6 推荐书目 177 第8章 数据可用性 178 8.1 定义可用性 179 8.2 停机成本 182 8.3 可用性问题 184 8.3.1 数据中心的丢失 184 8.3.2 网络问题 185 8.3.3 服务器硬件的丢失 185 8.3.4 磁盘相关的中断 187 8.3.5 操作系统故障 187 8.3.6 DBMS软件故障 188 8.3.7 应用程序问题 188 8.3.8 安全和授权问题 188 8.3.9 数据损坏 189 8.3.10 数据库对象丢失 189 8.3.11 数据丢失 190 8.3.12 数据复制和传播故障 190 8.3.13 严重的性能问题 191 8.3.14 恢复问题 191 8.3.15 DBA错误 191 8.3.16 计划内和计划外中断 193 8.4 确保可用性 193 8.4.1 系统正常运行时执行日常维护 194 8.4.2 自动化DBA任务 195 8.4.3 利用高可用性功能 196 8.4.4 利用集群技术 196 8.4.5 数据库架构和NoSQL 199 8.5 小结 200 8.6 回顾 200 8.7 推荐书目 201 第9章 性能管理 202 9.1 性能定义 202 9.2 监测与管理 205 9.2.1 被动与主动 206 9.2.2 生产前的性能评估 207 9.2.3 历史趋势 208 9.3 服务级别管理 208 9.4 性能调优的类型 210 9.4.1 系统调优 210 9.4.2 数据库调优 210 9.4.3 应用程序调优 211 9.5 性能调优工具 211 9.6 DBMS的性能基础 212 9.7 小结 213 9.8 回顾 213 9.9 推荐书目 214 第10章 系统性能 215 10.1 大环境 215 10.1.1 与操作系统交互 216 10.1.2 联合代理 216 10.1.3 硬件配置 217 10.1.4 DBMS组件 218 10.2 DBMS安装和配置问题 220 10.2.1 配置类型 221 10.2.2 内存使用 221 10.2.3 数据高速缓存 224 10.2.4 “开放的”数据对象 227 10.2.5 数据库日志 227 10.2.6 锁定与争用 231 10.2.7 系统目录 231 10.2.8 其他配置选项 232 10.2.9 一般性建议 233 10.3 系统监测 233 10.4 小结 234 10.5 回顾 234 10.6 推荐书目 235 第11章 数据库性能 236 11.1 优化数据库的技术 236 11.1.1 分区 237 11.1.2 原始分区与文件系统 237 11.1.3 索引 238 11.1.4 非规范化 240 11.1.5 集群 241 11.1.6 交叉数据 243 11.1.7 可用空间 243 11.1.8 压缩 244 11.1.9 文件放置与分配 245 11.1.10 页面大小(块大小) 246 11.2 数据库重组 247 11.2.1 决定何时进行重组 250 11.2.2 自动化 251 11.3 小结 251 11.4 回顾 251 11.5 推荐书目 252 第12章 应用程序性能 253 12.1 设计关系访问的应用程序 253 12.2 关系优化 254 12.2.1 CPU和I/O成本 255 12.2.2 数据库统计信息 255 12.2.3 查询分析 257 12.2.4 连接 257 12.2.5 访问路径选择 259 12.3 其他优化考虑 266 12.3.1 视图访问 266 12.3.2 查询重写 267 12.3.3 基于规则的优化 267 12.4 访问路径的审查 268 12.5 SQL的编码和调优效率 272 12.5.1 SQL经验法则一箩筐 272 12.5.2 其他SQL调优技巧 277 12.5.3 识别性能低下的SQL 277 12.6 小结 278 12.7 回顾 278 12.8 推荐书目 278 第13章 数据完整性 280 13.1 完整性的类型 280 13.2 数据库结构完整性 281 13.2.1 结构性问题的类型 281 13.2.2 管理结构性问题 281 13.3 语义数据的完整性 284 13.3.1 实体完整性 285 13.3.2 唯一约束 286 13.3.3 数据类型 286 13.3.4 默认值 287 13.3.5 检查约束 287 13.3.6 触发器 292 13.3.7 参照完整性 296 13.4 时态数据库系统 304 13.5 小结 305 13.6 回顾 306 13.7 推荐书目 306 第14章 数据库安全 308 14.1 数据泄露 308 14.2 数据库安全基础 309 14.3 授予和撤销授权 313 14.3.1 权限类型 313 14.3.2 授予PUBLIC 315 14.3.3 撤销权限 316 14.3.4 基于标签的访问控制 317 14.3.5 安全报告 319 14.4 授权角色和组 319 14.4.1 角色 319 14.4.2 组 320 14.5 其他数据库安全机制 321 14.5.1 安全使用视图 321 14.5.2 安全使用存储过程 322 14.6 加密 322 14.6.1 静态数据加密 323 14.6.2 传输过程的数据加密 324 14.6.3 加密技术 324 14.7 SQL注入攻击 325 14.8 审计 327 14.9 外部安全 328 14.9.1 作业调度和安全 329 14.9.2 非DBMS的DBA安全 329 14.10 DBMS补丁包和维护 330 14.11 小结 330 14.12 回顾 330 14.13 推荐书目 331 第15章 合规性和数据库管理 332 15.1 实现合规性的协作方法 334 15.2 元数据管理、数据质量和数据治理 335 15.2.1 元数据 335 15.2.2 数据质量 336 15.2.3 数据治理 336 15.3 数据库审计和数据访问跟踪 336 15.3.1 数据库审计技术 338 15.3.2 特权用户审计 340 15.4 数据屏蔽和模糊 341 15.5 用于长期数据保留的数据库归档 342 15.5.1 数据的生命周期 342 15.5.2 数据库归档 343 15.5.3 数据库归档解决方案的构成 346 15.5.4 e-Discovery对DBA的影响 347 15.6 密切跟踪传统的DBA任务 348 15.6.1 数据库变更管理 348 15.6.2 数据库备份和恢复 349 15.7 小结 350 15.8 回顾 351 15.9 推荐书目 351 第16章 数据库备份和恢复 353 16.1 备份和恢复的重要性 353 16.2 问题的准备工作 354 16.3 备份 354 16.3.1 完整备份与增量备份 357 16.3.2 数据库对象和备份 358 16.3.3 DBMS控制 359 16.3.4 并发访问问题 360 16.3.5 备份的一致性 361 16.3.6 日志归档和备份 362 16.3.7 确定备份计划 363 16.3.8 DBMS实例备份 365 16.3.9 设计恢复的DBMS环境 365 16.3.10 数据库备份的替代途径 365 16.3.11 记录备份策略 367 16.3.12 数据库对象定义备份 367 16.4 恢复 368 16.4.1 确定恢复选项 368 16.4.2 数据库对象恢复的一般步骤 370 16.4.3 恢复的类型 371 16.4.4 索引恢复 377 16.4.5 测试恢复计划 377 16.4.6 恢复删除的数据库对象 378 16.4.7 恢复损坏的块和页面 379 16.4.8 填充测试数据库 379 16.5 替代性备份和恢复 379 16.5.1 备用数据库 380 16.5.2 复制 380 16.5.3 磁盘镜像 381 16.6 小结 381 16.7 回顾 381 16.8 推荐书目 382 第17章 防灾规划 383 17.1?计划的必要性 383 17.2?一般灾难恢复指南 386 17.2.1 远程站点 386 17.2.2 书面计划 386 17.2.3 人员 389 17.3?为灾难恢复备份数据库 389 17.3.1 磁带备份 390 17.3.2 存储管理备份 391 17.3.3 其他方法 392 17.3.4 一些指导 392 17.4?灾难防治 393 17.5?小结 394 17.6?回顾 394 17.7?推荐书目 395 第18章 数据和存储管理 396 18.1?存储管理基础 396 18.2?文件和数据集 399 18.2.1 磁盘上的文件放置 399 18.2.2 原始分区和文件系统 401 18.2.3 临时数据库文件 401 18.3?空间管理 401 18.3.1 数据页面布局 402 18.3.2 索引页面布局 404 18.3.3 事务日志 406 18.4?碎片和存储 407 18.5?存储选项 407 18.5.1 RAID 408 18.5.2 JBOD 414 18.5.3 存储区域网络 414 18.5.4 网络附加存储 414 18.5.5 分层存储 415 18.6?规划未来 416 18.7?小结 417 18.8?回顾 417 18.9?推荐书目 418 第19章 数据移动与分布 419 19.1?装卸数据 419 19.1.1 LOAD实用程序 420 19.1.2 UNLOAD实用程序 422 19.1.3 维护应用程序测试台 425 19.2?导出与导入 426 19.3?批量数据移动 426 19.3.1 ETL软件 426 19.3.2 复制和传播 427 19.3.3 消息软件 427 19.3.4 其他方法 428 19.4?分布式数据库 428 19.4.1 建立分布式环境 430 19.4.2 数据分布的标准 431 19.4.3 访问分布式数据 432 19.4.4 两阶段COMMIT 433 19.4.5 分布式性能问题 433 19.5?小结 434 19.6?回顾 434 19.7?推荐书目 435 第20章 数据仓库管理 436 20.1?什么是数据仓库 436 20.2?管理数据仓库 438 20.2.1 太专注于技术 439 20.2.2 数据仓库设计 439 20.2.3 数据移动 441 20.2.4 数据清理 441 20.2.5 数据仓库的可扩展性 444 20.2.6 数据仓库的性能 444 20.2.7 数据新鲜度 447 20.2.8 数据内容 447 20.2.9 数据使用 448 20.2.10 财务退款 448 20.2.11 备份与恢复 449 20.2.12 不要凭空操作 449 20.3?小结 450 20.4?回顾 450 20.5?推荐书目 450 第21章 数据库连接 452 21.1?多层、分布式计算 452 21.1.1 回顾历史 452 21.1.2 业务问题 453 21.1.3 C/S计算简介 453 21.1.4 C/S应用程序的类型 456 21.2?网络流量 459 21.2.1 数据库网关 459 21.2.2 数据库驱动程序 460 21.2.3 连接池 461 21.3?数据库、互联网和Web 461 21.3.1 接入互联网的数据库 462 21.3.2 Web开发和Web服务 465 21.4 小结 466 21.5?回顾 466 21.6?推荐书目 467 第22章 元数据管理 469 22.1 元数据简介 469 22.1.1 从数据到知识,再到更多 470 22.1.2 元数据策略 471 22.1.3 数据仓库和元数据 471 22.2?元数据的类型 471 22.3?资源库和数据字典 473 22.3.1 资源库的好处 474 22.3.2 资源库的挑战 475 22.3.3 数据字典 476 22.4?小结 476 22.5?回顾 477 22.6?推荐书目 477 第23章 DBA工具 479 23.1 DBA工具的类型和好处 479 23.1.1 数据建模和设计 479 23.1.2 数据库变更管理 480 23.1.3 表编辑器 484 23.1.4 性能管理 485 23.1.5 备份与恢复 489 23.1.6 数据库实用程序 490 23.1.7 数据保护、治理、风险和合规性工具 491 23.1.8 数据仓库、分析和商业智能 494 23.1.9 编程和开发工具 496 23.1.10 杂项工具 497 23.2 研究原生DBA工具 499 23.3 评估DBA工具供应商 500 23.4 小结 502 23.5 回顾 503 第24章 DBA的经验法则 504 24.1 记录每一件事 504 24.2 一切都井然有序 504 24.3 自动化 505 24.4 知识共享 507 24.5 分析、简化和专注 508 24.6 不要惊慌 509 24.7 测量两次,切割一次 509 24.8 了解业务,不只是技术 510 24.9 不要成为隐士 511 24.10 任意使用所有的资源 511 24.11 不断更新 512 24.12 投资自己 512 24.13 小结 513 24.14 最后的检验 513 附录A 数据库基本原理 516 附录B DBMS供应商 521 附录C DBA工具供应商 526 附录D DBA的网络资源 531 附录E DBA公开招聘样本 538 参考书目 542 术语表 563 * * * * * http://down.51cto.com/data/2077225 * * * * * 数据库索引设计与优化 平装 – 2015年7月3日 塔皮奥·拉赫登迈奇 (Tapio Lahdenmaki) (作者), 迈克尔·利奇 (Michael Leach) (作者)