数据模型与查询语言
语言的边界就是世界的边界.
消除数据重复是数据库规范化的核心思想.
融合关系模型与文档模型是未来数据库发展的一条很好的路径。
数据模型
关系模型
关系模型与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是一个相当底层的模型,用于在计算集群上分布式执行。