前言
如果你是一位软件行业从业者,尤其是从事服务器端或者后台系统软件开发,相信近年来一定被层出不穷的商业名词所包围:NoSQL、Big Data、Web-scale、Sharding.Eventual consistency、ACID、CAP理论、云服务、MapReduce和Real-time等,所有这些其实都围绕着如何构建高效存储与数据处理这一核心主题。过去十年,在数据库领域与分布式系统方面涌现了许多引人瞩目的进展,由此深刻地影响了如何构建上层应用系统。
纵使软件千变万化,终有若干理念贯穿其中。无论你用的什么数据系统,如果可以掌握背后的设计理念,何种工具适用于何种场景,如何最佳使用,又有哪些陷阱(坑),诸如此类,自然会胸有成竹,而为了帮助大家完美的解决这个问题,小编在这里分享一份“数据密集型应用系统设计”手册。
本手册旨在帮助大家更好地驾驭处理数据和存储数据的相关技术。它不是针对某个特定软件的介绍手册,也不是纯理论的习题。我们会深入探讨一些成功的数据系统案例,剖析其中的技术要点;或许在很多流行的分布式系统里都有它们的身影,正是这些关键技术有效应对了许多生产环境对扩展性、性能和可靠性的苛刻要求。
内容细节
整份手册分为三大部分: 数据系统基础; 分布式数据系统;派生数据
第一部分 数据系统基础
这部分总结了适用于所有数据系统的基本思想,既包括单机运行环境,也包括分布式集群环境
- 第1章可靠、可扩展与可维护的应用系统
- 第2章数据模型与查询语言
- 第3章数据存储与检索
- 第4章数据编码与演化
第二部分 分布式数据系统
这部分我们将从单机的数据存储转向跨机器的分布式系统,这是扩展性的重要一步,但随之而来的是各种挑战。所以将依次讨论数据远程复制、数据分区以及事务。接下来的第8章包括分布式系统的更多细节,以及分布式环境如何达成一致性与共识。
- 第5章数据复制
- 第6章数据分区
- 第7章事务
- 第8章分布式系统的挑战
- 第9章一致性与共识
第三部分 派生数据
这部分主要针对产生派生数据的系统,所谓派生数据主要指在异构系统中,如果无法用一个数据源来解决所有问题,那么一种自然的方式就是集成多个不同的数据库、缓存模块以及索引模块等。首先第10章以批处理开始来处理派生数据,紧接着第11章采用流式处理。第12章总结之前介绍的多种技术,并分析讨论未来构建可靠、可扩展和可维护应用系统可能的新方向或方法。
- 第10章批处理系统
- 第11章流处理系统
- 第12章数据系统的未来
感兴趣需要获取完整内容学习的朋友,帮忙点赞关注下,【双击此次】即可获取啦