| 图书基本信息 | |||
| 图书名称 | 设计数据密集型应用(影印版) | 作者 | Martin Kleppmann |
| 定价 | 99.00元 | 出版社 | 东南大学出版社 |
| ISBN | 9787564173852 | 出版日期 | 2017-10-01 |
| 字数 | 页码 | ||
| 版次 | 1 | 装帧 | 平装-胶订 |
| 开本 | 16开 | 商品重量 | 0.4Kg |
| 内容简介 | |
| 书中包含以下内容: 深入分析你已经在使用的系统,并学习如何更高效地使用和运维这些系统 通过识别不同工具的优缺点,作出更明智的决策 了解一致性、可伸缩性、容错性和复杂度之间的权衡 理解分布式系统研究,这些研究是现代数据库构建的基石 走到一些主流在线服务的幕后,学习它们的架构 |
| 目录 | |
| 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 Superputing 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 |
这本书的封面设计,老实说,并没有立刻抓住我的眼球。那是一种非常典型的技术类书籍封面,通常都是深色背景,配上一些象征性的图标或者文字。我当时是在书店里随机翻阅,看到这本书的时候,它的名字引起了我的兴趣——“设计数据密集型应用”。这听起来非常吸引人,因为我一直觉得,现代应用的核心竞争力很大程度上就体现在它处理数据的能力上。拿到手里,纸张的手感还算不错,有一定的厚度,预示着内容会比较丰富。我翻看了目录,里面涉及了很多我一直想深入了解的概念,比如分布式系统、一致性、可伸缩性等等。这些都是构建现代大规模应用绕不开的话题,也是我工作中的痛点。这本书的排版也比较清晰,字体大小适中,阅读起来应该不会有什么障碍。虽然封面不惊艳,但内容上的吸引力是实实在在的。我当时犹豫了一下,因为市面上关于这类主题的书籍并不少,但我被“数据密集型”这个词深深吸引,感觉它直击了问题的核心。最终,我还是决定把它带回家,希望它能给我带来一些新的启发和解决问题的思路。
评分坦白说,这本书的定价可能不算太亲民,但我认为它所包含的价值,远超其本身的标价。在数字时代,数据就是石油,而如何高效、安全、可靠地采集、存储、处理和利用这些“石油”,是决定一个企业生死存亡的关键。这本书就像一座宝藏,里面藏着通往这个关键领域的地图。它没有回避技术细节,而是将那些看似晦涩难懂的分布式系统原理、数据库底层机制、消息队列的奥秘,一一呈现在读者面前。我最欣赏的是它并非生搬硬套理论,而是大量引用了业界真实世界的案例,这让我能够更直观地理解抽象的概念,并将其与实际的应用场景联系起来。比如,在讲述如何处理高并发读写时,书中会对比不同数据库的架构优势和劣势,并给出具体的优化建议,这对于开发者来说是极其宝贵的经验。我想,对于任何想要在数据处理领域有所建树的工程师来说,这本书都应该是一本不可或缺的案头必备。它所提供的知识体系,足以帮助我们构建出真正能够经受住海量数据考验的系统。
评分这本书最让我印象深刻的,是它提供了一种“系统性”的视角来看待数据问题。我之前在工作中,往往是遇到什么问题解决什么问题,缺乏一个整体的框架去思考。而这本书,通过梳理数据系统的演进历程,分析不同技术方案背后的权衡,让我明白,每一个设计决策都应该建立在对整体架构和业务需求的深刻理解之上。它不仅仅是教你如何使用某个数据库或者某个消息队列,而是让你理解这些工具为何而生,它们解决了哪些问题,又带来了哪些新的挑战。例如,关于分布式事务的探讨,书中并没有止步于理论,而是详细分析了各种解决方案的优缺点,以及它们在不同场景下的适用性。这让我意识到,很多时候并没有“银弹”式的解决方案,关键在于如何根据实际情况做出最合适的选择。这本书就像一位经验丰富的老者,在细心指导我们如何避免弯路,如何构建出更健壮、更具弹性的数据基础设施。阅读的过程,本身就是一次思维的升华。
评分这本书的知识密度相当高,每一页都似乎承载着作者多年的实践经验和深刻洞察。初次翻阅时,我发现自己需要放慢脚步,细嚼慢咽,才能真正吸收其中的精髓。它不像那些快餐式的技术书籍,只提供简单的API调用指南,而是深入到了数据系统设计的底层逻辑。例如,在讲解如何设计可伸缩的读写分离策略时,书中不仅仅是介绍数据库的主从复制,还会深入分析复制延迟、一致性模型以及客户端如何处理不同副本等问题。这种对细节的关注,以及对复杂系统之间相互作用的清晰阐述,让我耳目一新。我特别喜欢书中那种“知其然,更知其所以然”的讲解方式,它能帮助我建立起一个完整的知识体系,而不是零散的技术点。我想,这本书不仅适合那些希望提升自己技术能力的开发者,也同样适合那些负责系统架构和技术选型的架构师,它能为他们提供宝贵的参考和决策依据。阅读这本书,就像进行一次深入的数据系统“体检”,能帮助我们发现潜在的“病灶”,并提供治愈的良方。
评分第一次捧读这本书,我脑海中浮现的是无数个关于数据存储和处理的挑战场景。想象一下,一个每天都要处理数百万用户请求的社交平台,或者是一个实时分析海量传感器数据的物联网系统,它们背后都离不开对“数据密集型”的深刻理解和精妙设计。这本书不仅仅是介绍各种技术工具,更重要的是它在讲述一种思维方式,一种如何从根本上解决数据处理瓶颈的设计哲学。我能感受到作者在字里行间所传达的,不是简单的“是什么”,而是“为什么”和“怎么做”。例如,关于数据一致性的讨论,它不是简单地列举 CAP 定理,而是深入剖析不同一致性模型的权衡,以及在实际应用中如何根据业务需求做出最佳选择。这种深入浅出的讲解方式,让我觉得即使是复杂的概念,也变得触手可及。我迫不及待地想将书中的理论与我实际工作中遇到的问题进行对照,看看能否从中找到突破口,优化现有的系统,提升整体的效率和稳定性。这本书让我看到了,设计一个健壮、可扩展的数据密集型应用,需要的不仅仅是代码能力,更是一种系统性的思考。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 book.idnshop.cc All Rights Reserved. 静思书屋 版权所有