NOSQl与SQL的总结

1. 定义

SQL是:关系型数据库,以Oracle、MySql为代表的数据库

NOSQL就是Not Only SQL,是:非关系型数据库,以MongoDB、Redis为代表的数据库。

2. 关系型数据库

1. 关系型数据库遵循ACID规则

1.1  A (Atomicity) 原子性

原子性很容易理解,也就是说事务里的所有操作要么全部做完,要么都不做,事务成功的条件是事务里的所有操作都成功,只要有一个操作失败,整个事务就失败,需要回滚。

比如银行转账,从A账户转100元至B账户,分为两个步骤:1)从A账户取100元;2)存入100元至B账户。这两步要么一起完成,要么一起不完成,如果只完成第一步,第二步失败,钱会莫名其妙少了100元。

1.2  C (Consistency) 一致性

一致性也比较容易理解,也就是说数据库要一直处于一致的状态,事务的运行不会改变数据库原本的一致性约束。

例如现有完整性约束a+b=10,如果一个事务改变了a,那么必须得改变b,使得事务结束后依然满足a+b=10,否则事务失败。

1.3  I (Isolation) 独立性

所谓的独立性是指并发的事务之间不会互相影响,如果一个事务要访问的数据正在被另外一个事务修改,只要另外一个事务未提交,它所访问的数据就不受未提交事务的影响。

比如现有有个交易是从A账户转100元至B账户,在这个交易还未完成的情况下,如果此时B查询自己的账户,是看不到新增加的100元的。

1.4  D (Durability) 持久性

持久性是指一旦事务提交后,它所做的修改将会永久的保存在数据库上,即使出现宕机也不会丢失。

2.  关系型数据库的特征

2.1  关系型数据库

指采用了关系模型来组织数据的数据库;

2.2  关系型数据库的最大特点就是事务的一致性;

2.3  简单来说,关系模型指的就是二维表格模型

而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。

关系模型中常用的概念:

关系:可以理解为一张二维表,每个关系都具有一个关系名,就是通常说的表名

元组:可以理解为二维表中的一行,在数据库中经常被称为记录

属性:可以理解为二维表中的一列,在数据库中经常被称为字段

域:属性的取值范围,也就是数据库中某一列的取值限制

关键字:一组可以唯一标识元组的属性,数据库中常称为主键,由一个或多个列组成

关系模式:指对关系的描述。其格式为:关系名(属性1,属性2, … … ,属性N),在数据库中成为表结构

3.  关系型数据库的优点

1、容易理解:二维表结构是非常贴近逻辑世界一个概念,关系模型相对网状、层次等其他模型来说更容易理解;

2、使用方便:通用的SQL语言使得操作关系型数据库非常方便;

3、易于维护:丰富的完整性(实体完整性、参照完整性和用户定义的完整性)大大减低了数据冗余和数据不一致的概率;

4、支持SQL,可用于复杂的查询。

4.  关系型数据库的缺点

1、为了维护一致性所付出的巨大代价就是其读写性能比较差的问题;

2、固定的表结构问题;

3、高并发读写的问题;

4、海量数据的高效率读写的问题;

5.  非关系型数据库

1. 非关系型数据库遵循BASE规则

BASE:Basically Available, Soft-state, Eventually Consistent。 由 Eric Brewer 定义。

BASE是NoSQL数据库通常对可用性及一致性的弱要求原则:

1、Basically Availble –基本可用

2、Soft-state –软状态/柔性事务。 “Soft state” 可以理解为”无连接”的, 而 “Hard state” 是”面向连接”的

3、Eventual Consistency –最终一致性, 也是ACID的最终目地。

6.  非关系型数据库的特征

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

2、分布式;

3、一般不支持ACID特性;

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

7.  非关系型数据库的优点

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

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

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

8.  非关系型数据库的缺点

1、不提供sql支持,学习和使用成本较高;

2、无事务处理。

3、在复杂查询、文本挖掘、分析建模方面

学习总结

数据库的使用没有最好,只有选择合适的数据库。

非关系型数据库的最大优势:

1. 性能NOSQL是基于键值对的,可以想象成表中的主键和值的对应关系,而且不需要经过SQL层的解析,所以性能非常高。

2. 可扩展性同样也是因为基于键值对,数据之间没有耦合性,所以非常容易水平扩展。

关系型数据库的最大优势:

1. 复杂查询可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询。

2. 事务支持使得对于安全性能很高的数据访问要求得以实现。

    原文作者:rhlp
    原文地址: https://www.jianshu.com/p/9aa88e1ce155
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞