工作生活

《数据密集型应用系统设计》读后感01

2019-06-30  本文已影响0人  一张狗

第二章 数据模型与查询语言

The limits of my language mean the limits of my world.
—Ludwig Wittgenstein, Tractatus Logico-Philosophicus (1922)

关系模型和文档模型

关系模型最著名的是SQL,我们在应用的时候都需要在应用代码和数据库模型之间插入一个笨拙的转换层,这个时候以JSON文档为代表的文档模型就派上了用场,我们可以将类似简历那样子的文档存放在数据库的文本列中。
关系的表示:以SQL为代表的关系模型所做的是定义了所有数据的格式:关系(表)只是元组(行)的集合。文档数据库则是某种类型的层次模型:即在其父记录中保存了嵌套记录。
文档模型对联结的支持不足,使用的时候需要按照应用程序来决定是否适用。
对于高度关联的数据,文档模型不太适合,关系模型可以胜任。

文档数据是读模式,数据的结构是隐形的,只有在读取时才解释。类似动态语言中的动态类型检查。
关系数据是写模式,模式是显式的,并且数据库确保数据写入时都遵从。类似静态类型检查。

文档数据库有查询的数据局部性优势,适合需要同时访问文档大部分内容的场景。

数据查询语言

SQL是一种声明式查询语言,MS和CODASYL是命令式的。

MapReduce查询既不是声明式查询,也不是一个完全命令式的查询API,它查询的逻辑用代码片段表示,这些片段被处理框架重复调用,主要基于许多函数式编程语言中的map和reduce函数。

图数据查询

图数据库处理对于文档模型和数据模型都难以处理的存在许多多对多关系的数据。
图由顶点(结点、实体)和边(关系、弧)组成。SQL也可以使用WITH RECURSIVE实现图数据库的递归查询,但是非常复杂。

三元存储中,所有信息都以非常简单的三部分形式存储(主体,谓语,客体),例如(吉姆,喜欢,香蕉)。
三元组的主体相当于图的顶点,而客体有以下两种情况:

上一篇 下一篇

猜你喜欢

热点阅读