关系型数据库 VS 非关系型数据库

转载 2018年04月15日 17:30:21

转载于:https://blog.csdn.net/lzj3462144/article/details/70973368


一、关系型数据库?


1.概念

 关系型数据库是指采用了关系模型来组织数据的数据库。简单来说,关系模式就是二维表格模型。

主要代表:SQL Server,Oracle,Mysql,PostgreSQL。


2.优点

(1).容易理解,二维表的结构非常贴近现实世界,二维表格,容易理解。

(2)使用方便,通用的sql语句使得操作关系型数据库非常方便。

(3)易于维护,数据库的ACID属性,大大降低了数据冗余和数据不一致的概率。


3.瓶颈

(1 )海量数据的读写效率。

     对于网站的并发量高,往往达到每秒上万次的请求,对于传统关系型数据库来说,硬盘I/o是一个很大的挑战。

(2) 高扩展性和可用性。

   在基于web的结构中,数据库是最难以横向拓展的,当一个应用系统的用户量和访问量与日俱增的时候,数据库没有办法像web Server那样简单的通过添加更多的硬件和服务节点来拓展性能和负载能力。


二、从关系型到非关系型

    关系型数据库的最大优点就是事务的一致性,这个特性,使得关系型数据库中可以适用于一切要求一致性比较高的系统中。比如:银行系统。

    但是在网页应用中,对这种一致性的要求不是那么的严格,允许有一定的时间间隔,所以关系型数据库这个特点不是那么的重要了。相反,关系型数据库为了维护一致性所付出的巨大代价就是读写性能比较差。而像微博、facebook这类应用,对于并发读写能力要求极高,关系型数据库已经无法应付。所以必须用一种新的数据结构存储来替代关系型数据库。所以非关系型数据库应用而生。


三、非关系型


1.概念

   NoSQL非关系型数据库,主要指那些非关系型的、分布式的,且一般不保证ACID的数据存储系统,主要代表MongoDB,Redis、CouchDB。

   NoSQL提出了另一种理念,以键值来存储,且结构不稳定,每一个元组都可以有不一样的字段,这种就不会局限于固定的结构,可以减少一些时间和空间的开销。使用这种方式,为了获取用户的不同信息,不需要像关系型数据库中,需要进行多表查询。仅仅需要根据key来取出对应的value值即可。


2.分类

 非关系数据库大部分是开源的,实现比较简单,大都是针对一些特性的应用需求出现的。根据结构化方法和应用场景的不同,分为以下几类。

(1)面向高性能并发读写的key-value数据库

主要特点是具有极高的并发读写性能,例如Redis、Tokyo Cabint等。

(2)面向海量数据访问的面向文档数据库

特点是,可以在海量的数据库快速的查询数据。例如MongoDB以及CouchDB.

(3)面向可拓展的分布式数据库

解决的主要问题是传统数据库的扩展性上的缺陷。


3.缺点

  但是由于Nosql约束少,所以也不能够像sql那样提供where字段属性的查询。因此适合存储较为简单的数据。有一些不能够持久化数据,所以需要和关系型数据库结合。


四、对比


1.存储上?

Sql通常以数据库表的形式存储,例如存储用户信息,SQL中增加外部关系的话,需要在原表中增加一个外键,来关联外部数据表。如下:

NoSql采用key-value的形式存储



2.事务?

  SQL中如果多张表需要同批次被更新,即如果其中一张表跟新失败的话,其他表也不会更新成功。这种场景可以通过事务来控制,可以在所有命令完成之后,再统一提交事务。在Nosql中没有事务这个概念,每一个数据集都是原子级别的。


3.数据表 VS 数据集

  关系型是表格型的,存储在数据表的行和列中。彼此关联,容易提取。而非关系型是大块存储在一起。


4.预定义结构 VS 动态结构

   在sql中,必须定义好地段和表结构之后,才能够添加数据,例如定义表的主键、索引、外键等。表结构可以在定义之后更新,但是如果有比较大的结构变更,就会变的比较复杂。

   在Nosql数据库中,数据可以在任何时候任何地方添加。不需要预先定义。


5.存储规范 VS 存储代码

   关系型数据库为了规范性,把数据分配成为最小的逻辑表来存储避免重复,获得精简的空间利用。但是多个表之间的关系限制,多表管理就有点复杂。

   当然精简的存储可以节约宝贵的数据存储,但是现在随着社会的发展,磁盘上付出的代价是微不足知道的。

非关系型是平面数据集合中,数据经常可以重复,单个数据库很少被分开,而是存储成为一个整体,这种整块读取数据效率更高。


6.纵向拓展 VS 横向拓展

   为了支持更多的并发量,SQL数据采用纵向扩展,提高处理能力,通过提高计算机性能来提高处理能力。

    NoSql通过横向拓展,非关系型数据库天然是分布式的,所以可以通过集群来实现负载均衡。


7.其他方面

  比如:关系型是结构化查询语言,NoSql是采用更简单而且精确的数据访问方式;SQl数据库大多比较昂贵,而NoSql大多是开源的。


五、选择?


目前许多大型互联网都会选用MySql+NoSql的组合方案,因为SQL和NoSql都有各自的优缺点。

关系型数据库适合存储结构化数据,比如:用户的账号、地址:

(1)这些数据通常需要做结构化查询,比如说Join,这个时候,关系型数据库就要胜出一筹。

(2)这些数据的规模、增长的速度通常是可以预期的。

(3)事务性、一致性,适合存储比较复杂的数据。


NoSql适合存储非结构化数据,比如:文章、评论:

(1)这些数据通常用于模糊处理,例如全文搜索、机器学习,适合存储较为简单的数据。

(2)这些数据是海量的,并且增长的速度是难以预期的。

(3)按照key获取数据效率很高,但是对于join或其他结构化查询的支持就比较差。


六、推荐:

    SQL和NoSQL区别   

    全面梳理SQL和NoSql数据库的技术差别


总结:

  SQL数据库依然强大,可以可靠的处理事务并且保持事务的完整性,只有你的数据非常大,操作扩展需要更加分布式的系统时,才考虑NoSql数据库。


关系型数据库和非关系型数据库的特性以及各自的优缺点

数据库类型 特性 优点 缺点 关系型数据库 SQLite、Oracle、mysql 1、关系型数据库,是指采用了关系模型来组织数据的数据库; 2、关系型数据库的最大特点就是事务的一致性; 3、简单...
  • lijinqi1987
  • lijinqi1987
  • 2016-11-25 14:15:45
  • 21275

从关系型数据库到非关系型数据库

1. 关系型数据库 关系型数据库,是指采用了关系模型来组织数据的数据库。 关系模型是在1970年由IBM的研究员E.F.Codd博士首先提出的,在之后的几十年中,关系模型的概念得到了充分的发展并逐渐成...
  • robinjwong
  • robinjwong
  • 2014-01-19 13:47:44
  • 121073

如何选择RDBMS关系型数据库和Nosql非关系型数据库?

RDBMS关系型数据库和Nosql非关系型数据库区别: 一、RDBMS是关系型数据库模式: 1.二维模式,由行列组成。 2.非常强调事务原子性,例如用户提出一个请求,DB完整的去执行,如...
  • qing419925094
  • qing419925094
  • 2014-03-27 09:41:30
  • 851

关系型和非关系型数据库的区别?

当前主流的关系型数据库有Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL等。 非关系型数据库有 NoSql、Cloudant。 no...
  • longxingzhiwen
  • longxingzhiwen
  • 2016-12-27 16:37:20
  • 31280

【redis】关系型数据库 VS 非关系型数据库

一、概念上?  关系型数据库是指采用了关系模型来组织数据的数据库。简单来说,关系模式就是二维表格模型。 主要代表:SQL Server,Oracle,Mysql,PostgreSQL。 NoSQL非关...
  • u013034640
  • u013034640
  • 2017-04-29 20:11:02
  • 3688

关系型与非关系型数据库的优缺点

关系型数据库特点 基于单一关系模型,结构化存储,有完整性约束 通过二维表建立数据之间的联系 采用结构化查询语言(SQL)做数据读写 操作保存数据的一致性 优点 ☆通过事务处理保持数据的一致性 数据更新...
  • G_Q_L
  • G_Q_L
  • 2017-09-12 16:14:14
  • 850

独家|一文读懂非关系型数据库

THU数据派 2017-04-16 02:29 本文共11000字,阅读全文约需30分钟。 本文为大家解析非关系型数据库(NoSQL)。 前言 NoSQL(NoSQL = Not Only S...
  • u011277123
  • u011277123
  • 2017-04-25 18:12:17
  • 1019

一张图理清楚关系型/非关系型数据库与Elasticsearch同步

题记ES除了做TB级日志分析外,越来越多的被企业用来用作数据存储。但是,传统企业里面,数据存在关系型数据库Mysql,oracle中,或者存储在非关系型数据库Mongo中。如何处理业务数据的时候,将M...
  • wojiushiwo987
  • wojiushiwo987
  • 2017-05-28 14:07:14
  • 3857

关系型数据库与非关系型数据库的区别?

当前主流的关系型数据库有Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL等。 非关系型数据库有 NoSql、Cloudant。 nosq...
  • xuanjiewu
  • xuanjiewu
  • 2015-09-06 10:40:10
  • 29115

关系型数据库与非关系型数据库 优缺点

关系型数据库与非关系型数据库 关系模型指的是采用二维表格来存储数据的模型,而关系型数据库由二维表及其之间的联系组成的一个数据组织。常见的由mysql sqlserver 关系型数据库的优点: ...
  • masaichi_
  • masaichi_
  • 2017-02-27 20:29:46
  • 1469
收藏助手
不良信息举报
您举报文章:关系型数据库 VS 非关系型数据库
举报原因:
原因补充:

(最多只允许输入30个字)