数据密集型应用系统设计

Martin Kleppmann

出版时间

2018-09-01

ISBN

9787519821968

评分

★★★★★

标签

编程

书籍介绍

全书分为三大部分:

第一部分,主要讨论有关增强数据密集型应用系统所需的若干基本原则。首先开篇第1章即瞄准目标:可靠性、可扩展性与可维护性,如何认识这些问题以及如何达成目标。第2章我们比较了多种不同的数据模型和查询语言,讨论各自的适用场景。接下来第3章主要针对存储引擎,即数据库是如何安排磁盘结构从而提高检索效率。第4章转向数据编码(序列化)方面,包括常见模式的演化历程。

第二部分,我们将从单机的数据存储转向跨机器的分布式系统,这是扩展性的重要一步,但随之而来的是各种挑战。所以将依次讨论数据远程复制(第5章)、数据分区(第6章)以及事务(第7章)。接下来的第8章包括分布式系统的更多细节,以及分布式环境如何达成一致性与共识(第9章)。

第三部分,主要针对产生派生数据的系统,所谓派生数据主要指在异构系统中,如果无法用一个数据源来解决所有问题,那么一种自然的方式就是集成多个不同的数据库、缓存模块以及索引模块等。首先第10章以批处理开始来处理派生数据,紧接着第11章采用流式处理。第12章总结之前介绍的多种技术,并分析讨论未来构建可靠、可扩展和可维护应用系统可能的新方向或方法。

AI导读
核心看点
  • 系统梳理分布式系统核心概念
  • 深入解析数据模型与存储引擎
  • 剖析批处理与流处理架构设计
适合谁读
  • 后端开发及架构师进阶必读
  • 对分布式系统感兴趣的开发者
  • 希望深入理解底层原理的工程师
读前提醒
  • 内容硬核,需结合实践反复阅读
  • 后半部分翻译质量较差,建议看原版
  • 重在理解权衡取舍,非具体技术教程
读者共识
  • 被誉为后端架构师的圣经级神作
  • 信息量巨大,需耐心啃读才能消化
  • 帮助建立完整的数据系统知识体系

本导读基于书籍简介、目录、原文摘录、短评和书评生成,不等同于全文精读。

精彩摘录
  • "UDP is a good choice in situations where delayed data is worthless. For example, in a VoIP phone call, there probably isn’t enough time to retransmit a lost packet before its data is due to be played over the loudspeakers. In this case, there’s no point in retransmitting the packet—the application m"
  • "For data warehouse queries that need to scan over millions of rows, a big bottleneck is the bandwidth for getting data from disk into memory. However, that is not the only bottleneck. Developers of analytical databases also worry about efficiently using the bandwidth from main memory into the CPU ca"
  • "Sending a packet over a network or making a request to a network service is normally a transient operation that leaves no permanent trace. Although it is possible to record it permanently (using packet capture and logging), we normally don’t think of it that way. Even message brokers that durably wr"
  • "SSI is fairly new: it was first described in 2008 [40] and is the subject of Michael Cahill's PhD thesis. ... it has the possibility of being fast enough to become the enw default in the future."
  • "Detecting writes that affect prior reads (the write occurs after the read)."
  • "In the context of two-phased locking we discussed index-range locks. .. Wee can use a similar technique here, except that SSI don't block other transactions. When a transaction writes to the database, it must look in the indexes for any other transactions that have recently read the affected data. T"
  • "In practice, isolation is unfortunately not that simple. Serializable isolation has a performance cost, and many databases don’t want to pay that price. It’s therefore common for systems to use weaker levels of isolation, which protect against some concurrency issues, but not all. Those levels of is"
  • "One thing that document and graph databases have in common is that they typically don't enforce a schema for the data they store, which can make it easier to adapt applications to changing requirements. However, your application most likely still assumes that data has a certain structure; it's just "
作者简介
作者简介 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

显示全部
用户评论
CRUD程序员进阶必读之书。近年来读的最爽的技术书,很多方面在实际工作中都涉及到了,并且给出了自己的解决方案,但是看完本书,想把以前的再实现一下——虽然这是几乎不可能的。
书是好书,但是对我有点超纲了,有几章云里雾里;吐槽第三部分很多错别字、翻译不通顺;当做是第一遍通读一下。
学习分布式的好书,包罗万象:数据库、缓存、消息队列、RPC;MAPREDUCE,一致性算法,流式设计等等,后面的参考文献也很有价值,关于分布式的好书太少,感觉还是要看paper啊。具体细分领域不熟悉导致部分内容理解不是很深刻,感觉以后有必要再读一遍。读完才发现现在的系统都是面向数据设计的。
通读了一遍,对这个分布式存储领域有一个完整的认识;会再细读一遍,结合文中的引用和MIT6.824来看。 这本书对单机存储、分布式存储系统都做了详细的说明;作者是个搞研究的,会详细的比较多种设计之间的优缺点,方便读者理解,我还挺喜欢这个套路的。 前两部分翻译的还不错, 翻译上第三部分略差,不过整体不影响阅读。
20190815第一遍。啃了大半个月才啃完,一二部分对我很有帮助,基本上梳理并讨论了现有工业界分布式系统的各种理论及其实现细节。这本书应该作为后端架构的必读书目,对很多笼罩着光环的各种架构服务很有祛媚效果。每章后面的参考文献是个大宝藏,需要好好阅读。
第一部分还挺惊艳的,但是深度不够 第二部分就比较平庸了 第三部分内容垃圾,特别第十二章翻译错别字多 没有深度,总体三颗星吧,比这本书好的技术书太多了
除了第十二章有些发散过远之外,其他部分的章节内容可以说很具有实际意义。从很高维度的抽象思维来阐述系统设计在不同领域之内的挑战和局限。篇幅虽然很长,但并没有感觉到有废话,全书读下来像是读了一篇超级长的论文综述。最终的效果就是给人一种在这个领域内眼界全开的感觉。
讲解数据密集应用的各种难点,很多知识是第一次从书中的角度思考问题,值得反复读
从春节前断断续续读到年后,本书真是一本值得花时间看的书。 虽然本人也仅仔细阅读了第一、二部分(第三部分可能是翻译或者没兴趣原因,扫了下),但真是对以前知识的巩固与更深次理解。 对本人对有益的就是《复制》、《分区》部分,太赞了 当然,本人认为最精华部分就是第二部分
花了一个月时间系统读完,这几年来读得最畅快的一本技术书,可能跟作者的研究背景有关,很多理论问题描述得非常清楚,同时也兼顾了实现的细节,让我找回了当年学计算机网络的感觉。可以看出作者的研究功底跟开发背景都相当深厚,几乎涉及到了分布式系统的方方面面的细节,因此是一本值得反复阅读参考的好书。 另外看到最后几章的翻译真的是无语,到处是病句和错别字,一看果然后面几张是另一个人翻译的。2022年印刷的书,勘误还有待进步,不知道该通过什么渠道反馈。
下载
收藏