前言

前言

本书将介绍数据库专业人员未来的发展方向:数据库可靠性工程师,并讨论人们对数据库管理员工作内容的先入之见。任何与数据库管理员交互过的软件工程师或系统工程师都可能有很多这样的先入之见。

传统上,数据库管理员充分理解数据库的内部结构。他们每日与程序优化和查询引擎打交道,并以设计和调整高性能、专业化的系统为业。当需要运用其他技能来让数据库更好地运行时,他们便去学习,例如学习如何在 CPU 或磁盘之间分配负载,如何配置数据库以提高 CPU 性能,以及如何评估存储子系统。

当遇到可见性问题时,数据库管理员会学习如何为关键指标构建图表;当遇到架构限制时,他们会去了解缓存层;当遇到单点瓶颈时,他们会学习(并帮助推动开发)新的设计模式,比如分片。其间他们掌握了新的操作技术,例如缓存失效、数据重新分布和滚动升级数据库变更等。

长期以来,数据库管理员总是忙于自己的事。各岗位所用的工具不同,硬件不同,语言也不同:数据库管理员用 SQL,系统工程师用 Perl,软件工程师用 C++,Web 开发人员用 PHP,网络工程师则在打造自己的工具。只有一半的团队以某种方式使用过版本控制系统,而且他们不会谈论或干涉彼此的领域。这是为何?因为那样就会踏入陌生领域。

这种模式有效和可持续的好日子快到头了。本书通过数据库工程师的视角来展现可靠性工程。本书无意涵盖所有内容,而是描述对你的职业生涯重要的事情。而且,该框架适用于各种数据存储、架构和组织。

写作初衷

本书是我们近 5 年工作的经验总结。莱恩没有接受过任何正式的技术培训就担当了数据库管理员。她既不是软件工程师,也不是系统管理员,而是从音乐和戏剧行业转入技术领域的。数据库的结构、和谐、对位和编排的思想深深吸引了她。

自那时起,她便开始学习数据库知识,并与近百名数据库管理员一起工作过。数据库人员的背景五花八门,有些有软件背景,有些有系统背景,有些甚至来自数据分析领域和商业领域。然而,优秀的数据库管理员对公司数据的安全性和可用性始终怀抱热情,以为己任,以无上的激情和超高的工作强度履行职责。此外,数据库管理员也在软件工程师和系统工程师之间扮演关键角色。由于涉及各个领域,数据库管理员也被视为最初的 DevOps 工程师。

夏丽蒂一直在创业公司从事运维工作。她有丰富的创业公司工作经历,擅于快速启动基础设施、做出关键决策、承担风险以及基于有限资源做出艰难选择,并屡获成功。一个偶然的机会,喜欢数据的她成为了数据库管理员。因为之前她所在的运维团队没有专门的数据库管理员,所以开发团队和运维团队最终承担了数据库管理员的工作。

我们基于长期的工作经历以及不同的职业背景,重新审视并拥抱近十年的变化。数据库管理员的工作通常艰辛而默默无闻。现在,有了方法和公众支持来把这个角色“点亮”,让数据库管理员可以专注于创造更多价值。

本书力图延续前几代人的影响,帮助下一代工程师享受职业生涯,取得更多成就。

读者对象

本书适合所有对设计、构建和运维可靠性数据存储系统感兴趣的人士。无论是希望拓展数据库相关知识的软件工程师或系统工程师,还是希望进一步提升技能的数据库专业人员,都能从本书获益。行业新人也能通过阅读本书加深理解,毕竟本书讲的是框架。

本书假设你基本掌握了 Linux/UNIX 系统管理以及 Web 或云架构的基础技术,对其他专业(系统管理或软件工程)有一定了解,想拓展技能(数据库软件技术);或者你正处于职业生涯的初期或中期,希望朝着数据库专家的方向深化技术。

如果你是管理人员,甚至是项目管理人员,阅读本书可以了解服务对数据存储的需求。我们坚信,管理人员需要理解数据库的原理和运维,以助力团队和项目取得成功。

你可能没有传统的技术背景。也许你是“半路出家”的数据库管理员,曾经是业务分析师,进入了数据库的知识海洋来学习如何使用数据库。很多数据库专业人员是通过 Excel 而不是开发或系统方面的工作踏入数据库领域的。

内容安排

本书分为两大部分:前一部分是运维核心课程,讲解数据库工程师、软件工程师,甚至产品负责人都应该掌握的运维基础知识;后一部分将深入研究数据本身,包括建模、存储、复制、访问等,还会讨论架构选型和数据流水线技术。

有这样一种说法:如果你不是优秀的工程师,就不是优秀的可靠性工程师,更不可能成为优秀的数据库可靠性工程师。现代数据库可靠性工程师专门研究系统工程基础之上的数据特定领域问题。

重点是,任何工程师都可以运行数据服务。我们有共同的语言,使用相同的代码库和相同的代码审查流程。运维数据库是运维工程的延伸(像把特定知识和认知的奶油糖霜按比例覆在运行一定规模系统的蛋糕上),正如杰出的网络工程师不仅要知道如何成为工程师,还要知道如何处理流量、应该担心出现什么状况、当前的最佳实践、如何评估网络拓扑结构等。

每章的内容简介如下。

第 1 章介绍数据库可靠性工程的概念。从指导原则开始,然后过渡到运维核心,最后基于马斯洛的需求层次理论介绍建立数据库可靠性工程师愿景的框架。

第 2 章介绍服务等级的要求,这和产品的特性要求同样重要。这一章将讨论什么是服务等级的要求及其定义方式,这一内容并不像听起来那么简单。然后将讨论随着时间的推移如何衡量和处理这些要求。

第 3 章讨论风险评估和管理。简单讨论风险后,介绍将风险评估纳入系统和数据库工程的实际流程,并且讲解其中的陷阱和复杂性。

第 4 章讨论运维可见性。这一章会讨论度量值和事件、如何设置度量指标,以及如何随着时间迭代。我们将深入讲解监控系统的组件及其客户端。

第 5 章和第 6 章深入讨论基础设施工程和管理,包括为数据存储服务构建主机的原则。我们将深入研究虚拟化和容器化、配置管理、自动化、编排,帮助你理解构建存储系统所需的全部动态组件。

第 7 章介绍备份和恢复。这也许是数据库工程师需要掌握的最关键的技术。数据丢失意味着一切都完了。从服务等级的要求开始,我们评估恰当的备份和恢复方法,以及如何扩展和测试这一在运维中非常重要却容易被忽略的操作。

第 8 章讨论发布管理。这一章将介绍如何对数据存储服务进行测试、构建和部署变更,以及如何更改数据访问代码和 SQL。部署、集成和交付是这一章的核心内容。

第 9 章讨论数据安全。数据安全关乎公司存亡。这一章将讲解在不断演进的数据库基础设施中规划和管理安全性的策略。

第 10 章讨论数据存储、索引和复制。这一章将介绍关系数据是如何存储的,然后将其与有序字符串和 LSM 树进行比较。在回顾各种索引之后,将探索数据复制拓扑。

第 11 章是数据存储领域指南,将讨论评估或操作的数据存储的各种属性,其中包括对应用程序开发人员和架构师而言都非常重要的概念属性,以及侧重于数据存储物理实现的内部属性。

第 12 章介绍分布式数据库的常用架构模式,以及其中用到的数据流水线技术。首先会介绍数据库生态系统中典型的架构组件及其优点、复杂性和一般用法,然后介绍架构和数据流水线技术,并给出少量示例。

第 13 章介绍如何在组织中建设数据库可靠性工程文化,探讨在当今情形下,从传统管理员转变为数据库可靠性工程师的多种方法。

排版约定

本书使用以下排版约定。

  • 黑体

    表示新术语或重点强调的内容。
     

  • 等宽字体(constant width

    表示程序片段,以及正文中出现的变量、函数名、数据库、数据类型、环境变量、语句和关键字等。
     

  • 等宽粗体(constant width bold

    表示应该由用户输入的命令或其他文本。
     

  • 等宽斜体(constant width italic

    表示应该由用户输入的值或根据上下文确定的值替换的文本。

 该图标表示提示或建议。

 该图标表示普通的注记。

 该图标表示警告或警示。

O'Reilly在线学习平台(O'Reilly Online Learning)

近 40 年来,O'Reilly Media 致力于提供技术和商业培训、知识和卓越见解,来帮助众多公司取得成功。

我们拥有独一无二的专家和革新者组成的庞大网络,他们通过图书、文章、会议和我们的在线学习平台分享他们的知识和经验。O'Reilly 的在线学习平台允许你按需访问现场培训课程、深入的学习路径、交互式编程环境,以及 O'Reilly 和 200 多家其他出版商提供的大量文本和视频资源。有关的更多信息,请访问 https://oreilly.com

联系我们

请把对本书的评价和问题发给出版社。

美国:

  O'Reilly Media, Inc.

  1005 Gravenstein Highway North

  Sebastopol, CA 95472

中国:

  北京市西城区西直门南大街 2 号成铭大厦 C 座 807 室(100035)

  奥莱利技术咨询(北京)有限公司

O'Reilly 的每一本书都有专属网页,你可以在那儿找到本书的相关信息,包括勘误表 1、示例代码以及其他信息。本书的网站地址是:http://bit.ly/database-reliability-engineering

1可以访问本书图灵社区页面(https://www.ituring.com.cn/book/2103)查看或提交中文版勘误。——编者注

对于本书的评论和技术性问题,请发送电子邮件到:bookquestions@oreilly.com

要了解更多 O'Reilly 图书、培训课程、会议和新闻的信息,请访问以下网站:http://www.oreilly.com

我们在 Facebook 的地址如下:https://facebook.com/oreilly

请关注我们的 Twitter 动态:https://twitter.com/oreillymedia

我们的 YouTube 视频地址如下:https://www.youtube.com/oreillymedia

电子书

扫描如下二维码,即可购买本书中文版电子版。

{%}

目录

  • 版权声明
  • O'Reilly Media, Inc. 介绍
  • 前言
  • 第 1 章 数据库可靠性工程介绍
  • 第 2 章 服务等级管理
  • 第 3 章 风险管理
  • 第 4 章 运维可见性
  • 第 5 章 基础设施工程
  • 第 6 章 基础设施管理
  • 第 7 章 备份和恢复
  • 第 8 章 发布管理
  • 第 9 章 安全
  • 第 10 章 数据存储、索引和复制
  • 第 11 章 数据存储领域指南
  • 第 12 章 数据架构示例
  • 第 13 章 数据库可靠性工程师行为指南
  • 关于作者
  • 封面介绍