【数据库】关系型数据库与非关系型数据库解析

news2024/11/15 8:51:45

【数据库】关系型数据库与非关系型数据库解析

文章目录

  • 【数据库】关系型数据库与非关系型数据库解析
    • 1. 介绍
    • 2. 关系型数据库
    • 3. 非关系型数据库
    • 4. 区别
      • 4.1 数据存储方式不同
      • 4.2 扩展方式不同
      • 4.3 对事务性的支持不同
      • 4.4 总结
    • 参考

1. 介绍

一个通俗易懂的比喻:关系型数据库就类似于Excel,非关系型数据库类似于word,用哪一个,取决你想要编辑和处理什么数据。

  • 关系型数据库:将数据存储在表中的数据库,以二维表为数据结构。表和字段类型之间的关系需要明确定义,以SQL语句为操作指令,也称为SQL数据库。主流的关系型数据库包括 Oracle、MySQL、SQL Server、Microsoft Access、DB2 等。
  • 非关系型数据库:不像关系数据库那样使用行和列的表格模式的数据库。相反,它的存储模型是针对它所存储的数据类型进行优化的。不只有使用SQL语句作为操作指令,可以使用其他类型的查询语言,也被称为NoSQL(Not only SQL)数据库, 不需要预先定义关键数据的模式,比SQL数据库更加灵活。主流的 NoSQL 数据库有 Redis、MongBD、Hbase、CouhDB 等。

在这里插入图片描述

2. 关系型数据库

  • 关系型数据库:将数据存储在表中的数据库,以二维表为数据结构。表和字段类型之间的关系需要明确定义,以SQL语句为操作指令,也称为SQL数据库。

常见的关系型数据库:

  • SQLServer:微软公司开发的关系型数据库管理系统。
    • 优点:不开源,它们针对不同的用户提供了具有不同特性的多个版本。拥有丰富的用户界面,可以处理大量数据。
    • 缺点:传统数据库操作频繁容易中断,数据量大负载也大。
  • MySQL:1995年发布。
    • 优点:开源,拥有很多文档和在线支持。
    • 缺点:规模不大,数据量过操作过于频繁时容易中断。
  • PostgreSQL:1996年发布。
    • 优点:开源,基于对象-关系模型的数据库,它不只是关系型数据库,用户可以自己拓展功能。
    • 缺点:拓展功能的操作比较复杂,新手不易上手,不如直接使用非关系型数据库。内含文档不如MySQL多。

3. 非关系型数据库

  • 不像关系数据库那样使用行和列的表格模式的数据库。相反,它的存储模型是针对它所存储的数据类型进行优化的。不只有使用SQL语句作为操作指令,可以使用其他类型的查询语言,也被称为NoSQL(Not only SQL)数据库, 不需要预先定义关键数据的模式,比SQL数据库更加灵活。

NoSQL数据库的常见类型有:

  • 面向文档的数据库(Document-oriented databases ):用于存储、管理、检索文档的信息。可以在海量的数据库中快速查询数据。例如MongoDB、CouchDB
  • 键值存储数据库(Key-Value Stores): 这是一个使用不同键的数据库,其中每个键只与集合中的一个值相关联。把它当作一本字典。NoSQL最简单的数据库类型之一,例如Redis、Tokyo Cabint。
  • 分布式数据库(Wide-Column Stores): 使用表、行和列,但与关系数据库不同,列的名称和格式在同一表中的行与行之间可能不同,弥补了SQL数据库拓展性的缺陷。
  • 图储存数据库(Graph Stores): 使用图结构进行具有节点、边和属性的语义查询,以表示和存储数据。(ongdb、neo4j)

常见的非关系型数据库:

  • MongoDB:是一个文档存储数据库,也是目前使用中最流行的NoSQL数据库引擎。
    • 优点:它使用类似json的文档来存储数据,并支持在多个服务器上运行。MongoDB允许自动分片,这是一种数据库分区,可以将非常大的数据库分割成更小、更快、更容易管理的部分,称为数据分片。容易设置和上手,专业支持也多。
    • 缺点:是他们不允许连接用于根据两个或多个表之间的公共字段组合数据或行。MongoDB确实有一个LOOKUP函数,官方建议用户不要依赖它们。
  • Redis:远程字典服务器是一个键值存储。
    • 优点:它支持不同种类的抽象数据结构,如字符串、列表、映射、集合、排序集合等等。它也是开源的。不仅支持多数据类型,而且易于安装。
    • 缺点:同上,不允许连接用于根据两个或多个表之间的公共字段组合数据或行。并且需要掌握Lua编程语言(一种高级脚本语言)

4. 区别

4.1 数据存储方式不同

关系型和非关系型数据库的最主要的差异是:数据存储的方式

  • 关系型数据天然就是表格式的,因此存储在数据表的行和列中。数据表可以彼此关联协作存储,也很容易提取数据。
  • 与其相反,非关系型数据不适合存储在数据表的行和列中,而是大块组合在一起。非关系型数据通常存储在数据集中,就像文档、键值对或者图结构。你的数据及其特性是选择数据存储和提取方式的首要影响因素。

4.2 扩展方式不同

SQL和NoSQL数据库最大的差别可能是在扩展方式上,要支持日益增长的需求当然要扩展。为了支持更多并发量,

  • SQL数据库是纵向扩展,也就是说提高处理能力,使用速度更快速的计算机,这样处理相同的数据集就更快了。因为数据存储在关系表中,操作的性能瓶颈可能涉及很多个表,这都需要通过提高计算机性能来客服。虽然SQL数据库有很大扩展空间,但最终肯定会达到纵向扩展的上限。
  • 而NoSQL数据库是横向扩展的。因为非关系型数据存储天然就是分布式的,NoSQL数据库的扩展可以通过给资源池添加更多普通的数据库服务器(节点)来分担负载。

4.3 对事务性的支持不同

如果数据操作需要高事务性或者复杂数据查询需要控制执行计划,那么传统的SQL数据库从性能和稳定性方面考虑是你的最佳选择。

  • SQL数据库支持对事务原子性细粒度控制,并且易于回滚事务。
  • 虽然NoSQL数据库也可以使用事务操作,但稳定性方面没法和关系型数据库比较,所以它们真正闪亮的价值是在操作的扩展性和大数据量处理方面。

4.4 总结

总结一下关系数据库和非关系数据库之间的区别:

  • 关系数据库以行和列的方式存储数据,就像电子表格一样,而非关系数据库则不以行和列的方式存储数据,使用最适合它所存储的数据类型的存储模型(四种存储模型之一)。

如何确定你要使用什么数据库:

  • 你要处理的数据在使用行和列来表示更合适就用关系型数据库;更适合储存在一个灵活的空间里就用非关系型数据库。
  • 数据集小/中等,需要进行密集的读/写操作,就用关系型数据库,需要灵活更改数据类型就用非关系型数据库。

参考

【1】https://blog.csdn.net/caicau/article/details/119214130
【2】https://blog.csdn.net/weixin_51468875/article/details/114087402

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

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

相关文章

Xpath介绍以及语法

Xpath介绍 XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。 XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力。 起初XPath的提出的初衷是将其作为一个通用的、介于XPointer与XSL间的语法模…

第8章 模式匹配

第8章 模式匹配 基本概念和用法 模式守卫 package chapter08object Test01_PatternMatchBase {def main(args: Array[String]): Unit {// 1. 基本定义语法val x 5val y x match {case 1 > "one"case 2 > "two"case 3 > "three"ca…

《Reinforcement Learning: An Introduction》第6章笔记

Chapter 6 Temporal-Difference Learning If one had to identify one idea as central and novel to reinforcement learning, it would undoubtedly be temporal-difference (TD) learning. 时序差分学习(temporal-difference (TD) learning)组合了Mon…

PID控制算法 – 0、PID原理

1、开局一张图 很多地方都觉得PID的控制结构示意图是这样的: 2、目标值(Setpoint)、输入值(Input)、误差(Error) 其实把上图那个输入改为目标值(Setpoint)更合适&#…

canvas详解08-基本动画

由于我们是用 JavaScript 去操控 canvas 对象,这样要实现一些交互动画也是相当容易的。在本章中,我们将看看如何做一些基本的动画。 可能最大的限制就是图像一旦绘制出来,它就是一直保持那样了。如果需要移动它,我们不得不对所有东西(包括之前的)进行重绘。重绘是相当费…

CoreMark 跑个分:OrangePi5 RK3588S

一、 Orange Pi 5 简介 Orange Pi 5 采用了瑞芯微 RK3588S 新一代八核 64 位处理器,具体为四核A76四核A55,采用了 8nm 工艺设计,主频最高可达 2.4GHz,集成 ARM Mali-G610 MP4 GPU,内嵌高性能 3D 和 2D 图像加速模块&am…

【python桌面应用设计】tkinter库 01. Tkinter程序设计思想和结构(保姆级代码注释)

目录 实现思路代码实战简单的基础结构示例稍微丰富一点的示例 总结 『python图形化GUI界面设计』分享tkinter库、PyQt5库、wxPython库等相关的新手入门教程,目标是编写python程序时可以给程序一个可视化界面。 欢迎关注 『python桌面应用设计』 系列,持续…

ubuntu18.04安装ORBSLAM2

最近倒腾了一下旧项目,发现之前的环境不知道抽了什么风,直接不能用了,好吧,索性从头装过。 一、第三方库 主要包括Pangolin 、 OpenCV 、 Eigen g2o 与 DBoW2在ORB-SLAM2里面自带可以不需要自己搞 # 更新apt库,更新软件列表 su…

七、c++学习(加餐3:深入分析类和对象(下))

我们把这篇《深入分析类和对象》分为两篇,就是为了简化一下大家学习的压力,现在我们接下来看下一篇。 C学习,b站直播视频 文章目录 7.1 对象操作7.1.1 对象拷贝7.1.1.1 无拷贝赋值运算符7.1.1.2 测试编译器会不会自动生成7.1.1.3 自己写拷贝…

【吃透网络安全】2023软考网络管理员考点网络安全(四)防火墙详解

涉及知识点 什么是防火墙?防火墙的概念及定义,防火墙的优缺点,软考网络管理员常考知识点,软考网络管理员网络安全,网络管理员考点汇总。 后面还有更多续篇希望大家能给个赞哈,这边提供个快捷入口&#xf…

Reactive 环境配置 遇到的问题记录

问题:Watchman: watchman--no-pretty get-sockname returned with exit code 1 ERROR: Unknown option --no-pretty 解决方案:运行ReactNative工程watchman运行错误 解决过程就是,我的watchman 没安装好,于是卸载,重新…

电子电气架构 —— OEM关于DTC具体实现相关见解

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 我们当前遇到的几乎所有的成长问题都可以归结道目光短浅、及时满足的天性上,不过在现代社会,用避难趋易和急于求成来指代他们更贴切。 本文主要讲…

Vivado使用技巧之外部编辑器配置

目录 一、前言 二、编辑器配置 2.1 环境变量添加 2.2 环境变量验证 2.3 Vivado设置 2.4 配置验证 2.5 解决Vivado配置失败问题 一、前言 Vivado自带的默认编辑器功能受限,不如第三方编辑器Eclipse,Notepad,Sublime功能强大。因此&…

Python基础篇(八):文件和os、shutil模块

文件和os、shutil模块 1. 文件1.1 打开文件1.2 写入文件1.3 读取文件内容1.4 关闭文件1.5 异常处理 2. os模块2.1 获取当前工作目录2. 创建目录2.3 重命名文件或目录2.4 删除文件2.5 执行系统命令 3. shutil模块3.1 复制文件3.2 移动文件3.3 复制目录(包括子目录和文…

【Linux】死锁(更新中)

文章目录 一. 什么是死锁二. 死锁产生的四个条件三. 避免死锁1. 死锁检测算法2. 银行家算法 结束语 一. 什么是死锁 死锁是指一组进程中的各个进程均占有不会释放的资源,但因互相申请被其他进程所占用的不会释放的资源,而处于一种永久等待的状态。 就像…

Elasticsearch是什么,如何学习Elasticsearch,整合SpringBoot

目录 一、是什么Elasticsearch 二、Elasticsearch,整合SpringBoot 三、Elasticsearch的优势和应用场景 一、是什么Elasticsearch Elasticsearch是一个开源的搜索引擎,它采用Java语言编写,使用Lucene作为核心搜索引擎,并在其基…

2.文本分析

目录 1. 词频统计--语料库的构建 1. 词频统计–语料库的构建 文本挖掘:将文本信息转换为可利用的知识。通常,对大量文件的归类,一般通过建立不同的文件夹,来保存不同的文章。 同样的,将需要分析的【文本文件】读取到…

Shell - 01_shell的概述

一、shell 概述 1.shell 的两层含义: 既是一种应用程序,又是一种程序设计语言 a.作为应用程序: 交互式地解释、执行用户输入的命令,将用户的操作翻译成机器可以识别的语言,完成相应功能。称之为 shell 命令解析器。shell 是用户和…

机器学习对风险管理的重要性

✏️写作:个人博客,InfoQ,掘金,知乎,CSDN 📧公众号:进击的Matrix 🚫特别声明:原创不易,未经授权不得转载或抄袭,如需转载可联系小编授权。 机器学…

logback-spring.xml详解

本文来写说下logback-spring.xml相关的知识与概念 文章目录 概述configuration元素定义上下文名称定义变量appender组件 概述 对于xml日志文件的配置,大多数人第一次接触时有一种望而生畏的感觉,其实如果仔细分析,会发现核心的部分只有三个元…