数据密集型应用系统设计
出版信息
Martin Kleppmann / 赵军平、李三平、吕云松、耿煜 / 中国电力出版社 / 2018-9-1 / 128
内容简介
全书分为三大部分:
第一部分,主要讨论有关增强数据密集型应用系统所需的若干基本原则。首先开篇第1章即瞄准目标:可靠性、可扩展性与可维护性,如何认识这些问题以及如何达成目标。第2章我们比较了多种不同的数据模型和查询语言,讨论各自的适用场景。接下来第3章主要针对存储引擎,即数据库是如何安排磁盘结构从而提高检索效率。第4章转向数据编码(序列化)方面,包括常见模式的演化历程。
第二部分,我们将从单机的数据存储转向跨机器的分布式系统,这是扩展性的重要一步,但随之而来的是各种挑战。所以将依次讨论数据远程复制(第5章)、数据分区(第6章)以及事务(第7章)。接下来的第8章包括分布式系统的更多细节,以及分布式环境如何达成一致性与共识(第9章)。
第三部分,主要针对产生派生数据的系统,所谓派生数据主要指在异构系统中,如果无法用一个数据源来解决所有问题,那么一种自然的方式就是集成多个不同的数据库、缓存模块以及索引模块等。首先第10章以批处理开始来处理派生数据,紧接着第11章采用流式处理。第12章总结之前介绍的多种技术,并分析讨论未来构建可靠、可扩展和可维护应用系统可能的新方向或方法。
作者简介
作者简介
Martin Kleppmann是英国剑桥大学分布式系统方向的研究员。此前,他曾是LinkedIn和Rapportive等互联网公司的软件工程师,负责大规模数据基础设施建设。在此过程中他遇到过一些困难,因此他希望这本书能够帮助读者避免重蹈覆辙。Martin还是一位活跃的会议演讲者、博主和开源贡献者。他认为,每个人都应该学习深刻的技术理念,对技术的深入理解能帮助我们开发出更好的软件。
译者简介
赵军平, 大数据存储与分析资深开发者与推广者(EMC 10余年),GPU异构计算的亲历者。中国计算机协会专家委员,DELL EMC资深架构师。12年系统研发、创新与团队管理经验,擅长数据存储与保护, 云计算与大数据实时分析,GPU异构加速优化等。相关领域已申请中、美技术专利100余项,并多次在SNIA,LinuxConf,Hadoop Summit, Nvidia GPU Tech Conf等做技术分享,持续关注数据密集和计算密集相关技术的演进、融合与赋能推广。
吕云松,北京大学计算机硕士,硕士及DELL EMC中国研究院实习期间专注于大数据实时流式处理相关的研究。现就职于华为2012中软院黎曼实验室,主要从事深度学习的研发。
耿煜,DELL EMC架构师兼GTM负责人,致力于推广企业级数字化转型方案。深耕分布式架构以及云计算12年,先后任职于ChinaCache,Sun Microsystems以及EMC等公司。
李三平,美国麻省大学计算机工程专业博士,DELL EMC中国研究院首席科学家,研究方向为机器学习、深度学习、智能运维、遥感影像等。已在IEEE Transactions期刊和会议上发表论文数十篇,申请美国专利20余项。推崇简约,热衷机器学习。
目录
前言 .....................................................1
第一部分 数据系统基础
第1章 可靠、可扩展与可维护的应用系统 ................... 11
认识数据系统 ...........................................12
可靠性 ..................................................14
可扩展性 ................................................18
可维护性 ................................................25
小结 .....................................................28
第2章 数据模型与查询语言 ............................... 33
关系模型与文档模型 .......................................34
数据查询语言 ...........................................46
图状数据模型 ......................................52
小结 ...................................................65
第3章 数据存储与检索 .................................. 71
数据库核心:数据结构 ...................................72
事务处理与分析处理 ...................................89
列式存储 .........................................94
小结 ..............................................101
第4章 数据编码与演化 .............................. 109
数据编码格式 .................................... 110
数据流模式 ......................................124
小结 .............................................134
第二部分 分布式数据系统
第5章 数据复制 ................................. 145
主节点与从节点 ..................................146
复制滞后问题 ......................................154
多主节点复制 .......................................160
无主节点复制 .....................................168
小结 ..............................................181
第6章 数据分区 ............................... 189
数据分区与数据复制 .................................190
键-值数据的分区 ...................................190
分区与二级索引 ...................................195
分区再平衡 ....................................198
请求路由 ..................................202
小结 .................................204
第7章 事务 .............................. 211
深入理解事务 ......................................212
弱隔离级别 .................................221
串行化 ...........................................237
小结 ...........................................250
第8章 分布式系统的挑战 ...................... 259
故障与部分失效 ...............................260
不可靠的网络 ..................................262
不可靠的时钟 ..................................271
知识,真相与谎言 ...............................282
小结 ..........................................292
第9章 一致性与共识 ..................... 303
一致性保证 ....................................304
可线性化 ........................................305
顺序保证 ........................................319
分布式事务与共识 .................................330
小结 ...............................................349
第三部分 派生数据
第10章 批处理系统 ................................ 367
使用UNIX工具进行批处理 .............................368
MapReduce与分布式文件系统 .........................375
超越MapReduce ....................................394
小结 ............................................403
第11章 流处理系统 .............................. 413
发送事件流 .......................................414
数据库与流 .......................................424
流处理 .........................................435
小结 ............................................449
第12章 数据系统的未来 ............................ 461
数据集成 .........................................461
分拆数据库 .......................................469
端到端的正确性 ....................................484
做正确的事情 .......................................500
小结 ..............................................509
术语表 ............................................ 521