SQL基础理论篇(二):什么是DBMS / DB / DBS

文章目录

  • 简介
  • DB、DBS和DBMS的区别
  • 当前的主流DBMS
  • SQL与NoSQL
  • 主流的RDBMS
  • 参考文献

简介

日常工作中,我们通常是跟DBMS这些数据库管理软件打交道,而SQL只是它们的通用语言而已。

DB、DBS和DBMS的区别

DBMS,全称是DataBase Management System,数据库管理系统,实际上它可以对多个数据库进行管理,所以可以理解成 DBMS = 多个数据库(DB) + 管理程序。

DB,全称是DataBase,就是数据库。数据库是数据存储的集合,可以理解成就是多个数据表,或者说一堆数据表的集合就是DB。

DBS,全称是DataBase System,即数据库系统。它是更大的概念,包含了数据库、数据库管理系统,以及数据库管理人员DBA等。

RDBMS,全称是Relational DataBase Management System,即关系型数据库管理系统,是DBMS中的一个大的分类,如MySQL、Oracle等。

这里需要注意,虽然我们平时把MySQL、Oracle等称为是数据库,但严谨来讲,它们应该是DBMS,即数据库管理系统

当前的主流DBMS

了解了什么是DBMS之后,我们可以看下当前主流的DBMS有哪些。

可以从DB-Engines每月公布的DBMS排名来一探究竟,排名主要依据这些DBMS在搜索引擎上的热度等,类似编程语言排行榜TIEBO。下面是我截取的2023年10月份的前二十名的排名:

在这里插入图片描述

其中,Relational表示关系型数据库,Document表示文档型数据库,Key-value表示键值型数据库,Search engine表示搜索引擎式,Wide column表示列存式数据库。

从排名上能看到,关系型数据库管理系统(以下按照日常习惯,简称为关系型数据库)是DBMS的绝对主流。

关系型数据库,就是建立在关系模型上的数据库,而SQL就是关系型数据库上的查询语言。

NoSQL泛指非关系型数据库,即除了关系型数据库以外的其他类型数据库,包括了上面说的文档型数据库、键值型数据库、搜索引擎和列存式数据库,除此之外还包括图形数据库。

注意,NoSQL数据库一般是使用自己的查询语言或者API来检索数据,但并非是完全不能用SQL查询,只是不使用传统的SQL查询语言来查询。如MongoDB,就支持类似于SQL的查询语言,通过类似SQL的功能来检索和操作数据。

键值型数据库,通过key-value键值对来存储数据。其中,key是查找每条数据地址的唯一关键字,而值则是该数据实际存储的内容,其可以是简单对象,也可以是复合复杂对象。

由于key作为唯一的标识符,所以查询速度极快。但是缺点也很明显,比如说无法存储结构化信息,同时也无法进行多值查询(即不支持where条件,因为它只能通过key来查询),如果一定要查询值的话,只能通过遍历所有key的方式,通过消耗大量的计算来获取需要的值,这无疑是很低效的。

键值型数据库的典型应用场景式作为内容缓存,其中的代表就是Redis。

文档型数据库,则是以文档的形式存储数据,即将文档作为数据的基本单位,一个文档就相当于一条记录,即类比关系型数据库中的一行。

每个文档都是一个键值对的集合,类似JSON格式。这类数据库的典型代表就是MongoDB,这种文档型存储方式,允许数据库存储和查询具有复杂结构的半结构化数据,这一点,是传统数据库所无法比拟的。

搜索引擎,是数据库检索中的重要应用。常见的全文搜索引擎有Elasticsearch、Splunk和Solr。虽然关系型数据库采用了索引提升检索效率,但是针对全文索引效率却较低。搜索引擎的优势在于采用了全文搜索的技术,核心原理是"倒排索引"。

列式数据库是相对于行式存储的数据库。列式数据库是将数据按照列存储到数据库中,相比传统的行式数据库,列式数据库可以大幅度降低系统的IO,适合于分布式文件系统,但功能相对有限。

怎么理解这里的"大幅度降低系统的IO呢?"

因为列式数据库是按列存储的,而每列的数据格式是相同的,所以在存储时,就可以使用更加高效的压缩算法对列进行压缩存储。另外,在读取时,可以只读取需要的列到内存中,而不是像行式数据库那样,将全部行数据都读取到内存汇总。

图形数据库,利用图这种数据结构来存储实体之间的关系。最典型的应用实例就是社交网络中人与人的关系。数据模型主要是以节点(代表实体)和边(代表实体间的关系)来实现,特点在于能够高效的解决复杂的关系问题。

SQL与NoSQL

NoSQL包含的分类很多,其包含除了关系型数据库以外的其他类型数据库,比如说上面说的文档型数据库、键值型数据库、搜索引擎和列存式数据库,除此之外还包括图形数据库。

由于SQL一直称霸DBMS,因此很多人开始思考是否有一种数据库技术能够脱离SQL,这就是NoSQL诞生的原因。但是随着发展,大家发现还是SQL更香,于是越来越多的NoSQL的DBMS开始实现类似SQL的功能。从NoSQL在不同时期的释义,可以看出NoSQL功能的演化:

1970 NoSQL = We have no SQL
1980 NoSQL = Know SQL
2000:NoSQL = No SQL!
2005:NoSQL = Not only SQL
2013:NoSQL = No, SQL!

NoSQL更像是对SQL的扩充,虽然它可能没法像SQL那样应用的更加广泛,但是在某些单一领域里,NoSQL表现的比SQL更胜一筹。

主流的RDBMS

TOP3的主流DBMS:Oracle、MySQL和SQL Server。(同时也是RDBMS)这三家顶流的市场份额远超其他DBMS。

1979年,Oracle 2诞生,这是第一个商用的RDBMS,后来被卖给了军方。随着Oracle软件的名气越来越大,公司也直接改名叫做Oracle了。20 世纪 90 年代,Oracle 的创始人埃里森成为继比尔·盖茨之后第二富有的人

MySQL是1995年诞生的开源数据库管理系统,因其免费开源的特性,得到了广泛的关注和使用,是开源数据库当之无愧的NO.1。MySQL在2008年时被SUN公司收购,而2010年SUN公司被Oracle公司收购,于是Oracle公司现在同时掌握了Oracle数据库和MySQL数据库的管理权,属实是数据库领域的绝对领导者。

但是在Oracle收购MySQL的时候,MySQL的创造者担心MySQL有闭源的风险,因此创建了MySQL的分支项目MariaDB。MariaDB在绝大部分的情况下都是与MySQL兼容的,并且额外增加了很多新特性,比如说支持更多的存储引擎。许多企业也从原来的MySQL转移到MariaDB。

从第二小节的图里我们也能看到MariaDB的排名也不低,第13名。

SQL Server是微软开发的商用DBMS,诞生于1989年。但其实微软还有一款轻量级的桌面数据库Access,其同时具备后台存储和前台界面开发的功能,很适合小型的应用场景。了解下就行了。

虽然SQL语言是通用的,但是为了满足不同的使用场景和要求,如何选择自己合适的DBMS是有讲究的。比如说Oracle更适合大型跨国企业的使用,因为他们对费用不敏感,但是对性能要求和安全性要求很高。而MySQL更受互联网公司,尤其是早期初创公司的青睐。

针对市场上那么多DBMS的百花齐放,其实可以理解成是单一的数据库并不能满足所有的市场需求最终诞生了不同的 DBMS,同时为了降低用户更换软件的成本(方便争抢用户)都遵循了 SQL 的标准。

参考文献

  1. 02丨DBMS的前世今生

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

外汇天眼:如何摆脱交易困境?这个比赛告诉你答案!

在现今的金融市场中,外汇交易因其高杠杆、24小时交易等特点吸引着众多投资者。然而,外汇交易并非易事,它需要精准的分析、及时的决策和良好的风险管理。许多新手投资者在涉足外汇市场时都会遇到各种困境,譬如缺乏实践经验、心理压…

流量分析(信息安全铁人三项赛分区赛2-5.18)

题目描述 目录 题目描述 黑客的IP是多少 服务器1.99的web服务器使用的CMS及其版本号(请直接复制) 服务器拿到的webshell的网址(请输入url解码后的网址) 服务器1.99的主机名 网站根目录的绝对路径(注意最后加斜杠) 黑客上传的第一个文件名称是什么 黑客进行内网扫描&am…

【文章学习系列之模型】DAGMM

本章内容 文章概况模型结构损失函数实验结果实验分析总结 文章概况 《Deep Autoencoding Gaussian Mixture Model for Unsupervised Anomaly Detection》是2018年发表于ICLR的一篇论文,该论文提出一种端到端的无监督异常检测方法DAGMM,取得了不错的效果…

Sentinel底层原理(下)

1、概述 Sentinel的核心原理,也就是前面提到暗流涌动的SphU.entry(…)这行代码背后的逻辑。 Sentinel会为每个资源创建一个处理链条,就是一个责任链,第一次访问这个资源的时候创建,之后就一直复用,所以这个处理链条每…

C#几种截取字符串的方法

在C#编程中,经常需要对字符串进行截取操作,即从一个长字符串中获取所需的部分信息。本文将介绍几种常用的C#字符串截取方法,并提供相应的示例代码。 目录 1. 使用Substring方法2. 使用Split方法3. 使用Substring和IndexOf方法4. 使用Regex类…

【PTQ】Cross-Layer Equalization跨层均衡-证明和实践详细解读

Cross-Layer Equalization跨层均衡 aimet解读 符合规则的模型结构 统一要求:单数据流,中间激活不流向其他地方概念说明: Conv: gruoups1的普通卷积,包括TransposedConv和ConvDepthwiseConv: 深度可分离卷积,groupsi…

青少年编程学习 等级考试 信奥赛NOI/蓝桥杯/NOC/GESP等比赛资料合集

一、博主愚见 在当今信息技术高速发展的时代,编程已经成为了一种必备的技能。随着社会对于科技人才的需求不断增加,青少年编程学习正逐渐成为一种趋势。为了更好地帮助青少年学习编程,提升他们的技能和素质,博主结合自身多年从事青…

C++:map和set的封装原理

文章目录 红黑树的封装map和set的封装红黑树迭代器的实现operator 和 -- 的实现的实现过程 迭代器的其他模块 整体实现 本篇写于红黑树模拟实现后,对map和set进行封装,模拟实现map和set内部的原理 首先,map和set的底层逻辑是红黑树&#xf…

idea生成代码(一):实现java语言的增删改查功能(基于EasyCode插件)支持自定义模板【非常简单】

idea生成代码(一):实现java语言的增删改查功能(基于EasyCode插件)支持自定义模板【非常简单】 idea生成代码(二):实现java语言的增删改查功能(基于mybatis-plus代码生成器…

centralwidget 不能布局

必须要在QT ui中添加一个任意的子控件(比如添加了一个pushButton),然后在centralwidget 才能右键设置布局,成功去掉centralwidget 右下角的红色的标记。

视频直播点播平台EasyDSS无法删除分组,如何解决?

EasyDSS视频推拉流平台可支持用户自行上传视频文件,也可将上传的点播文件作为虚拟直播进行播放。平台能支持多屏播放,可兼容Windows、Android、iOS、Mac等操作系统,还能支持CDN转推,具备较强的可拓展性与灵活性。 有用户反馈&…

Facebook账号运营技巧

Facebook作为全球知名的社交媒体平台之一,坐拥着庞大的用户群体,吸引大量的跨境电商加入,那么肯定就会有少部分的卖家对于Facebook账号运营不是很了解,下面小编将讲一下Facebook账号运营的一些小技巧。 1、明确目标受众 首先需要明…

STM32F103C8 PC13端口无输出原因

如果开启了RTC功能,就要注意PC13端口的设置。要把RTC OUT 由“Disable”改成“No RTC Output”,才行。

创新旗舰X100:手机周期大考下,vivo的“满分答案”

对于智能手机行业来说,今年是触底反弹,逆转上扬的一年。 利好在于,科技与经济双周期拐点已经到来。在当前消费结构升级的关键阶段,随着经济持续恢复向好,国内总的消费趋势正稳步向上。 一直以来,智能手机…

IP-guard flexpaper远程命令执行漏洞复现 [附POC]

文章目录 IP-guard flexpaper RCE漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 0x06 修复建议 IP-guard flexpaper RCE漏洞复现 [附POC] 0x01 前言 免责声明:请勿利用文章内的相关技术从事非法测…

Center Smoothing Certified Robustness for Networks with Structured Outputs

文章目录 Center Smoothing: Certified Robustness for Networks with Structured OutputsSummaryResearch ObjectiveProblem StatementMethodsEvaluationConclusionNotesGaussian Smoothing常用希腊字母霍夫丁不等式(Hoeffdings inequality)1.简述2.霍夫…

关于dinput8.dll丢失的问题,提供六种解决办法

不知dinput8.dll文件大家是否有所了解,或者你的电脑中是否出现过关于dinput8.dll文件丢失问题。如果你的电脑中出现了关于dinput8.dll丢失的问题,那么这篇文章给大家提供六种解决dinput8.dll丢失的办法。希望能够帮助大家解决dinput8.dll丢失。 一.dinpu…

今日最新版早安问候大全,创意好看的早上好祝福图片带字温馨

1、阳光照,鸟欢叫,小懒猪,起床了,伸懒腰,笑一笑,深呼吸,精神好,开心到,欢乐抱,幸福随,乐淘淘,好运伴,祝福来,每…

STM32H750之FreeRTOS学习--------(六)FreeRTOS的列表和列表项

六、FreeRTOS的列表和列表项 文章目录 六、FreeRTOS的列表和列表项列表相关结构体列表项相关结构体迷你列表项列表相关API函数介绍初始化列表vListInitialise()函数vListInitialiseItem()函数vListInsert()函数 vListInsertEnd()函数 uxListRemove() 列表就是一个双向链表&…