关系型数据库和非关系型数据库有什么区别和联系

小编 631

关系型数据库和非关系型数据库有以下区别:1.存储方式不同;2.存储结构不同;3.存储规范不同;4.扩展方式不同;5.查询方式不同;6.查询速度不同;7.数据模式不同;8.事务处理支持不同;9.读写性能不同;10.授权方式不同。非关系型数据库属于关系型数据库的功能阉割版本。

1.存储方式不同

传统的关系型数据库采用表格的储存方式,数据以行和列的方式进行存储,要读取和查询都十分方便。

非关系型数据不适合这样的表格存储方式,通常以数据集的方式,大量的数据集中存储在一起,类似于键值对、图结构或者文档。

2.存储结构不同

关系型数据库按照结构化的方法存储数据,每个数据表都必须对各个字段定义好(也就是先定义好表的结构),再根据表的结构存入数据;而非关系型数据库由于面对的是大量非结构化的数据的存储,它采用的是动态结构,对于数据类型和结构的改变非常的适应,可以根据数据存储的需要灵活的改变数据库的结构。

3.存储规范不同

关系型数据库为了避免重复、规范化数据以及充分利用好存储空间,把数据按照最小关系表的形式进行存储;而非关系型数据库的数据存储方式是用平面数据集的方式集中存放。

4.扩展方式不同

关系数据库可纵向扩展,可提高处理能力,非关系数据库为天然分布式,通过更多的数据服务器来分担负载。

5.查询方式不同

关系型数据库采用结构化查询语言(即SQL)来对数据库进行查询,且可以采用类似索引的方法来加快查询操作;而非关系型数据库使用的是非结构化查询语言(UnQL)。

6.查询速度不同

关系型数据库将数据存储在硬盘中,查询速度较慢;而非关系型数据库将数据存储于缓存之中,而且不需要经过SQL层的解析,查询速度快。

7.数据模式不同

在关系型数据库中,必须先定义好表结构,才能够添加数据,例如定义表的主键、索引、外键等。表结构可以在定义之后更新,但是如果有比较大的结构变更,就会变的比较复杂;而在非关系型数据库中,数据可以在任何时候任何地方添加,不需要预先定义。

8.事务处理支持不同

关系型数据库支持对事务原子性细粒度控制,并且易于回滚事务;而在非关系型数据库中没有事务这个概念,每一个数据集都是原子级别的。

9.读写性能不同

虽然关系型数据库存储数据和处理数据的可靠性很不错,但一旦面对海量数据的处理的时候效率就会变得很差,特别是遇到高并发读写的时候性能就会下降的非常厉害;而非关系型数据库相对关系型数据库优势最大的恰恰是应对大数据方面,也就是对于大量的每天都产生非结构化的数据能够高性能的读写。

10.授权方式不同

关系型数据库常见的有Oracle,SQLServer,DB2,Mysql,除了Mysql大多数的关系型数据库如果要使用都需要支付一笔价格高昂的费用,即使是免费的Mysql性能也受到了诸多的限制。

对于NoSQL数据库,比较主流的有redis,HBase,MongoDb,memcache等产品,通常都采用开源的方式,不需要像关系型数据库那样,需要一笔高昂的花费。

关系型数据库和非关系型数据库之间的联系,我们可以这样理解:非关系型数据库可看成传统关系型数据库的功能阉割版本,基于键值对存储数据,不需要经过SQL层的解析,性能非常高。

延伸阅读

常用的非关系型数据库有哪些

1.Redis

Redis是一个键值存储。此外,它是非常知名的键值存储。Redis支持一些c++、PHP、Ruby、Python、Perl、Scala等等。Redis是用C语言编写的。此外,它是根据BSD授权的。

2.MongoDB

MongoDB是非常知名的NoSQL数据库。它是一个面向文档的开源数据库。MongoDB是一个可伸缩和可访问的数据库。它在c++中。MongoDB同样可以用作文件系统。在MongoDB中,JavaScript可以作为查询语言使用。通过使用sharding MongoDB水平伸缩。它在流行的JavaScript框架中非常有用。

3.HBase

HBase是一个分布式的、面向列的开源数据库,该技术来源于Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。

4.Neo4j

Neo4j被称为原生图数据库,因为它有效地实现了属性图模型,一直到存储层。这意味着数据完全按照白板的方式存储,数据库使用指针导航和遍历图。Neo4j有数据库的社区版和企业版。企业版包括Community Edition必须提供的所有功能,以及额外的企业需求,如备份、集群和故障转移功能。

5.Elasticsearch

Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。

回复

我来回复
  • 暂无回复内容

注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部