浅谈关系型数据库和非关系型数据库
关系型数据库和非关系型数据库区别
关系型数据库
(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和报表等支持也不好