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

文章目录

  • 1.关系型数据库
    • 1.1 概念
    • 1.2 优点
    • 1.3 瓶颈
  • 2.从关系型到非关系型
  • 3.非关系型数据库
    • 3.1概念
    • 3.2分类
    • 3.3 缺点
  • 4.对比
    • 4.1 存储上
    • 4.2 事务
    • 4.3 数据集
    • 4.4 结构

1.关系型数据库

1.1 概念

  关系型数据库是指采用了关系模型来组织数据的数据库。简单来说,关系模式就是二维表格模型。
  主要代表SQL server,Oracle,Mysql

1.2 优点

  1.容易理解,二维表的结构非常贴近现实世界
  2.使用方便,使用sql语句使得操作关系型数据库非常方便
  3.易于维护,数据库的ACID属性,大大降低了数据的冗余和数据不一致的问题

1.3 瓶颈

  1.海量数据的读写效率
  对于网站的并发量高,往往达到每秒上万次的请求,对于传统关系型数据库来说,硬盘IO是一个很大的挑战
  2.高扩展性和高可用性
  在基于web的结构中,数据库是最难以横向拓展的,当一个应用系统的用户量和访问量与日俱增的时候,数据库没有办法像web server那样简单的通过添加更多的硬件和服务结点来拓展性能和负载能力。

2.从关系型到非关系型

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

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

3.非关系型数据库

3.1概念

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

3.2分类

  非关系型数据库大部分是开源的,实现比较简单,大都是针对一些特性的应用需求出现。根据结构化方法和应用场景的不同,分为一下几类。
  1.面向高性能并发读写的key-value数据库
  主要特点是具有极高的并发读写能里,例如Redis,Tokyo Cabint等
  2.面向海量数据访问的面向文档数据库
  特点是,可以在海量的数据库快速查询数据。例如MongoDb以及CouchDB
  3.面向可拓展的分布式数据库
  解决的主要问题是传统数据库的扩展性上的缺陷

3.3 缺点

由于NoSQL的约束少,所以不能够像sql哪样提供where字段属性的查询。因此适合存储较为简单的数据。

4.对比

4.1 存储上

  关系型数据库是以表格的形式进行存储的,而非关系型数据库是以key-value的形式存储的

4.2 事务

  关系型数据库汇总有事务的概念,而非关系型数据库中没有,它的每一个数据集都是原子级别的

4.3 数据集

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

4.4 结构

  关系型数据库的结构是预先定义好的的,例如主键、索引、外键等,定义好这些结构之后才能添加数据。
  在非关系型数据库中,数据可以在任何时候任何地方添加。不需要预先定义。

你可能感兴趣的:(SQL,数据库,sql,oracle)