这些年我们听到了大量与存储和处理数据相关的技术,NoSQL, BigData, 服务扩展性,分区分组,ACID,CAP理论, 云服务,mapreduce,实时处理。为什么会有这些技术呢?
1. 互联网公司拥有海量的数据以逼迫他们开发新的工具来有效处理如此大量的规模
2. 商业中需要灵活快速的试错,对新的市场发现快速进行反应,保持更短的迭代周期和更灵活的数据模型
3. 开源社区的越来越成功
4. CPU速度的发展趋缓,多核处理器成为标准,网络越来越快,这意味着并发会进一步发展
5. 由于IAAS的出现,即使你在一个很小的团队,也可以部署一个跨多机甚至跨多地的服务
6. 程序的可靠性要求越来越高,类似停机维护变得不可接受
为什么数据敏感型应用?这本书主要讲什么?
--------------------
当数据成为了一个应用的的主要挑战时,这就是一个数据敏感性应用,挑战包括数据量大,数据复杂,数据变化速度快等等。与之所对应的式传统的CPU计算是瓶颈的计算敏感性应用。
为此我们发明了很多技术,但是万变不离其宗,所有的变化都有着一些不变的规律,这本书主要就来讲解这些规律。帮助我们思考数据敏感的系统,不光是他们如何运转的,还有为什么要这么设计。
谁应该读这本书?这本书能让你收获什么
--------
1. 设计开发服务大量用户的系统
2. 服务高可用性
3. 服务便于维护
虽然不我们不是google,amazon,有那么~~多的数据需要处理,但是我们在日常生活中,仍然需要选择正确的技术来处理我们的数据。所以我们需要了解不同技术的优势和劣势。
## 本书结构 ##
本书分3部分
+ Part1. 讨论基本原理思想,第一章讲我们的目标,可靠性,可扩展性,可维护性,我们怎么去理解他们以及如获取实现他们。第二章对比了不同的数据模型和查询语言,看看他们在不同场景下的表现如何。第三章讲存储模型,数据库在磁盘上是如何存储数据的以使得我们可以快速查找。第四章转向了数据序列化的内容。
+ Part2. 我们从单机存储转向了分布式存储。第五章讲多备份(replication), 第六章讲分区分组(partitioning/sharding) 第七章讲事务(transcation),第八章讲解在实际分布式系统中遇到的更为具体的问题。第九章讲,翻译看不懂……, consistency and consensus
+ Part3. 讨论从一个数据集转换的问题,这种情况经常发生在异构系统中,也就是任何一种数据库都不能支持业务,需要多种技术组合处理。第十章讲批量处理,第十一章讲流处理,第十二章,最后一章,总结