Scott's Blog

学则不固, 知则不惑

0%

设计数据密集型应用-数据系统 P1

「设计数据密集型应用」书中第一二章内容的思维导图。包括:第一章关于可靠性、可伸缩性、可维护性以及第二章介绍的数据模型与查询语言。

设计数据密集型应用-数据系统

1. 可靠性、可伸缩性、可维护性

1.1 可靠性

1-1

1.2 可伸缩性

1-2

1.3 可维护性

1-3

2. 数据模型与查询语言

2.1 关系模型与文档模型

关系模型与文档模型2-1.png
关系模型与文档模型2-2.png

2.2 数据查询语言

数据查询语言2-3.png

2.3 图数据模型

图数据示例2-3-1.png

一个图数据模型示例。可以从社交网络或系谱数据库中获得:它显示了两个人,来自爱达荷州的 Lucy 和来自法国 Beaune 的 Alain。他们已婚,住在伦敦。

图数据模型2-3-2.png
图数据模型2-3-3.png

在历史上,数据最开始被表示为一棵大树(层次数据模型),但是这不利于表示多对多的关系,所以发明了关系模型来解决这个问题。最近,开发人员发现一些应用程序也不适合采用关系模型。新的非关系型 “NoSQL” 数据存储在两个主要方向上存在分歧:

文档数据库 的应用场景是:数据通常是自我包含的,而且文档之间的关系非常稀少。 图形数据库 用于相反的场景:任意事物都可能与任何事物相关联。 这三种模型(文档,关系和图形)在今天都被广泛使用,并且在各自的领域都发挥很好。一个模型可以用另一个模型来模拟 — 例如,图数据可以在关系数据库中表示 — 但结果往往是糟糕的。这就是为什么我们有着针对不同目的的不同系统,而不是一个单一的万能解决方案。