非关系型数据库和关系型数据库的区别

在这里插入图片描述

🤍 前端开发工程师、技术日更博主、已过CET6
🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1
🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》
🍚 蓝桥云课签约作者、上架课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入门到实战全面掌握 uni-app》
💬 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。

一、数据模型

  1. 关系型数据库(RDBMS)
    • 基于关系模型:关系型数据库采用关系模型来组织数据,以表(Table)的形式存储信息。表由行(Row,也称为记录)和列(Column,也称为字段)组成。例如,一个存储用户信息的表可能有“用户ID”、“姓名”、“年龄”、“电子邮件”等列,每一行代表一个用户的完整信息。
    • 数据关联与约束:表与表之间可以通过主键(Primary Key)和外键(Foreign Key)建立关联。主键用于唯一标识表中的每一行数据,外键用于建立不同表之间的关系。这种关联使得数据具有完整性约束,例如,在一个订单系统中,“订单表”中的“用户ID”字段作为外键与“用户表”中的“用户ID”主键相关联,保证了订单数据与用户数据的一致性。
  2. 非关系型数据库(NoSQL)
    • 多样的数据模型:非关系型数据库没有固定的表结构,其数据模型更加多样化。常见的数据模型包括键 - 值(Key - Value)存储、文档(Document)存储、列族(Column - Family)存储和图形(Graph)存储等。
    • 键 - 值存储示例:以键 - 值存储为例,数据以键值对的形式存在,就像一个巨大的字典。例如,在一个缓存系统中,键可以是一个缓存项的唯一标识符,值可以是缓存的具体内容,如一个网页片段或用户配置信息。
    • 文档存储示例:文档存储中的数据单元是文档,通常以JSON或XML等格式存储。例如,一个博客系统可以将每一篇博客文章存储为一个文档,文档中包含文章标题、作者、内容、发布时间等字段,这些字段的结构可以根据文章的具体需求灵活变化。

二、数据一致性

  1. 关系型数据库
    • 强一致性保证:关系型数据库遵循ACID原则(原子性Atomicity、一致性Consistency、隔离性Isolation、持久性Durability)来确保数据的一致性。原子性保证事务中的所有操作要么全部完成,要么全部不完成;一致性确保数据库在事务执行前后始终保持一致状态;隔离性防止不同事务之间的相互干扰;持久性保证一旦事务提交,其对数据库的修改将永久保存。
    • 示例说明:在银行转账系统中,从一个账户转出资金和转入另一个账户这两个操作被视为一个事务。关系型数据库会确保这个事务要么完全成功(两个账户余额都正确更新),要么完全失败(两个账户余额都不变),不会出现只更新一个账户余额的情况,从而保证了数据的强一致性。
  2. 非关系型数据库
    • 不同的一致性级别:非关系型数据库在一致性方面有多种策略,不一定遵循ACID原则。一些非关系型数据库提供强一致性,例如,某些键 - 值存储系统在特定配置下可以保证每次读取的数据都是最新写入的数据。然而,更多的非关系型数据库采用最终一致性(Eventual Consistency)策略。
    • 最终一致性示例:在一个分布式的文档存储数据库中,当数据在不同节点之间进行复制时,可能会出现短暂的数据不一致。例如,在一个全球分布的内容管理系统中,对一篇文档的更新可能首先在一个数据中心完成,然后通过异步复制传播到其他数据中心。在复制过程中,不同用户在不同数据中心访问这篇文档时,可能会看到不同的版本,但最终所有数据中心的数据会达到一致状态。

三、可扩展性

  1. 关系型数据库
    • 垂直扩展为主:关系型数据库在扩展时,通常先考虑垂直扩展,即通过增加服务器的硬件资源(如CPU、内存、存储容量)来提高性能。这种扩展方式在一定程度上能够满足业务增长的需求,但存在硬件资源瓶颈,当数据量和访问量达到一定规模后,单纯的垂直扩展可能会变得非常昂贵且效果有限。
    • 水平扩展挑战:水平扩展(通过添加更多的服务器节点来分担负载)在关系型数据库中相对复杂。因为关系型数据库的数据结构和关联关系复杂,数据的分片(Sharding)和分布式事务处理等操作难度较大。例如,要将一个大型的电子商务订单数据库进行水平扩展,需要精心设计数据分片策略,以确保订单数据及其关联的用户数据、商品数据等在不同节点之间的合理分配,同时还要处理好分布式事务,避免数据不一致。
  2. 非关系型数据库
    • 天生适合水平扩展:非关系型数据库通常设计为易于水平扩展,能够方便地通过添加更多的节点来处理不断增加的数据量和访问量。例如,在一个大规模的键 - 值存储系统中,新的数据可以均匀地分布到新增的节点上,系统可以自动调整数据的分布,以适应负载的变化。
    • 分布式架构优势:许多非关系型数据库采用分布式架构,数据在多个节点之间进行复制和存储。这种分布式特性不仅提高了系统的可扩展性,还增强了系统的可用性和容错性。例如,在一个基于列族存储的大数据存储系统中,数据被分布在多个节点上,即使部分节点出现故障,系统仍然可以通过其他节点提供服务,并且可以自动进行数据恢复和重新平衡。

四、查询语言

  1. 关系型数据库
    • SQL(Structured Query Language):关系型数据库使用SQL作为标准的查询语言。SQL是一种功能强大的声明式语言,能够进行复杂的数据查询、插入、更新和删除操作。例如,可以使用SELECT语句从多个表中检索数据,通过JOIN操作关联不同的表,使用WHERE子句进行条件筛选,使用GROUP BYHAVING进行分组和分组条件筛选等。
    • 示例查询:在一个包含“学生表”(有“学生ID”、“姓名”、“班级ID”等列)和“班级表”(有“班级ID”、“班级名称”等列)的学校数据库中,可以使用以下SQL查询获取每个班级的学生人数:
    SELECT c.class_name, COUNT(s.student_id) AS student_count
    FROM classes c
    JOIN students s ON c.class_id = s.class_id
    GROUP BY c.class_name;
    
  2. 非关系型数据库
    • 因数据模型而异的查询语言或接口:非关系型数据库没有统一的查询语言。对于键 - 值存储,查询通常是通过键来获取值,操作相对简单,可能使用简单的API函数,如get(key)来获取指定键的值。对于文档存储,可能使用类似JSON查询语言(如MongoDB的查询语言),可以通过文档的字段进行筛选和查询。对于图形存储,则有专门的图形查询语言(如Cypher for Neo4j),用于查询节点和边之间的关系。
    • 文档存储查询示例(以MongoDB为例):在一个存储用户文档(包含“姓名”、“年龄”、“爱好”等字段)的MongoDB数据库中,可以使用以下查询获取年龄大于30岁的用户:
    db.users.find({ age: { $gt: 30 } });
    

五、应用场景

  1. 关系型数据库
    • 事务性系统:适用于对数据一致性和完整性要求极高的事务性应用,如银行系统、财务系统、企业资源规划(ERP)系统等。在这些系统中,需要严格保证每一笔交易的准确性和数据的一致性,关系型数据库的ACID特性能够很好地满足这些需求。
    • 结构化数据存储与分析:对于具有明确结构的数据,如员工信息表、订单明细表等,关系型数据库能够方便地进行存储、查询和数据分析。可以使用SQL进行复杂的查询和报表生成,例如,企业可以通过关系型数据库查询每个部门的员工绩效数据、每个产品的销售趋势等。
  2. 非关系型数据库
    • 大数据和高并发场景:在处理海量数据(如互联网公司的用户行为数据、日志数据)和高并发访问(如社交网络的动态消息、电商网站的商品浏览记录)的场景中,非关系型数据库的可扩展性和高性能读写能力优势明显。例如,一个大型社交网络平台可以使用键 - 值存储来缓存用户的频繁访问信息,使用文档存储来存储用户的动态和个人资料,以应对庞大的用户群体和频繁的操作。
    • 灵活的数据模型需求场景:当数据结构不固定或者需要频繁变化时,非关系型数据库的灵活性就体现出来了。例如,在一个内容管理系统中,文章、图片、视频等不同类型的内容可以采用文档存储,每种内容的元数据结构可以根据需要灵活调整,而不需要像关系型数据库那样频繁修改表结构。
    • 图形数据处理:对于涉及图形关系的数据,如社交网络中的用户关系、知识图谱中的实体关系等,图形存储数据库能够更有效地进行存储和查询。通过图形查询语言,可以方便地查找节点之间的路径、最短距离等关系相关的信息。

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

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

相关文章

信息科技伦理与道德1:绪论

1 问题描述 1.1 信息科技的进步给人类生活带来的是什么呢? 功能?智能?陪伴?乐趣?幸福? 基于GPT-3的对话Demo DeepFake 深伪技术:通过神经网络技术进行大样本学习,将个人的声音、面…

iOS 11 中的 HEIF 图像格式 - 您需要了解的内容

HEIF,也称为高效图像格式,是iOS 11 之后发布的新图像格式,以能够在不压缩图像质量的情况下以较小尺寸保存照片而闻名。换句话说,HEIF 图像格式可以具有相同或更好的照片质量,同时比 JPEG、PNG、GIF、TIFF 占用更少的设…

windows远程桌面无法连接,报错:“由于没有远程桌面授权服务器可以提供许可证,远程会话被中断。请跟服务器管理员联系”

windows远程桌面无法连接,报错:“由于没有远程桌面授权服务器可以提供许可证,远程会话被中断。请跟服务器管理员联系” 问题描述:解决方法:无法删除条目解决如下:正常激活详见:[RDS远程服务激活…

Tesseract5.4.0自定义LSTM训练

准备jTessBoxEditor,然后配置环境变量。 1、将图片转换成tif格式的,这里需要用画图工具另存为; 2、生成box文件 执行命令: tesseract agv.normal.exp1.tif agv.normal.exp1 -l eng --psm 6 batch.nochop makebox 关于box文件…

Oracle Dataguard(主库为 Oracle 11g 单节点)配置详解(1):Oracle Dataguard 工作原理

Oracle Dataguard(主库为 Oracle 11g 单节点)配置详解(1):Oracle Dataguard 工作原理 目录 Oracle Dataguard(主库为 Oracle 11g 单节点)配置详解(1):Oracle …

Windows系统安装Docker Desktop

文章目录 注意事项安装步骤官网下载软件安装到其它盘符操作(如果就想安装到C盘可以跳过这个步骤, 直接执行文件)等待出现软件安装界面Windows系统的配置软件的一些必要设置(以下设置需要点击apply才能生效,如果点不了,那就是安装后,出现了错误…

从零开始RTSP协议的实时流媒体拉流(pull)的设计与实现(一)

此文为系列文章,此系列主要讲解RTSP客户端的拉流及播放,文章持续更新,会从rtsp的基本协议讲起,如何一步步实现音视频的拉流过程,包括一系列涉及到的协议,rtsp,sdp, rtp(本…

特殊车辆检测数据集VOC+YOLO格式2730张3类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2730 标注数量(xml文件个数):2730 标注数量(txt文件个数):2730 …

LookingGlass使用

背景 Looking Glass 是一款开源应用程序,可以直接使用显卡直通的windows虚拟机。 常见环境是Linux hostwindows guest,基本部署结构图: 编译 git clone --recursive https://github.com/gnif/LookingGlass.git编译client mkdir client/b…

Ceph 手动部署(CentOS9)

#Ceph手动部署、CentOS9、squid版本、数字版本19.2.0 #部署服务:块、对象、文件 一、部署前规划 1、兼容性确认 2、资源规划 节点类型节点名称操作系统CPU/内存硬盘网络组件安装集群节点CephAdm01CentOS94U/8GOS:40G,OSD:2*100GIP1:192.169.0.9(管理&集群),IP2:…

如何优化亚马逊广告以提高ROI?

在竞争激烈的亚马逊市场中,优化广告以提高投资回报率(ROI)是卖家的关键任务。以下是一些实用的策略: 一、精准的关键词研究与选择 深入了解产品特性和目标受众 详细分析产品的功能、用途、优势和适用人群。例如,如果你…

CSS学习记录23

CSS用户界面 CSS调整大小 resize 属性规定元素是否应&#xff08;以及如何&#xff09;被用户调整大小。下例只允许用户调整 <div> 元素的宽度&#xff1a; div {resize: horizontal;overflow: auto; } 下例只允许用户调整 <div> 元素的高度&#xff1a; div {…

Linux菜鸟级常用的基本指令和基础知识

前言:很多Linux初学者都会头疼于指令太多记不住&#xff0c;笔者刚学习Linux时也是如此&#xff0c;学习Linux指令时&#xff0c;学了后面的指令&#xff0c;前面的指令也会忘的差不多了&#xff0c;针对于以上这些情况&#xff0c;笔者今天来分享一篇Linux菜鸟级的常用指令的博…

【数据仓库】hive on Tez配置

hive on Tez 搭建 前提是hive4.0hadoop3.2.2数仓已搭建完成&#xff0c;现在只是更换其执行引擎 为Tez。搭建可参考【数据仓库】hive hadoop数仓搭建实践文章。 Tez 下载 下载地址 https://archive.apache.org/dist/tez/ 官网地址 https://tez.apache.org/releases/apac…

用python编写一个放烟花的小程序

import pygame import random # 代码解释及使用说明&#xff1a; # 首先&#xff0c;导入 pygame 和 random 库。pygame 用于创建游戏窗口和图形绘制&#xff0c;random 用于生成随机数。 # 初始化 pygame&#xff0c;并设置屏幕尺寸为 800x600 像素&#xff0c;设置窗口标题为…

【管道——二分+区间合并】

题目 思路 区间合并 1、按照左端点排序2、遍历窗口&#xff0c;若窗口非法&#xff0c;继续遍历&#xff1b;否则执行33、若是第一个窗口&#xff0c;设定合并结果初值&#xff0c;判断结果左端点是否造成“起点过大”&#xff0c;是&#xff0c;FALSE退出&#xff1b;否则执行…

语雀导入md文件图片丢失

经常被困扰是&#xff0c;从语雀导入md文件&#xff0c;即使知道把md文件和本地图片文件夹打包成zip进行导入&#xff0c;还是出现图片丢失 解决方式1&#xff1a; 把图片和md文件放到同个目录下&#xff0c;重新打包成zip文件&#xff0c;导入后有图片了 解决方式2&#xf…

单片机--51- RAM

1.概览某个51单片机对空间区域的划分&#xff1a; 2.RAM被分配的区域是256bytes&#xff0c; 通常8051单片机ram是128bytes 8052的ram是256bytes&#xff08;其中高128位的地址和sfr区域地址重合&#xff0c;物理区域不同&#xff09; extern uint32_t alarm_cnt_1; uint32…

145页PPT智慧矿山整体规划建设方案

本资料收录在【智慧方案文库】知识星球&#xff08;截止目前共9500份&#xff0c;PPTWORD超过7000份&#xff0c;持续上传中......&#xff09; 68页PPT丨5G智能矿山解决方案 77页PPT智慧矿山整体规划建设方案

NET拓展配置

IP地址的分类 ABC---单播地址 私网IP地址 A&#xff1a;10.0.0.0 -10.255.255.255 /8 B:172.16.0.0-172.31.255.255 /16--16b类网段 C:192.168.0.0-192.168.255.255 -- Ip地址数量不够 所有华为设备和NAT相关的配置都是在边界设备的出接口上配置 静态NAT 因为网络划分…