NoSQL(非关系型数据库)与SQL(关系型数据库)的差别

news2024/11/26 5:11:57

目录

NoSQL(非关系型数据库)与SQL(关系型数据库)的差别

1.数据结构:结构化与非结构化

2.数据关联:关联性与非关联性

3.查询方式:SQL查询与非SQL查询

4.事务特性:ACID与BASE

分析ACID与BASE的含义:

5.存储方式:磁盘与内存

6.扩展性:垂直与水平

7.使用场景


NoSQL(非关系型数据库)与SQL(关系型数据库)的差别

1.数据结构:结构化与非结构化

SQL是关系型数据库,它是具有结构化的。

分析:

在项目设计之初,我们就进行确定了数据表对应各个字段对应的约束条件以及数据类型及其大小

一旦我们构建出了对应的数据表之后,我们之后进行插入或操作数据 那么都是基于这个结构去进行的,这就是结构化。

由于我们的数据表是面向业务的,所以一旦我们确立了表之后就不会再轻易去进行修改表的结构对应的约束了。因为一旦牵扯数据量过大,会影响很多记录。如果影响过多数据记录,甚至会导致锁表 !

举例:MySQL就是一种表类型存储的,表可以有许多字段,字段被很多数据类型所修饰。并且可以有主键,外键等等。

NoSQL是非关系型数据库,非结构化。 数据结构的形式是不一定的,可变化的。

分析:

存储数据记录对应的数据结构是多种多样的。并且当我们确定存储之后,我们也可以进行随意修改数据对应的结构。这一点和SQL类型数据库正好相反。并且对于存储数据,加一个减一个数据 对于整体的影响也不大。

举例:Redis是Key-Value键值型的。MongoDB是文档类型的。HBase是列类型的。Neo4j是Graph类型的

2.数据关联:关联性与非关联性

SQL中多张表之间会构成关联关系 这就是关联性。

NoSQL是非关联性的,数据之间是无关联的,如果非要构建关联,也需要我们自己去进行设定。

3.查询方式:SQL查询与非SQL查询

SQL:语句结构统一。

分析:无论是MySQL还是Orcle,查询都是select * from 表名

非SQL:优势在于它简单,语法贴近我们日常开发语法。缺点就是不同的NoSQL类型数据库对应的语法不同

分析:对于不同类型的NoSQL数据库,查询语句差别很大。

4.事务特性:ACID与BASE

SQL关系型数据库,对应事务是一致性的,即是ACID。适合使用于相关业务对数据安全性较高的场景。

非SQL:对事务一致性基本满足 有可能不满足,即是BASE。安全性不高,适用于对性能要求高的业务。

分析ACID与BASE的含义:

ACID:

事务是由一组SQL语句组成的逻辑处理单元,事务具有以下四个属性,通常简称为事务的ACID属性。

(1) 原子性(Atomicity)

事务是对一个原子操作单元,其中对数据的修改,要么全部执行,要么全部不执行。

 (2)一致性(Consistent)

在事务开始和完成时,数据都必须保证一致状态,这就意味着所有相关的数据规则都必须应用于事务的修改,以保持数据的完整性。 

 (3) 隔离性(Isolation)

数据库系统提供一定的隔离机制,保证事务在不受外部并发操作影响的“独立”环境下执行。这就意味着对外部是不可见的。

 (4) 持久性(Durable)

事务完成之后,它对于数据的修改是永久性的,即使出现系统故障也能保持。

BASE:

1.基本可用(Basically Available): NoSQL允许分布式系统中某些部分出现故障,那么系统的其余部分依然可用。它不会像ACID那样,在系统出现故障时,进行强制拒绝,允许继续部分访问。

2.软状态(Soft State): NoSQL在数据处理过程中,允许这个过程,存在数据状态暂时不一致的情况。但经过纠错处理,最终会一致的。

3.最终一致性(Eventually Consistent): NoSQL的软状态允许数据处理过程的暂时不一致,但是最终处理结果将是一致的,说明NoSQL对数据处理过程可以有短暂的时间间隔,也允许分更细的步骤一个一个地处理,最好数据达到一致即可。这在互联网上进行分布式应用具有其明显的优势。

5.存储方式:磁盘与内存

存储方式:

SQL类型的数据库的数据是存储在磁盘上面的。NoSQL是存储在内存中的。这就意味着NoSQL类型的数据库进行查询时效率更高!但是内存是有限度的。

6.扩展性:垂直与水平

对于SQL类型的数据库,比如说:MySQL数据库。设计者一开始设计的时候就没有考虑到后续的扩展性能问题,它是垂直扩展的,所谓垂直扩展即是:MySQL数据库主从同步,但是主机和从机的数据保持一致性,从机只负责进行读,主机负责写,一定程度上提升了查询的效率。但是对于数据的存储量的提升,我们还是需要从数据库所在的服务器进行着手,这很大程度上就限制了业务场景。

对于NoSQL类型的数据库,比如说:Redis缓存,设计者一开始就考虑到其后续的性能扩展性,所以扩展时可以进行水平扩展,所谓水平扩展即是:我们可以把数据部署在多条服务器上,这样弥补了SQL类型数据库的数据存储依赖服务器性能上限的问题。Redis存储数据一般即是:通过Hash运算计算出该数据最终是存储在哪一个节点上的。

7.使用场景

SQL:(1)数据结构固定 (2)相关业务对数据安全性,一致性要求高

NoSQL:(1)数据结构不固定 (2)对一致性,安全性要求不高 (3) 对性能要求高

其实SQL与NoSQL类型的数据存储可以一起使用,相辅相成。比如:MySQL与Redis,对于数据的存储为了考虑到安全性,我们存储到MySQL数据库中,但是对于热点数据的读取,我们可以放置到Redis缓存中。

总结不易,期待三连支持,谢谢大家。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/345745.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

16- 梯度提升分类树GBDT (梯度下降优化) (算法)

梯度提升算法 from sklearn.ensemble import GradientBoostingClassifier clf GradientBoostingClassifier(subsample0.8,learning_rate 0.005) clf.fit(X_train,y_train) 1、交叉熵 1.1、信息熵 构建好一颗树,数据变的有顺序了(构建前&#xff0c…

jvm对象创建与内存解析

1.类加载检查虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必须先执行相应的类加载过程。new指令对应到语言层面上讲…

【node.js】node.js的安装和配置

文章目录前言下载和安装Path环境变量测试推荐插件总结前言 Node.js是一个在服务器端可以解析和执行JavaScript代码的运行环境,也可以说是一个运行时平台,仍然使用JavaScript作为开发语言,但是提供了一些功能性的API。 下载和安装 Node.js的官…

linux篇【14】:网络https协议

目录 一.HTTPS介绍 1.HTTPS 定义 2.HTTP与HTTPS (1)端口不同,是两套服务 (2)HTTP效率更高,HTTPS更安全 3.加密,解密,密钥 概念 4.为什么要加密? 5.常见的加密方式…

裸辞5个月,面试了37家公司,终于找到理想工作了

上半年裁员,下半年裸辞,有不少人高呼裸辞后躺平真的好快乐!但也有很多人,裸辞后的生活五味杂陈。 面试37次终于找到心仪工作 因为工作压力大、领导PUA等各种原因,今年2月下旬我从一家互联网小厂裸辞,没想…

linux高级命令之用户相关操作

用户相关操作学习目标能够知道创建用户的命令1. 创建用户命令说明useradd创建(添加)用户useradd命令选项:选项说明-m自动创建用户主目录,主目录的名字就是用户名-g指定用户所属的用户组,默认不指定会自动创建一个同名的用户组创建用户效果图:查看所有用户信息的文件…

nginx-host绕过实例复现

绕过Nginx Host限制第一种处理方法Nginx在处理Host的时候,会将Host用冒号分割成hostname和port,port部分被丢弃。所以,我们可以设置Host的值为2023.mhz.pw:xxx"example.com,这样就能访问到目标Server块:第二种处理…

SpringBoot的定时任务实现--SpringTask

SpringTask是Spring自带的功能。实现起来比较简单。 使用SpringTask实现定时任务有两种方式: 1.注解方式 基于注解 Scheduled Scheduled(cron "*/1 * * * * ?")public void up(){System.out.println("定时任务开启:"System.cu…

想做好项目经理,一定要知道这10句话

早上好,我是老原。有句话说过:“你是怎么过好一天的,就是怎么过好一生的。”这句话,我刚毕业那会没什么感觉,但工作越久,体会越深。你会发现优秀的人有些特质和习惯千篇一律,而普通人&#xff0…

深圳80后男子朋友圈晒情人节,一天收三个不同女子巧克力红包

每年情人节到来的时候,对于广大男同胞来说,都是倍受煎熬的日子,因为不论你怎么去做,都不会落到好处。如果你还没有对象,这个情人节就尴尬了,眼看着别人出入成双成对,自己却落得个孤家寡人。 如果…

微信Android架构历史——模块化架构重构实践

微信Android诞生之初,用的是常见的分层结构设计。这种架构简单、清晰并一直沿袭至今。这是微信架构的v1.x时代。 图1-架构演进 到了微信架构的v2.x时代,随着业务的快速发展,消息通知不及时和Android 2.3版本之前webview内存泄露问题开始突显…

java基于springboot+vue微信小程序的医疗监督反馈小程序

医疗监督反馈行业是一个传统的行业。根据当前发展现状,网络信息时代的全面普及,医疗监督反馈行业也在发生着变化,单就下单这一方面,利用手机下单正在逐步进入人们的生活。 传统的下单方式,不仅会耗费大量的人力、时间,有时候还会出错。小程序系统伴随智能手机为我们提供了新的方…

【贝叶斯方法】无论您是数据统计分析初学者,还是有一定基础

包括回归及结构方程模型概述及数据探索;R和Rstudio简介及入门和作图基础;R语言数据清洗-tidyverse包;贝叶斯回归与混合效应模型;贝叶斯空间自相关、时间自相关及系统发育相关数据分析;贝叶斯非线性数据分析;贝叶斯结构…

API数据是什么?举例说明,它是电商平台发展的领航者

API接口: API接口是什么? API全称是:Application Programming Interface,即:应用程序接口。开发人员可以使用这些API接口进行编程开发,而又无需访问源码,或理解内部工作机制的细节。 比较常见…

外包公司“混”了2年,我只认真做了5件事,如今顺利拿到腾讯Offer。

前言 是的,我一家外包公司工作了整整两年时间,在入职这家公司前,也就是两年前,我就开始规划了我自己的人生,所以在两年时间里,我并未懈怠。 现如今,我已经跳槽到了腾讯,顺利拿下 o…

项目(今日指数之登录功能)

今日目标1. 完善基于前后端分用户验证码登录功能; 2. 理解验证码生成流程,并使用postman测试; 3. 理解并实现国内大盘数据展示功能; 4. 理解并实现国内板块数据展示功能; 5. 理解后端接口调试和前后端联调的概念;1.验证码登录功能1.1 验证码功能分析1)前后端分离架构…

【JAVA】jdk8 Stream 排序精通

背景 jdk8的stream流能方便的排序,但是每次都要查资料,非常不方便,不确定,所以这次直接弄懂,不再迷茫。 转载请注明来源,创作不易,请多多支持。 基础排序 stream流 大家应该都比较熟悉了&…

react-01-jsx语法与react实例三大属性与react生命周期

英文官网: https://reactjs.org/ 中文官网:https://react.docschina.org/ 基本知识 1、jsx语法 标签中使用js表达式用{} jsx中样式叫className 内联样式使用style{{key:value}}去写 只有一个根标签 标签必须闭合 标签首字母 (1).若小写字母开头,则将该标签…

网络安全领域中CISP证书八大类都有什么

CISP​注册信息安全专业人员 注册信息安全专业人员(Certified Information Security Professional),是经中国信息安全产品测评认证中心实施的国家认证,对信息安全人员执业资质的认可。该证书是面向信息安全企业、信息安全咨询服务…

P1217 [USACO1.5]回文质数 Prime Palindromes

[USACO1.5]回文质数 Prime Palindromes 题目描述 因为 151151151 既是一个质数又是一个回文数&#xff08;从左到右和从右到左是看一样的&#xff09;&#xff0c;所以 151151151 是回文质数。 写一个程序来找出范围 [a,b](5≤a<b≤100,000,000)[a,b] (5 \le a < b \l…