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年…...
【刷题笔记】--两数之和Ⅳ,从二叉树中找出两数之和
法一:深度搜索中序遍历双指针 思路:通过中序遍历二叉树得到一个递增的数列,再在这个递增的二叉树中找到这两数。 主要学到双指针这个方法。 对于一般数列,我们要找到两数满足其之和等于目标数,我们一般会进行暴力&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中,基本类型的对象可以直接比较大小。 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.定义一个类格式:class Classname( ):内容💎鄙人目前还是一名学生,最熟悉的也就是学校了,所以就以学校为例子来建立一个类吧class School():headline"帝国理工大学"def schoolmotto(self):…...
CNI 网络流量分析(七)Calico 介绍与原理(二)
文章目录CNI 网络流量分析(七)Calico 介绍与原理(二)CNIIPAM指定 IP指定非 IPAM IPCNI 网络流量分析(七)Calico 介绍与原理(二) CNI 支持多种 datapath,默认是 linuxDa…...
API安全的最大威胁:三体攻击
最近《三体》火的一塌糊涂,动画片、电视剧和书都受到了大家的喜爱。在API安全上,最近也发现了三体攻击。 当然了,肯定是不来自于三体人的攻击,这里的三体攻击指的是(trinity,也称三位一体攻击),是一个新的攻击手法。具体的情况老李也找到了相关的介绍,下面就分享给大…...
Nano-Banana多场景落地:汽车内饰配件爆炸图AI辅助设计案例
Nano-Banana多场景落地:汽车内饰配件爆炸图AI辅助设计案例 1. 引言:当汽车设计遇上AI拆解美学 想象一下,你是一位汽车内饰设计师。面对一个复杂的中央扶手总成,里面有几十个塑料件、卡扣、线束和电子模块。你需要向客户、工程师…...
保温vs隔热
保温vs隔热 什么是保温,什么是隔热?保的什么温,隔的什么热? 1 保温vs隔热 保温vs隔热是门窗幕墙行业耳熟能详的两个词:比如门窗保温性能,隔热铝合金窗等等。那么什么是保温,什么是隔热呢? GB/T 8478-2020《铝合金门窗》中给出了门窗保温性能和隔热性能的定义。 门…...
Phi-4-mini-reasoning轻量模型选型指南:何时该用Phi-4-mini而非Qwen3
Phi-4-mini-reasoning轻量模型选型指南:何时该用Phi-4-mini而非Qwen3 1. 模型概述与核心优势 Phi-4-mini-reasoning是一个基于合成数据构建的轻量级开源模型,专注于高质量、密集推理的数据处理能力。作为Phi-4模型家族成员,它特别适合需要高…...
ADG实时同步失效的深层原因:从MRP0的WAIT_FOR_LOG状态看standby redolog设计要点
ADG实时同步失效的深层解析:从WAIT_FOR_LOG状态看SRL设计关键点 当Oracle Data Guard环境中MRP0进程陷入WAIT_FOR_LOG状态时,这就像高速公路上的应急车道被占用——整个容灾系统的实时同步能力将陷入瘫痪。本文将带您穿透现象看本质,从存储结…...
新手程序员福音:coze-loop智能优化代码,附详细修改说明
新手程序员福音:coze-loop智能优化代码,附详细修改说明 1. 为什么新手程序员需要代码优化工具 刚入行的程序员常常面临一个困境:写出的代码虽然能运行,但质量参差不齐。要么效率低下,要么难以维护,要么存…...
2026年花洒产品推荐:四款热门花洒横评,闭眼入不踩雷
其实选花洒不用盲目追大牌,核心看体验、看品质、看适配性。今天就带来四款热门花洒的深度横评,涵盖瑞尔特、飞利浦、小米米家、九牧四大主流品牌,每款都结合真实使用体验拆解,不罗列参数、不夸大宣传,让每天的沐浴都能…...
SecGPT-14B API保护:防止OpenClaw任务过度消耗模型资源
SecGPT-14B API保护:防止OpenClaw任务过度消耗模型资源 1. 为什么需要API保护机制 上周我在本地部署了SecGPT-14B模型,并尝试通过OpenClaw实现自动化安全报告生成。凌晨3点突然收到服务器告警——模型服务因资源耗尽崩溃了。检查日志发现,O…...
OpenClaw家庭作业助手:Qwen3-14B解析数学题并分步讲解
OpenClaw家庭作业助手:Qwen3-14B解析数学题并分步讲解 1. 为什么需要家庭作业助手? 作为一个经常辅导孩子功课的家长,我深刻体会到传统辅导方式的痛点。每天晚上检查作业时,孩子遇到不会的题目需要等待家长解答,而家…...
16.为什么 Fragment 相比额外包一层 div 更优?
在 React 里,只要你写过几行组件,很容易掉进一个老毛病:“反正组件要有一个根节点,那我就随手包一层 <div> 吧。”一开始看不出问题,但项目一大,你会发现:DOM 结构被一堆没意义的 <div…...
手把手教你用WouoUI-PageVersion打造128*64 OLED炫酷UI(附Air001移植避坑指南)
嵌入式UI开发实战:WouoUI-PageVersion在128*64 OLED屏上的高效移植与优化 在资源受限的嵌入式设备上实现流畅的UI动画一直是个技术挑战。本文将带你深入探索如何利用WouoUI-PageVersion框架,在仅有4KB RAM和32KB Flash的Air001等微控制器上,打…...
