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

1.2 可伸缩性

1.3 可维护性

2. 数据模型与查询语言
2.1 关系模型与文档模型


2.2 数据查询语言

2.3 图数据模型

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


在历史上,数据最开始被表示为一棵大树(层次数据模型),但是这不利于表示多对多的关系,所以发明了关系模型来解决这个问题。最近,开发人员发现一些应用程序也不适合采用关系模型。新的非关系型 “NoSQL” 数据存储在两个主要方向上存在分歧:
文档数据库 的应用场景是:数据通常是自我包含的,而且文档之间的关系非常稀少。 图形数据库 用于相反的场景:任意事物都可能与任何事物相关联。 这三种模型(文档,关系和图形)在今天都被广泛使用,并且在各自的领域都发挥很好。一个模型可以用另一个模型来模拟 — 例如,图数据可以在关系数据库中表示 — 但结果往往是糟糕的。这就是为什么我们有着针对不同目的的不同系统,而不是一个单一的万能解决方案。