当前位置: 首页 > news >正文

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

目录

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缓存中。

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

相关文章:

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

目录 NoSQL(非关系型数据库)与SQL(关系型数据库)的差别 1.数据结构:结构化与非结构化 2.数据关联:关联性与非关联性 3.查询方式:SQL查询与非SQL查询 4.事务特性:ACID与BASE 分析ACID与BASE的含义: 5.存储方式&am…...

new bing的申请与使用教程

文章目录新必应申请新必应免代使用教程总结新必应申请 下载安装 Edge dev 版本,这个版本可以直接使用 对于没有更新的用户而言,不容易找到入口,所以我们直接使用 集成new bing的dev版本 Edge dev 下载链接:https://www.microso…...

yaml配置文件

最近在写代码,发现随着网络的增加,代码变得越来越冗余,所以就想着写一个网络的配置文件,把网络的配置放到一个文件中,而不再主函数中,这样代码开起来就好看了,调试的时候也方便了。之前写过一篇…...

284. 顶端迭代器

请你在设计一个迭代器,在集成现有迭代器拥有的 hasNext 和 next 操作的基础上,还额外支持 peek 操作。 实现 PeekingIterator 类: PeekingIterator(Iterator nums) 使用指定整数迭代器 nums 初始化迭代器。 int next() 返回数组中的下一个元…...

自学前端最容易犯的10个的错误,入门学前端快来看看

在前端学习过程中,有很多常见的误区,包括过度关注框架和库、缺乏实践、忽视算法和数据结构、忽视浏览器兼容性、缺乏团队合作经验、忽视可访问性、重构次数过多、没有关注性能、缺乏设计知识以及没有持续学习等。要避免这些误区,应该注重基础…...

【ADRC控制】使用自抗扰控制器调节起动机入口压力值

以前只知道工业控制中用的是PID控制,然而最近了解到实际生产中还在使用ADRC控制,而且使用效果还优于PID控制,遂找了几篇文献学习学习。 0 引言 自抗扰控制(Active Disturbances Rejection Controller,ADRC)…...

剑指 Offer Day2——链表(简单)

目录剑指 Offer 06. 从尾到头打印链表剑指 Offer 24. 反转链表剑指 Offer 35. 复杂链表的复制剑指 Offer 06. 从尾到头打印链表 原题链接:06. 从尾到头打印链表 最容易想到的思路就是先从头到尾打印下来,然后 reverse 一下,但这里我们使用递归…...

Final Cut Pro 10.6.5

软件介绍Final Cut Pro 10.6.5 已通过小编安装运行测试 100%可以使用。Final Cut Pro 10.6.5 破解版启用了全新的矩形图标,与最新的macOS Ventura设计风格统一,支持最新的macOS 13 文图拉系统,支持Apple M1/M2芯片。经过完整而彻底的重新设计…...

Modelsim仿真操作指导

目录 一、前言 二、仿真分类 三、RTL级仿真 3.1创建库 3.2 仿真配置设置 3.3 运行仿真 四、常见问题 4.1 运行仿真时报错“cant read "Startup(-L)": no such element in array” 4.2 运行仿真时无任何报错,但object窗口为空,可正常运…...

你知道这20个数组方法是怎么实现的吗?

前言你们一定对JavaScript中的数组很熟悉,我们每天都会用到它的各种方法,比如push、pop、forEach、map……等等。但是仅仅使用它就足够了吗?如此出色,您一定不想停在这里。我想和你一起挑战实现20数组方法的功能。1、forEachforEa…...

《系统架构设计》-01-架构和架构师概述

文章目录1. 架构的基本定义1.1 架构组成理论1.1.1 系统元素1)概念2)静态结构和动态结构1.1.2 基本系统属性1.1.3 设计和发展原则1.2 架构的决策理论1.2.1 统一软件过程(Rational Unified Process,统一软件过程)1.2.2 决…...

第七届蓝桥杯省赛——5分小组

题目:9名运动员参加比赛,需要分3组进行预赛。有哪些分组的方案呢?我们标记运动员为 A,B,C,... I下面的程序列出了所有的分组方法。该程序的正常输出为:ABC DEF GHIABC DEG FHIABC DEH FGIABC DEI FGHABC DFG EHIABC DFH EGIABC DF…...

中国专科医院行业市场规模及未来发展趋势

中国专科医院行业市场规模及未来发展趋势中国专科医院行业在过去几年中取得了跨越式发展,市场规模不断扩大,未来的发展前景也远比过去更加乐观。根据市场调研在线网发布的2023-2029年中国专科医院行业运营现状及发展前景预测报告分析,截至2018年&#xf…...

【刷题笔记】--两数之和Ⅳ,从二叉树中找出两数之和

法一:深度搜索中序遍历双指针 思路:通过中序遍历二叉树得到一个递增的数列,再在这个递增的二叉树中找到这两数。 主要学到双指针这个方法。 对于一般数列,我们要找到两数满足其之和等于目标数,我们一般会进行暴力&a…...

浏览器渲染原理JavaScript V8引擎

浏览器渲染原理 前言 在我们面试过程中,面试官经常会问到这么一个问题,那就是从在浏览器地址栏中输入URL到页面显示,浏览器到底发生了什么? 浏览器内有哪些进程,这些进程都有些什么作用;浏览器地址输入U…...

在TheSandbox 的「BOYS PLANET」元宇宙中与你的男孩们见面吧!

世界各的男孩们成为 K-Pop 男团的旅程。 Mnet 的全球项目 BOYS PLANET 终于在 2 月 2 日首次亮相! The Sandbox 与 CJ ENM 合作,于 2 月 6 日晚上 10 点开始举办两个基于 BOYS PLANET 生存节目的虚拟体验:BOYS PLANET:BOYS LAND 和…...

数据结构与算法:java对象的比较

1.基本类型的比较 在Java中&#xff0c;基本类型的对象可以直接比较大小。 public class TestCompare {public static void main(String[] args) {int a 10;int b 20;System.out.println(a > b);System.out.println(a < b);System.out.println(a b);char c1 A;char…...

python(16)--类

一、类的基本操作1.定义一个类格式&#xff1a;class Classname( )&#xff1a;内容&#x1f48e;鄙人目前还是一名学生&#xff0c;最熟悉的也就是学校了&#xff0c;所以就以学校为例子来建立一个类吧class School():headline"帝国理工大学"def schoolmotto(self):…...

CNI 网络流量分析(七)Calico 介绍与原理(二)

文章目录CNI 网络流量分析&#xff08;七&#xff09;Calico 介绍与原理&#xff08;二&#xff09;CNIIPAM指定 IP指定非 IPAM IPCNI 网络流量分析&#xff08;七&#xff09;Calico 介绍与原理&#xff08;二&#xff09; CNI 支持多种 datapath&#xff0c;默认是 linuxDa…...

API安全的最大威胁:三体攻击

最近《三体》火的一塌糊涂,动画片、电视剧和书都受到了大家的喜爱。在API安全上,最近也发现了三体攻击。 当然了,肯定是不来自于三体人的攻击,这里的三体攻击指的是(trinity,也称三位一体攻击),是一个新的攻击手法。具体的情况老李也找到了相关的介绍,下面就分享给大…...

5大核心价值重构云游戏体验:Sunshine让你的游戏突破硬件与空间限制

5大核心价值重构云游戏体验&#xff1a;Sunshine让你的游戏突破硬件与空间限制 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 在数字娱乐日益碎片化的今天&#xff0c;玩家们面临…...

STM32水质监测系统开发与物联网应用

1. 项目概述 作为一名嵌入式开发工程师&#xff0c;我最近完成了一个基于STM32的河流水质监测系统项目。这个系统能够实时检测水体的PH值、电导率和浊度等关键参数&#xff0c;并通过物联网技术实现远程监控和自动调节功能。在实际应用中&#xff0c;我发现这套系统特别适合用于…...

优化算法避坑指南:为什么BFGS比DFP更常用?从数值稳定性到工程实践详解

优化算法避坑指南&#xff1a;为什么BFGS比DFP更常用&#xff1f;从数值稳定性到工程实践详解 在机器学习模型训练和工程优化问题中&#xff0c;我们常常需要求解无约束优化问题。当目标函数的海森矩阵难以计算或维度较高时&#xff0c;拟牛顿法因其出色的平衡性成为首选。但面…...

告别盲打:用GDB和Python-pwntools动态调试分析jarvisoj_level2的栈溢出漏洞

逆向工程实战&#xff1a;用GDB与pwntools解剖jarvisoj_level2栈溢出漏洞 在二进制安全领域&#xff0c;栈溢出漏洞一直是攻防演练中的经典课题。今天我们将以jarvisoj_level2这道CTF题目为蓝本&#xff0c;深入探讨如何通过GDB动态调试与pwntools脚本的完美配合&#xff0c;实…...

OpCore-Simplify:3步搞定黑苹果EFI配置,告别繁琐手动调试

OpCore-Simplify&#xff1a;3步搞定黑苹果EFI配置&#xff0c;告别繁琐手动调试 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 你是否曾经被黑苹果复…...

大厂面试秘籍:AI岗位必问的10道题解析

在人工智能技术迅猛发展的今天&#xff0c;AI测试开发岗位已成为大厂竞相争夺的热门领域。对于软件测试从业者而言&#xff0c;转型AI岗位不仅是职业跃迁的机遇&#xff0c;更是技术深化的挑战。一、基础概念题&#xff1a;AI、ML、DL的区别及测试意义这道题考察对人工智能生态…...

CnOpenData 中国全部银行对外投资信息数据

银行是经营货币和信用业务的金融机构&#xff0c;通过发行信用货币、管理货币流通、调剂资金供求、办理货币存贷与结算&#xff0c;是商品货币经济发展到一定阶段的产物。自改革开放以来&#xff0c;我国的商品经济愈发活跃&#xff0c;银行业的规模发展十分迅速。但在如今利率…...

AI模型版本控制:Git for ML最佳实践

当软件测试遇上AI模型迭代对于软件测试从业者而言&#xff0c;版本控制是保障软件质量、实现可追溯性的基石。然而&#xff0c;当测试对象从传统的功能模块转变为动态演进的AI模型时&#xff0c;版本管理的复杂性陡然增加。一个推荐模型本周表现优异&#xff0c;下周却因数据漂…...

洛雪音乐音源项目终极指南:如何免费获取全网高品质音乐资源

洛雪音乐音源项目终极指南&#xff1a;如何免费获取全网高品质音乐资源 【免费下载链接】lxmusic- lxmusic(洛雪音乐)全网最新最全音源 项目地址: https://gitcode.com/gh_mirrors/lx/lxmusic- 你是否曾为寻找免费的高品质音乐资源而烦恼&#xff1f;或者厌倦了在多个音…...

Axios知识

安装:npm方式&#xff1a;npm install axios直接方式&#xff1a;<script src"https://unpkg.com/axios/dist/axios.min.js"></script>实例&#xff1a;// 发起一个post请求 axios({method: post,url: /user/12345,data: { // 向后端传参数firstName: Fr…...