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

数据模型与查询语言

语言的边界就是世界的边界.

消除数据重复是数据库规范化的核心思想.

融合关系模型与文档模型是未来数据库发展的一条很好的路径。

数据模型

关系模型

关系模型与1970年由Edgar Codd提出。关系模型:数据被组织成关系(relations),在SQL中被称为表(table),其中每个关系都是元组(tuples)的无序集合(在SQL中被称为行)

关系数据库的核心在于商业数据处理。

SQL是现在最著名的数据模型。

关系模型的目标就是将实现细节隐藏在更简洁的接口后面。

网络模型 vs 层次模型 vs 关系模型 vs NoSQL

对象数据库 vs XML数据库

文档模型

NoSQL 这个名字是不恰当的,因为它其实并不代表具体的某些技术,它最初只是作为一个吸引人眼球的Twitter标签频频出现在2009年的开源、分布式及非关系数据库的见面会上。现在其含义已经被逆向解释为“不仅仅是SQL”。

采用NoSQL数据库有这样几个驱动因素:

  • 更好的扩展性需求,包括支持超大数据集或超高写入吞吐量
  • 关系模型不能很好的支持一些特定的查询操作
  • 对关系模式一些限制性感到沮丧,渴望更具动态和表达力的数据模型

文档数据库是某种方式的层次模型:即在其父记录中保存了嵌套记录(例如:一对多关系)。但在表示多对一和多对多的关系上,二者并没有根本的不同。

关系数据 VS 文档数据库

支持文档数据模型的主要论点是模式灵活,由于局部性而带来较好的性能。关系模型则强在联结操作,多对一和多对多关系更简洁的表达上。

对于高度关联的数据,文档模型不太适合,关系模型可以胜任,而图模型则是最为自然的。

数据查询语言

SQl是一种声明式查询语言,而IMS和CODASYL则是命令式。

使用声明式的CSS样式表比用JavaScript命令式地操作样式要好得多。

MapReduce是一个相当底层的模型,用于在计算集群上分布式执行。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容