数据库的各种模型简单学习笔记

数据库vs文件系统:数据共享性好,冗余度低,数据独立性好,弹性大,易扩充。数据库将对数据的结构化任务从某个应用程序中解耦出来,交由数据库管理系统操作,减少应用程序的维护和修改,简化了应用程序的编写。

数据库的三级模式:外模式、模式和内模式。模式是数据库全体数据的逻辑结构和特征的描述。例如层次模型,网状模型,关系模型这些在模式这一级定义。内模式是数据物理结构和存储方式的描述,也被称为存储模式,更为底层。外模式也称子模式,是数据库用户能看见和使用的局部数据的逻辑结构和特征的描述,与具体应用有关。三层模式之间的解耦是使用映像实现的。

概念模型:实体,属性,码,实体型,实体集,联系。实体-联系方法(E-R模型)

常用数据模型:层次模型,网状模型,关系模型,面向对象数据模型,对象关系数据模型,半结构化数据模型。

层次模型:基本层次联系——两个记录以及它们之间的一对多,一对一的联系。双亲结点,子女结点。现实中很多实体之间的联系很自然地是层次关系。树状能够带来高查询效率,但插入和删除操作的设计就较为复杂。另外有很多联系是非层次型的。一个结点可能有多个双亲结点,此时的层次模型就很笨拙。

网状模型:当层次联系集合中,一个以上的结点无双亲,一个结点可以有多于一个的双亲,这个就是网状模型。其存取性能较高。缺点是结构复杂,当数据类型越来越多时,数据库的结构就越来越复杂,不利于用户最终掌握。记录之间的联系通过存取路径实现,加重了编写程序的负担。

关系模型:从用户角度看,关系模型由一组关系构成。每个关系的数据结构是一张规范化的二维表。元组——表中的一行。属性——表中的一列。码——某个属性组可以唯一确定一个元组。域——一组具有相同数据类型的值的集合,可以理解为某个属性是一个变量,这个变量的值域。分量——元组中的一个属性值。关系模式——对关系的描述:关系名(属性1,属性2,...,属性n)。关系模型要求关系是规范化的。表中不能有表。关系模型将存取路径向用户隐蔽,用户只需进行查询和修改,提高了独立性。关系模型的操作包括查询操作和插入、删除、修改操作两大部分,查询操作又分为选择,投影,连接,除,并,差,交,笛卡尔积等。关系操作的特点是集合操作,即操作的对象和结果都是集合。早期关系操作能力,分别有关系代数和关系演算。结构化查询语言SQL介于关系代数与关系演算之间。详细的关系模型的知识主要涉及各种码,主码,完整性,范式,完备性的东西。

NoSQL系统:一种解释为非关系数据库;另一种介绍所Not Only SQL,即数据管理技术不仅仅是SQL。NoSQL系统支持的数据模型通常有4种:Key-value模型、BigTable模型、文档模型和图模型。

Key-value模型:记为KV,类似字典,按照Key值来存储和提取Value值。Value值是无结构的二进制码或纯字符串,在应用层进行解析。代表系统:Cassandra,Redis。

BigTable模型:支持结构化的数据,包括列、列簇、时间戳以及版本控制等元数据的存储。代表系统:HBase,Big Table。

文档模型:它的Value值支持复杂的结构定义,通常是被转换成JSON或类似于JSON格式的结构化文档。支持数据库索引的定义,索引主要按照字段名组织。代表系统:MongoDB。

图模型:记为G(V, E),每个结点V具有若干属性,边E也有若干属性。该模型支持图结构的各种基本算法。

NewSQL系统是融合NoSQL与SQL的新型数据库系统。SQL扩展性差, 成本高,难以应对海量数据挑战,而NoSQL灵活性高,扩展性好,但不支持SQL,导致应用程序开发困难,特别不支持事务ACID特性(原子性(Atomicity),一致性(Consistency),隔离性(lsolation),持久性(Durability))。NewSQL则结合了两者优势。

MapReduce:MapReduce是一种并行编程模型,2004年Google提出,用于解决大规模并行计算问题。以key/value的分布式存储系统为基础。计算结点和存储结点通常是同一个结点,即MapReduce框架和Hadoop分布式文件系统(HDFS)。将并行数据库与MapReduce两者结合起来的数据库设计有并行数据库主导型、MapReduce主导型、并行数据库和MapReduce集成型。

内存数据库(MMDB):将数据库的全部或大部分数据放在内存中的数据库系统。其目的是有效利用内存的优势来提高数据库的性能。它具有高吞吐率,低延时访问,良好并行处理能力等特性。

 

更多文章与笔记请关注:微信公众号:二进制树

数据库的各种模型简单学习笔记