1、层次模型
层次模型是一种树结构模型,它把数据按自然的层次关系组织起来,以反映数据之间的隶属关系。层次模型是数据库技术中发展最早、技术上比较成熟的一种数据模型。它的特点是地理数据组织成有向有序的树结构,也叫树形结构。结构中的结点代表数据记录,连线描述位于不同结点数据间的从属关系(一对多的关系)。
2、网状数据模型
网状模型将数据组织成有向图结构,图中的结点代表数据记录,连线描述不同结点数据间的联系。这种数据模型的基本特征是,结点数据之间没有明确的从属关系,一个结点可与其它多个结点建立联系,即结点之间的联系是任意的,任何两个结点之间都能发生联系,可表示多对多的关系。
3、关系数据模型
由于关系数据库结构简单, *** 作方便,有坚实的理论基础,所以发展很快,80年代以后推出的数据库管理系统几乎都是关系型的。涉及到的基础知识有:关系模型的逻辑数据结构,表的 *** 作符,表的完整性规则和视图、范式概念。
关系模型可以简单、灵活地表示各种实体及其关系,其数据描述具有较强的一致性和独立性。在关系数据库系统中,对数据的 *** 作是通过关系代数实现的,具有严格的数学基础。
数据库管理系统常见的数据模型有层次模型,网状模型和语义模型。
在关系模型基础上增加全新的数据构造器和数据处理原语,用来表达复杂的结构和丰富的语义的一类新的数据模型。
数据库管理系统是一个能够提供数据录入、修改、查询的数据 *** 作软件,具有数据定义、数据 *** 作、数据存储与管理、数据维护、通信等功能,且能够允许多用户使用。另外,数据库管理系统的发展与计算机技术发展密切相关。
为此,若要进一步完善计算机数据库管理系统,技术人员就应当不断创新、改革计算机技术,并不断拓宽计算机数据库管理系统的应用范围,从而真正促进计算机数据库管理系统技术的革新。
扩展资料:
数据库管理应尽可能地消除了冗余,但是并没有完全消除,而是控制大量数据库固有的冗余。例如,为了表现数据间的关系,数据项的重复一般是必要的,有时为了提高性能也会重复一些数据项。
通过消除或控制冗余,可降低不一致性产生的危险。如果数据项在数据库中只存储了一次,则任何对该值的更新均只需进行一次,而且新的值立即就被所有用户获得。
如果数据项不只存储了一次,而且系统意识到这点,系统将可以确保该项的所有拷贝都保持一致。不幸的是,许多DBMS都不能自动确保这种类型的一致性。
数据库应该被有权限的用户共享。DBMS的引入使更多的用户可以更方便的共享更多的数据。新的应用程序可以依赖于数据库中已经存在的数据,并且只增加没有存储的数据,而不用重新定义所有的数据需求。
目前最主流的sql server、oracle、mysql、db2都是关系型数据库。随着社交网站、视频网站等互联网新业务模式的兴起,各种非关系数据库模型也在不断涌现。以下是copy的:
数据模型概述
1.关系模型
关系模型使用记录(由元组组成)进行存储,记录存储在表中,表由架构界定。表中的每个列都有名称和类型,表中的所有记录都要符合表的定义。SQL是专门的查询语言,提供相应的语法查找符合条件的记录,如表联接(Join)。表联接可以基于表之间的关系在多表之间查询记录。
表中的记录可以被创建和删除,记录中的字段也可以单独更新。
关系模型数据库通常提供事务处理机制,这为涉及多条记录的自动化处理提供了解决方案。
对不同的编程语言而言,表可以被看成数组、记录列表或者结构。表可以使用B树和哈希表进行索引,以应对高性能访问。
2.键值存储
键值存储提供了基于键对值的访问方式。
键值对可以被创建或删除,与键相关联的值可以被更新。
键值存储一般不提供事务处理机制。
对不同的编程语言而言,键值存储类似于哈希表。对此,不同的编程语言有不同的名字(如,Java称之为“HashMap”,Perl称之为“hash”,Python称之为“dict”,PHP称之为“associative array”),C++则称之为“boost::unordered_map<...>”。
键值存储支持键上自有的隐式索引。
键值存储看起来好像不太有用,但却可以在“值”上存储大量信息。“值”可以是一个XML文档,一个JSON对象,或者其它任何序列化形式。
重要的是,键值存储引擎并不在意“值”的内部结构,它依赖客户端对“值”进行解释和管理。
3.文档存储
文档存储支持对结构化数据的访问,不同于关系模型的是,文档存储没有强制的架构。
事实上,文档存储以封包键值对的方式进行存储。在这种情况下,应用对要检索的封包采取一些约定,或者利用存储引擎的能力将不同的文档划分成不同的集合,以管理数据。
与关系模型不同的是,文档存储模型支持嵌套结构。例如,文档存储模型支持XML和JSON文档,字段的“值”又可以嵌套存储其它文档。文档存储模型也支持数组和列值键。
与键值存储不同的是,文档存储关心文档的内部结构。这使得存储引擎可以直接支持二级索引,从而允许对任意字段进行高效查询。支持文档嵌套存储的能力,使得查询语言具有搜索嵌套对象的能力,XQuery就是一个例子。MongoDB通过支持在查询中指定JSON字段路径实现类似的功能。
4.列式存储
如果翻转数据,列式存储与关系存储将会非常相似。与关系模型存储记录不同,列式存储以流的方式在列中存储所有的数据。对于任何记录,索引都可以快速地获取列上的数据。
Map-reduce的实现Hadoop的流数据处理效率非常高,列式存储的优点体现的淋漓极致。因此,HBase和Hypertable通常作为非关系型数据仓库,为Map-reduce进行数据分析提供支持。
关系类型的列标对数据分析效果不好,因此,用户经常将更复杂的数据存储在列式数据库中。这直接体现在Cassandra中,它引入的“column family”可以被认为是一个“super-column”。
列式存储支持行检索,但这需要从每个列获取匹配的列值,并重新组成行。
5.图形数据库
图形数据库存储顶点和边的信息,有的支持添加注释。
图形数据库可用于对事物建模,如社交图谱、真实世界的各种对象。IMDB(Internet Movie Database)站点的内容就组成了一幅复杂的图像,演员与电影彼此交织在一起。
图形数据库的查询语言一般用于查找图形中断点的路径,或端点之间路径的属性。Neo4j是一个典型的图形数据库。
选择哪一种数据模型?
数据模型有着各自的优缺点,它们适用于不同的领域。不管是选择关系模型,还是非关系模型,都要根据实际应用的场景做出选择。也许你会发现单一的数据模型不能满足你的解决方案,许多大型应用可能需要集成多种数据模型。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)