《数据密集型应用系统设计》这本书把所有跟「数据」相关知识点都做了剖析、整理、总结。从底层数据结构到顶层架构设计,将数据系统设计中的精髓娓娓道来。当你把底层原理弄清楚后,就知道每项技术产生的背景是什么,解决了什么问题,有什么适用场景。
数据密集型应用系统
当数据(数据量、数据复杂度、数据变化速度)是一个应用的主要挑战,那么可以把这个应用称为数据密集型的。与之相对的是计算密集型——处理器速度是主要瓶颈。
如今在互联网领域,大多数应用都属于数据密集型应用。书中的宝贵经验无论是对架构师,DBA、还是后端工程师、甚至产品经理都会有帮助。
全书分为三大部分:
第一部分,主要讨论有关增强数据密集型应用系统所需的若干基本原则。首先开篇第1章即瞄准目标:可靠性、可扩展性与可维护性,如何认识这些问题以及如何达成目标。第2章我们比较了多种不同的数据模型和查询语言,讨论各自的适用场景。接下来第3章主要针对存储引擎,即数据库是如何安排磁盘结构从而提高检索效率。第4章转向数据编码(序列化)方面,包括常见模式的演化历程。
第二部分,我们将从单机的数据存储转向跨机器的分布式系统,这是扩展性的重要一步,但随之而来的是各种挑战。所以将依次讨论数据远程复制(第5章)、数据分区(第6章)以及事务(第7章)。接下来的第8章包括分布式系统的更多细节,以及分布式环境如何达成一致性与共识(第9章)。
第三部分,主要针对产生派生数据的系统,所谓派生数据主要指在异构系统中,如果无法用一个数据源来解决所有问题,那么一种自然的方式就是集成多个不同的数据库、缓存模块以及索引模块等。首先第10章以批处理开始来处理派生数据,紧接着第11章采用流式处理。第12章总结之前介绍的多种技术,并分析讨论未来构建可靠、可扩展和可维护应用系统可能的新方向或方法。
作者 Martin Kleppmann 是英国剑桥大学分布式系统方向的研究员。此前,他曾是 LinkedIn 和 Rapportive 等互联网公司的软件工程师,负责大规模数据基础设施建设。在此过程中他遇到过一些困难,因此他希望这本书能够帮助读者避免重蹈覆辙。Martin 还是一位活跃的会议演讲者、博主和开源贡献者。他认为,每个人都应该学习深刻的技术理念,对技术的深入理解能帮助我们开发出更好的软件。
![](https://img.haomeiwen.com/i2617/b7774e5d6eea2767.jpg)
这本豆瓣评分 9.7 分的好书,是一本理论结合实践的书,书中很多问题,都会在实际场景中遇到。
中文翻译 GitHub 地址:GitHub - Vonng/ddia: 《Designing Data-Intensive Application》DDIA中文翻译
网友评论