IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> SQL和NoSQL对比 -> 正文阅读

[大数据]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的性能。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-10-08 20:48:45  更:2022-10-08 20:51:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年5日历 -2025/5/1 11:51:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码