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

关系型数据库

(1)关系型数据库的特点:

一、关系型数据库,是指采用了关系模型来组织数据的数据库;
二、关系型数据库的最大特点就是事务的一致性(innodb的功能)

 

1. 关系型数据库支持事务

概念理解:

1)数据库事务:

事务必须具备ACID特性,ACID是Atomic原子性,Consistency一致性,Isolation隔离性,Durability持久性。

1. 原子性:事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行。(注意与第一范式的原子性相区别,后者讨论的是字段书写的规范性)

2. 一致性:事务应确保数据库的状态从一个一致状态转变为另一个一致状态。一致状态的含义是数据库中的数据应满足完整性约束。

3. 隔离性:SQL标准中定义了4个不同的级别,对数据库查询操作定义了不同的限制;

4. 持久性:数据永久性存储,关系型数据库数据被插入后不容易修改,必须通过sql语句去执行,而在修改数据时因为主键的存在,不会向数据库中插入有相同主键的记录;非关系型数据库是具备这样的性能的。

 

ACID特性可以专门写好几篇文章,这里只是作简要的介绍,后续我也会写写自己的理解

ACID的总结就是为了跟非关系型数据库的对比

 

(2)关系型数据库的优点:

一、容易理解:二维表结构是非常贴近逻辑世界一个概念,关系模型相对网状、层次等其他模型来说更容易理解;
二、使用方便:通用的SQL语言使得操作关系型数据库非常方便;
三、易于维护:丰富的完整性(实体完整性、参照完整性和用户定义的完整性)大大减低了数据冗余和数据不一致的概率

 

(3)关系型数据库的缺点:

一、为了维护一致性所付出的巨大代价就是其读写性能比较差(而非关系型数据库没有锁的概念,读写性是比较突出的)
二、固定的表结构;
三、高并发读写需求;
四、海量数据的高效率读写限制

 

非关系型数据库

(1)非关系型数据的特点

一、使用键值对存储数据;

二、分布式和较优秀的扩展性(关系型数据库因为表之间键的关联很难做扩展);

三、一般不支持ACID特性

 

从理解上:

非关系型数据库严格上说不是一种数据库,应该是一种数据结构化存储方法的集合。

 

(2)非关系型数据的优点

一、存储数据的格式:nosql的存储格式是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,而关系型数据库则只支持基础类型。

二、无需经过sql层的解析,读写性能很高;

三、基于键值对,数据没有耦合性,容易扩展;
 

(3)非关系型数据的优点

一、不提供sql支持,学习和使用成本较高;
二、无事务处理,附加功能bi和报表等支持也不好