Designing Data Intensive Applications

已发布 2018-01-28 11:29:04

Part I: Foundations of Data Systems

Chapter 1

第1章从三个方面讲述一个数据系统的需求:可靠性、可扩展性、可维护性。

可靠性(reliability)

讲了数据系统的故障(fault)和错误(error)存在的客观性,可能原因则可能是硬件错误、软件错误、人为错误。

为什么可靠性如此重要?不仅仅在软件领域,在金融和现实生活中都希望某物某事某人具有可靠性。

可伸缩性(scalability)

为什么需要可扩展性?当业务负载增加的时候,为了满足即时响应的性能需求,就必须增加机器来应对。

可维护性(matainability)

可维护性需要三个属性,分别方便不同的情形和人员。分别是可操作性、简单化、易迭代。

可操作性降低运维人员工作的复杂性,简单化让系统复杂性变得可控,易迭代则让系统的进化迭代变得简单。

Chapter 2

数据需要结构化才能方便地进行存储、操作、提取。第二章讲了三大类数据模型,分别是对象化模型、关系型模型、图关系模型。

对象化模型即所谓的NoSQL,因为所有的数据都存储在一个对象里,我给了他这个名字。

关系型模型即现在常见的关系型数据库所代表的模型,数据通过拆分成细微的对象后存储在单独的表结构里,通过外键把这些小对象连接起来,起到了减少重复存储、提高可维护性的作用。

图关系模型针对多对多的情形,这种在现实里没有接触过。(TODO)

Chapter 3

第三章讲了数据的存储和获取。数据结构是数据库的核心。

两种数据库系统应用:OLTP、OLAP

讲了面向列的数据库存储。

Chaper 4

数据传输、交换格式:XML、JSON、Binary(BSON, BJSON, UBJSON, BISON, smile; WBXML), MessagePack, Thrift, ProtocolBuffers, Avro,

Part II: Distributed Data

Part III: Derived Data

comments powered by Disqus