SQL和NoSQL对比

SQL和NoSQL对比

数据库是软件开发过程中数据持久化的一种手段,也是现在最主流的数据存储方式(除数据库还可以使用文件存储)。SQL是 Structured Query Language 的缩写,即结构化查询语言,是用来操作关系型数据库的一种计算机语言。NoSQL,即Not Only SQL,泛指非关系型数据库,不使用SQL 语言进行操作。

关系型数据库:用来存储结构化数据的数据库,关系型数据库使用数据表作为逻辑结构,数据表都是现实世界中对象的抽象映射,例如学生表,可能会有学号,姓名,性别等属性,这些属性都是学生对象的属性,属性与属性直接有关联,学生表和选课表两张表之间也有关联,数据并非独立存在的,所以称存储关系型数据的数据库为关系型数据库。

非关系型数据库:可从字面意思上直接进行理解,只要不是关系型数据库,那就是非关系型数据库,非关系型数据库在设计上并没有统一的标准。非关系型数据库基本都以key-value键值对的方式进行存储和查询数据,数据与数据之间相互独立,在计算机世界中,两个键值对之间无关系。

由于关系型数据库可以描述现实世界中复杂对象之间的关系,所以成为数据持久化的主角,主流的关系型数据库有MySQL,Oracle。关系型数据库可以通过SQL语言来直接进行操作,根据操纵座类型不同,可以把SQL原因划分为5种,数据定义语言(DDL),数据查询语言(DQL)数据操纵语言(DML),数据控制语言(DCL)和事务控制语言(TCL)。

数据定义语言(DDL):Data Definition Language,包括的操作有定义数据库、数据表、索引,以及对数据库、表、索引进行删改的操作。

数据查询语言(DQL):Data Query Language,包括对数据表进行查询的操作,select与各种限制查询条件的语句搭配。

数据操作语言(DML):Data Manipulation Language,包括的对数据表中记录的增删改的操作。

数据控制语言(DCL):Data Control Language,包括授权等的相关操作。

事务控制语言(TCL):Transaction Control Language,与事务相关的所有操作,包括事务提交和回滚等。

使用关系型数据库已经基本可以实现软件开发过程中数据存储的功能,NoSQL只辅助关系型数据库进行数据存储,提高系统性能。

NoSQL应用的一个典型场景

当网站服务端使用了负载均衡时,假设有服务器A和服务器B,用户的登录请求在A服务器处理后Session应该保存在何处?

如果只是简单的把Session存在服务器A中,客户端再次访问可能经过负载均衡请求会被转到服务器B,这样就成为了一个新的请求,查询不到登录信息。
请添加图片描述

方案1:把Session存在客户端的Cookie中

每次请求都会携带Cookie,Cookie中有登录信息,这样可以解决Session不共享的问题,但是这种方式有个致命的缺点,就是安全性很难做保证,并且每次都需要传输登录信息,使得网络传输效率比较低。

方案2:存在文件服务器或数据库中

把Session存在数据库中看似解决了Session不共享的问题,也解决了安全问题 ,但是采用负载均衡的原因就是大量请求会导致服务器压力过大,如果把登录信息存储在数据库中,每次请求都需要查数据库,查数据库需要大量的IO操作,这样采用负载均衡就失去了意义。

方案3: Session复制

把登录信息给每一台服务器都复制一份,这样做页可以解决问题,但缺点也是显而易见的,Session数据冗余,节点越多浪费越大。

方案4:采用缓存数据库

类似配置中心一样,把所有的登录信息都存储在缓存数据库中,每次查登录信息从缓存数据库中进行查询,缓存数据库使用的就是NoSQL。

由于NoSQL无特定的标准,数据之间是相互独立的,所以一组数据一般存储在一起,并把所有的数据都存储在内存中,响应时间很快,所以非常适合存放登录信息,NoSQL并不支持数据库所具备的ACID四大特性,但是单纯的键值对存取效率远超SQL的性能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值