设计数据密集型应用(影印版) [Designing Data-Intensive Applications]

设计数据密集型应用(影印版) [Designing Data-Intensive Applications] pdf epub mobi txt 电子书 下载 2025

Martin Kleppmann 著
图书标签:
  • 数据密集型应用
  • 分布式系统
  • 数据库
  • 数据存储
  • 数据处理
  • 系统设计
  • 可扩展性
  • 可靠性
  • CAP理论
  • 数据工程
想要找书就要到 静流书站
立刻按 ctrl+D收藏本页
你会得到大惊喜!!
出版社: 东南大学出版社
ISBN:9787564173852
版次:1
商品编码:12186665
包装:平装
外文名称:Designing Data-Intensive Applications
开本:16开
出版时间:2017-10-01
用纸:胶版纸

具体描述

内容简介

书中包含以下内容:
? 深入分析你已经在使用的系统,并学习如何更高效地使用和运维这些系统
? 通过识别不同工具的优缺点,作出更明智的决策
? 了解一致性、可伸缩性、容错性和复杂度之间的权衡
? 理解分布式系统研究,这些研究是现代数据库构建的基石
? 走到一些主流在线服务的幕后,学习它们的架构

作者简介

Martin Kleppmann,是英国剑桥大学的一名分布式系统研究员。在此之前他曾是软件工程师和企业家,在 Linkedin 和 Rapportive 工作过,从事大规模数据基础设施相关的工作。Martin 经常在大会做演讲,写博客,也是开源贡献者。

精彩书评

“这本书太棒了,它在分布式系统理论和实际工程之间的巨大鸿沟上架起了一座桥梁。多希望十年前就能读到这本书,那么这些年来我犯的很多错误就都能避免了。”
——Jay Kreps(Apache Kafka 创始人,Confluent CEO)
“这是一本软件工程师的必读之作。《设计数据密集型应用》是能够连接理论和实践的稀有资料,它能帮助开发者在设计和实现数据基础设施及系统的时候作出明智的决策。”
——Kevin Scoot(微软CTO)

目录

Part I. Foundations of Data Systems
1. Reliable, Scalable, and Maintainable Applications 3
Thinking About Data Systems 4
Reliability 6
Hardware Faults 7
Software Errors 8
Human Errors 9
How Important Is Reliability? 10
Scalability 10
Describing Load 11
Describing Performance 13
Approaches for Coping with Load 17
Maintainability 18
Operability: Making Life Easy for Operations 19
Simplicity: Managing Complexity 20
Evolvability: Making Change Easy 21
Summary 22
2. Data Models and Query Languages 27
Relational Model Versus Document Model 28
The Birth of NoSQL 29
The Object-Relational Mismatch 29
Many-to-One and Many-to-Many Relationships 33
Are Document Databases Repeating History? 36
Relational Versus Document Databases Today 38
Query Languages for Data 42
Declarative Queries on the Web 44
MapReduce Querying 46
Graph-Like Data Models 49
Property Graphs 50
The Cypher Query Language 52
Graph Queries in SQL 53
Triple-Stores and SPARQL 55
The Foundation: Datalog 60
Summary 63
3. Storage and Retrieval 69
Data Structures That Power Your Database 70
Hash Indexes 72
SSTables and LSM-Trees 76
B-Trees 79
Comparing B-Trees and LSM-Trees 83
Other Indexing Structures 85
Transaction Processing or Analytics? 90
Data Warehousing 91
Stars and Snowflakes: Schemas for Analytics 93
Column-Oriented Storage 95
Column Compression 97
Sort Order in Column Storage 99
Writing to Column-Oriented Storage 101
Aggregation: Data Cubes and Materialized Views 101
Summary 103
4. Encoding and Evolution 111
Formats for Encoding Data 112
Language-Specific Formats 113
JSON, XML, and Binary Variants 114
Thrift and Protocol Buffers 117
Avro 122
The Merits of Schemas 127
Modes of Dataflow 128
Dataflow Through Databases 129
Dataflow Through Services: REST and RPC 131
Message-Passing Dataflow 136
Summary 139
Part II. Distributed Data
5. Replication 151
Leaders and Followers 152
Synchronous Versus Asynchronous Replication 153
Setting Up New Followers 155
Handling Node Outages 156
Implementation of Replication Logs 158
Problems with Replication Lag 161
Reading Your Own Writes 162
Monotonic Reads 164
Consistent Prefix Reads 165
Solutions for Replication Lag 167
Multi-Leader Replication 168
Use Cases for Multi-Leader Replication 168
Handling Write Conflicts 171
Multi-Leader Replication Topologies 175
Leaderless Replication 177
Writing to the Database When a Node Is Down 177
Limitations of Quorum Consistency 181
Sloppy Quorums and Hinted Handoff 183
Detecting Concurrent Writes 184
Summary 192
6. Partitioning 199
Partitioning and Replication 200
Partitioning of Key-Value Data 201
Partitioning by Key Range 202
Partitioning by Hash of Key 203
Skewed Workloads and Relieving Hot Spots 205
Partitioning and Secondary Indexes 206
Partitioning Secondary Indexes by Document 206
Partitioning Secondary Indexes by Term 208
Rebalancing Partitions 209
Strategies for Rebalancing 210
Operations: Automatic or Manual Rebalancing 213
Request Routing 214
Parallel Query Execution 216
Summary 216
7. Transactions 221
The Slippery Concept of a Transaction 222
The Meaning of ACID 223
Single-Object and Multi-Object Operations 228
Weak Isolation Levels 233
Read Committed 234
Snapshot Isolation and Repeatable Read 237
Preventing Lost Updates 242
Write Skew and Phantoms 246
Serializability 251
Actual Serial Execution 252
Two-Phase Locking (2PL) 257
Serializable Snapshot Isolation (SSI) 261
Summary 266
8. The Trouble with Distributed Systems 273
Faults and Partial Failures 274
Cloud Computing and Supercomputing 275
Unreliable Networks 277
Network Faults in Practice 279
Detecting Faults 280
Timeouts and Unbounded Delays 281
Synchronous Versus Asynchronous Networks 284
Unreliable Clocks 287
Monotonic Versus Time-of-Day Clocks 288
Clock Synchronization and Accuracy 289
Relying on Synchronized Clocks 291
Process Pauses 295
Knowledge, Truth, and Lies 300
The Truth Is Defined by the Majority 300
Byzantine Faults 304
System Model and Reality 306
Summary 310
9. Consistency and Consensus 321
Consistency Guarantees 322
Linearizability 324
What Makes a System Linearizable? 325
Relying on Linearizability 330
Implementing Linearizable Systems 332
The Cost of Linearizability 335
Ordering Guarantees 339
Ordering and Causality 339
Sequence Number Ordering 343
Total Order Broadcast 348
Distributed Transactions and Consensus 352
Atomic Commit and Two-Phase Commit (2PC) 354
Distributed Transactions in Practice 360
Fault-Tolerant Consensus 364
Membership and Coordination Services 370
Summary 373
Part III. Derived Data
10. Batch Processing 389
Batch Processing with Unix Tools 391
Simple Log Analysis 391
The Unix Philosophy 394
MapReduce and Distributed Filesystems 397
MapReduce Job Execution 399
Reduce-Side Joins and Grouping 403
Map-Side Joins 408
The Output of Batch Workflows 411
Comparing Hadoop to Distributed Databases 414
Beyond MapReduce 419
Materialization of Intermediate State 419
Graphs and Iterative Processing 424
High-Level APIs and Languages 426
Summary 429
11. Stream Processing 439
Transmitting Event Streams 440
Messaging Systems 441
Partitioned Logs 446
Databases and Streams 451
Keeping Systems in Sync 452
Change Data Capture 454
Event Sourcing 457
State, Streams, and Immutability 459
Processing Streams 464
Uses of Stream Processing 465
Reasoning About Time 468
Stream Joins 472
Fault Tolerance 476
Summary 479
12. The Future of Data Systems 489
Data Integration 490
Combining Specialized Tools by Deriving Data 490
Batch and Stream Processing 494
Unbundling Databases 499
Composing Data Storage Technologies 499
Designing Applications Around Dataflow 504
Observing Derived State 509
Aiming for Correctness 515
The End-to-End Argument for Databases 516
Enforcing Constraints 521
Timeliness and Integrity 524
Trust, but Verify 528
Doing the Right Thing 533
Predictive Analytics 533
Privacy and Tracking 536
Summary 543
Glossary 553
Index 559


《智能系统中的数据洞察与架构之道》 在这日新月异的科技浪潮中,数据已然成为驱动社会进步的核心引擎。从海量传感器收集的实时流,到支撑庞大电商平台的海量交易记录,再到人工智能模型训练所需的丰富数据集,数据以各种形态渗透进我们生活的方方面面,并深刻地影响着商业决策、科学研究乃至社会治理。然而,如何有效地存储、处理、分析和利用这些规模空前、类型多样、速度飞快的数据,已成为摆在技术从业者和决策者面前的一大挑战。 《智能系统中的数据洞察与架构之道》正是为了应对这一时代课题而诞生的。本书并非仅仅罗列技术名词或操作手册,而是致力于深入剖析支撑现代智能系统的核心数据原理,探讨如何构建能够应对复杂数据挑战的 robust(健壮)且 scalable(可扩展)的架构。我们希望带领读者超越表面的技术实现,去理解数据在系统中的生命周期,掌握驱动系统性能和可靠性的底层逻辑。 一、 理解数据的本质:从比特到价值 在着手构建数据系统之前,首要的是对数据本身有深刻的理解。本书将首先深入探讨数据的不同形态和特性。我们会从最基础的离散数据、连续数据讲起,进而讨论结构化数据、半结构化数据和非结构化数据之间的差异及其对存储和处理方式的影响。例如,关系型数据库中的表格数据、JSON/XML等格式的半结构化数据、以及图像、文本、音频等非结构化数据,它们在数据模型、查询语言和索引策略上都有着显著的区别。 更进一步,我们将解析数据的“量”(Volume)、“速”(Velocity)、“多样性”(Variety)以及“真实性”(Veracity)这些大数据时代的核心特征。这四“V”并非孤立存在,而是相互交织,共同塑造了数据系统的设计复杂度。理解这些特征,才能为后续的架构设计打下坚实的基础,避免盲目选择不适用的技术方案。 二、 数据存储的艺术:权衡与选择 数据存储是整个数据系统的基石。本书将带领读者全面审视各种主流的数据存储范式,并深入分析它们的设计哲学、适用场景以及各自的优缺点。 关系型数据库(Relational Databases):我们不会止步于SQL语法,而是探讨其背后ACID(Atomicity, Consistency, Isolation, Durability)事务模型的重要性,理解索引如何提升查询效率,以及表连接、数据规范化等概念如何影响数据的一致性和冗余。我们将讨论垂直扩展和水平扩展的策略,以及在面对超大规模数据时,传统关系型数据库可能面临的挑战。 NoSQL数据库:本书将对NoSQL家族进行细致的梳理,不仅仅是列举,而是深入理解其核心思想。 键值存储(Key-Value Stores):如Redis, Memcached,分析其极致的简单性和高吞吐量的秘密,以及在缓存、会话管理等场景的应用。 文档数据库(Document Databases):如MongoDB, Couchbase,探讨其灵活的模式,适合存储半结构化数据,以及在内容管理、用户配置等场景的优势。 列族数据库(Column-Family Stores):如Cassandra, HBase,理解其大规模并行处理能力,适合时间序列数据、日志存储等场景,以及其CAP(Consistency, Availability, Partition Tolerance)理论下的权衡。 图数据库(Graph Databases):如Neo4j, ArangoDB,深入理解其用于表示和查询复杂关系网络的强大能力,在社交网络、推荐系统、知识图谱等领域的应用。 数据仓库与数据湖(Data Warehouses and Data Lakes):我们会区分两者的概念,探讨数据仓库的结构化、面向主题的特点,以及其在商业智能(BI)和报告分析中的作用。同时,深入理解数据湖的灵活性,允许存储原始数据,并支持后续的多种分析处理,为高级分析和机器学习提供源头活水。 三、 数据处理的挑战:效率与实时性 海量数据的存储仅仅是第一步,如何高效地处理这些数据,提取有价值的信息,才是系统的核心价值所在。 批处理(Batch Processing):深入解析Hadoop MapReduce等经典批处理框架的设计理念,理解其分布式计算模型,以及在ETL(Extract, Transform, Load)和离线分析中的应用。我们还会探讨Spark等新一代批处理引擎,理解其内存计算的优势,以及在数据清洗、特征工程等场景的强大表现。 流处理(Stream Processing):在实时化趋势日益明显的今天,流处理技术变得至关重要。本书将详细介绍Apache Kafka, Flink, Storm等流处理平台。我们将探讨消息队列在解耦和缓冲中的作用,理解流处理的窗口机制、状态管理以及事件时间(Event Time)与处理时间(Processing Time)的区别。从实时推荐、欺骗检测到物联网数据监控,流处理正在重塑我们对实时信息的需求。 混合处理(Hybrid Processing):在实际应用中,批处理和流处理往往需要协同工作。我们将探讨如何构建能够同时满足离线分析和实时响应需求的混合架构,例如 Lambda 架构和 Kappa 架构的演进与对比。 四、 系统设计原则:可靠性、可扩展性与一致性 任何优秀的数据系统,都离不开对可靠性、可扩展性和一致性这三大核心原则的深刻把握。 可靠性(Reliability):故障是分布式系统不可避免的一部分。本书将探讨多种确保系统可靠性的机制,包括数据冗余、副本同步、故障检测与恢复、容错设计等。我们会分析单点故障(Single Point of Failure, SPOF)的风险,以及如何通过分布式共识算法(如Raft, Paxos)来保证数据的一致性。 可扩展性(Scalability):随着数据量的增长和用户请求的增加,系统必须能够平滑地扩展。我们将深入讨论垂直扩展(Scale Up)和水平扩展(Scale Out)的优劣,以及分片(Sharding)、分区(Partitioning)、负载均衡(Load Balancing)等技术如何实现系统的横向扩展。理解无状态服务与有状态服务的差异,以及如何设计能够弹性伸缩的微服务架构。 一致性(Consistency):在分布式系统中,保持数据的一致性是一个复杂且充满挑战的问题。我们将深入探讨CAP理论,理解其在分布式系统设计中的指导意义,以及强一致性(Strong Consistency)、最终一致性(Eventual Consistency)、因果一致性(Causal Consistency)等不同一致性模型。并讨论如何根据业务需求在可用性和一致性之间做出权衡。 五、 架构模式与最佳实践 理解了数据原理、存储和处理技术,以及核心设计原则,本书将进一步引导读者掌握实际的架构模式和最佳实践。 微服务架构与数据管理:如何在微服务环境中有效地管理数据,包括服务间的数据同步、分布式事务的处理、以及API网关在数据访问中的作用。 数据管道(Data Pipelines):如何设计和构建高效、可靠的数据管道,实现数据的自动化采集、转换、加载和分发,连接不同的数据存储和处理系统。 事件驱动架构(Event-Driven Architecture, EDA):理解事件在现代分布式系统中的核心地位,如何利用事件驱动的模式来解耦系统、实现高响应性和实时性。 可观测性(Observability):如何设计系统以实现有效的监控、日志记录和追踪,以便在出现问题时能够快速定位和诊断。 六、 安全与合规 在数据密集型应用中,数据安全和合规性是不可逾越的红线。本书将触及数据加密、访问控制、身份认证、数据脱敏以及GDPR等相关法规要求,提醒读者在设计和实施过程中必须考虑的安全性与合规性因素。 《智能系统中的数据洞察与架构之道》致力于为读者提供一套完整的知识体系,帮助您在理解数据本质的基础上,构建出高效、可靠、可扩展且安全的智能数据系统。无论您是数据库工程师、后端开发人员、数据科学家,还是系统架构师,本书都将为您打开一扇通往数据驱动未来的大门,助您在瞬息万变的科技领域中,把握先机,引领创新。

用户评价

评分

我一直认为,学习技术最怕的是“只知其一,不知其二”,或者“只知其然,不知其所以然”。这本书在这方面做得尤为出色。它并没有仅仅停留在介绍各种流行的数据库技术或者分布式框架,而是深入剖析了这些技术背后所依赖的理论基础和设计哲学。作者在讲解分布式事务、数据复制、一致性算法等核心概念时,总是能将它们置于一个更广阔的背景下去阐述,比如它会追溯到理论的源头,解释这些概念是如何被提出的,以及它们试图解决的核心问题是什么。这让我觉得,我不仅仅是在学习一个具体的技术,更是在理解一个领域的发展脉络和核心思想。这种深度和广度的结合,让这本书成为了一本既有理论高度,又有实践指导意义的宝藏。它让我能够举一反三,触类旁通,面对新的技术和问题时,也能够更快地抓住本质。

评分

这本书最大的价值在于,它不仅仅提供了“是什么”的知识,更重要的是它教会了我“为什么”和“怎么做”。在接触了这本书的内容之后,我发现自己在思考系统设计问题时,思路变得更加开阔和系统化。过去,我可能只会关注某个具体的技术点,比如选择哪种数据库,或者如何优化某个查询。但现在,我能够从更宏观的角度去审视整个系统的架构,去权衡不同的设计方案所带来的利弊。例如,在考虑数据的一致性问题时,我不再仅仅停留在ACID的层面,而是能够深入理解CAP理论的权衡,以及各种一致性模型在实际应用中的取舍。这种思维模式的转变,让我能够做出更明智、更符合实际需求的架构决策,避免走弯路。这本书就像是给我提供了一套强大的思维工具箱,让我能够更自信地去应对复杂的数据系统挑战。

评分

刚开始接触这本书的时候,我其实对“数据密集型应用”这个概念并没有一个特别清晰的画像。我一直认为,只要把数据存储好,然后写一些能处理数据的代码,应用也就差不多了。但是,随着阅读的深入,我才意识到事情远比我想象的要复杂和精妙得多。这本书让我看到了一个全新的维度,它不仅仅是在讲“如何存储和处理数据”,更是在探讨“如何构建能够高效、可靠、可扩展地处理海量数据的系统”。它像是一面镜子,照出了我过去在实际工作中可能存在的思维盲区和技术局限。我开始思考,那些我们习以为常的数据库,背后究竟隐藏着多少复杂的权衡和精巧的设计?那些看似简单的API调用,在底层又是如何跨越网络,穿越分布式系统的层层考验,最终安全地触达数据的?这本书真的打开了我的一扇新世界的大门,让我对“设计”这个词有了更深刻的理解,不再仅仅是外观的美化,而是系统内在的逻辑、效率和健壮性。

评分

这本书的语言风格非常独特,它不像很多技术书籍那样堆砌大量晦涩的术语,而是更像是一位经验丰富的工程师在娓娓道来。作者在讲解复杂概念的时候,常常会用一些非常形象的比喻,比如将分布式系统比作一个庞大而精密的工厂,将数据的一致性问题类比成不同部门之间的沟通协调,这些比喻极大地降低了理解门槛,让我能够快速抓住核心思想。而且,作者的逻辑非常严谨,每一步推理都像是步步为营,让你在不知不觉中被引导着去理解最深层的原理。我尤其喜欢它在阐述一些经典算法和数据结构时,会回溯到它们最初的设计思想和解决的问题场景,这让我不仅仅是“知道”它们是什么,更能“理解”它们为什么是这样,以及在什么情况下它们是最优的选择。这种学习体验,远比死记硬背要来得深刻和持久。

评分

这本书的封面设计有一种沉静而专业的感觉,深蓝色的背景搭配银白色的字体,低调却又不失力量感。翻开书页,纸张的触感也相当不错,不是那种过于光滑容易反光,也不是粗糙得掉渣的类型,介于两者之间,长时间阅读也不会觉得疲劳。书的排版也很合理,行间距和字号都恰到好处,不会显得拥挤,读起来相当流畅。而且,它还附带了一个精美的书签,这个小小的细节让人觉得非常贴心,对于我这样经常需要停下来思考的读者来说,简直是福音。这本书的装订方式也非常牢固,即使经常翻阅,也不用担心页码松散的问题,这一点对于一本需要反复查阅的工具书来说,非常重要。整体而言,从拿到书的那一刻起,就能感受到它是一本用心制作、品质上乘的书籍,无论是作为案头常备的参考书,还是作为深入学习的教材,都具备了优秀的物质载体条件。

评分

搞活动时候买的,希望有空可以好好读一下

评分

质量很好,好好学习一下!

评分

实在是一本好书,推荐购买阅读

评分

除了纸质差点之外,其他都不错!

评分

理论的要看,实操的也要看

评分

确实是一本机器学习领域的名著,非常经典!

评分

很好的英文书籍,值得好好学习。

评分

书内容很不错,正在拜读中

评分

书挺厚,还来不及看,英文原版质量有保证

相关图书

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 book.coffeedeals.club All Rights Reserved. 静流书站 版权所有