【数据库】 数据库的理论基础详解

news2024/11/25 20:15:44

目录

 

一, 什么是数据库

二, 数据库管理系统(DBMS)

 三,数据库与文件系统的区别

1,对比区别:

2,优缺点总结:

四,数据库的发展史

五,常见数据库

1, 关系型数据库

2, 非关系型数据库

六,DBMS支持的数据模型

1,层次模型

2,网状模型

3,关系模型

七,MySQL简介

1,MySQL的特性

2,MySQL体系结构


一, 什么是数据库

数据: 描述事物的符号记录, 可以是数字、 文字、图形、图像、声音、语言等,数据

           有多种形式,它们都可以经过数字化后存入计算机。

数据库: 存储数据的仓库,是长期存放在计算机内、有组织、可共享的大量数据的集合。数据库中的数据按照一定数据模型组织、描述和存储,具有较小的冗余度,较高的独立性和易扩展性,并为各种用户共享,总结为以下几点:

(1)数据结构化

(2)数据的共享性高,冗余度低,易扩充

(3)数据独立性高

(4)数据由 DBMS 统一管理和控制(安全性、完整性、并发控制、故障恢复)

二, 数据库管理系统(DBMS)

数据库系统成熟的标志就是数据库管理系统的出现。数据库管理系统(DataBase ManagermentSystem,简称DBMS)是管理数据库的一个软件,它充当所有数据的知识库,并对它的存储、安全、一致性、并发操作、恢复和访问负责。是对数据库的一种完整和统一的管理和控制机制。数据库管理系统不仅让我们能够实现对数据的快速检索和维护,还为数据的安全性、完整性、并发控制和数据恢复提供了保证。数据库管理系统的核心是一个用来存储大量数据的数据库。

DBMS是所有数据的知识库,并对数据的存储、安全、一致性、并发操作、恢复和访问负责。

DBMS有一个数据字典(有时被称为系统表),用于贮存它拥有的每个事物的相关信息,例如名字、结构、位置和类型,这种关于数据的数据也被称为元数据(metadata)。

 三,数据库与文件系统的区别

文件系统: 文件系统是操作系统用于明确存储设备(常见的是磁盘)或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。

数据库系统: 数据库管理系统(Database Management System)是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称 DBMS。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。

1,对比区别:

1.  管理对象不同: 文件系统的管理对象是文件,并非直接对数据进行管理,不同的数据结构需要使用不同的文件类型进行保存(举例: txt 文件和 doc 文件不能通过修改文件名完成转换) ;而数据库直接对数据进行存储和管理。

2.  存储方式不同:文件系统使用不同的文件将数据分类(.doc/.mp4/.jpg) 保存在外部存储上;数据库系统使用标准统一的数据类型进行数据保存(字母、 数字、符号、时间)。

3.  调用数据的方式不同:文件系统使用不同的软件打开不同类型的文件;数据库系统由 DBMS 统一调用和管理。

2,优缺点总结:

(1) 由于 DBMS 的存在,用户不再需要了解数据存储和其他实现的细节,直接通过 DBMS 就能获取数据,为数据的使用带来极大便利。

(2)具有以数据为单位的共享性,具有数据的并发访问能力。 DBMS 保证了在并发访问时数据的一致性。

(3)低延时访问,典型例子就是线下支付系统的应用,支付规模巨大的时候,数据库系统的表现远远优于文件系统。

(4) 能够较为频繁的对数据进行修改,在需要频繁修改数据的场景下,数据库系统可以依赖 DBMS 来对数据进行操作且对性能的消耗相比文件系统比较小。

(5)对事务的支持。 DBMS 支持事务,即一系列对数据的操作集合要么都完成, 要么都不完成。在DBMS上对数据的各种操作都是原子级的。

四,数据库的发展史

初始阶段-----人工管理:人力手工整理存储数据

萌芽阶段-----文件系统:使用磁盘文件来存储数据

初级阶段-----第一代数据库:出现了网状模型、层次模型的数据库

中级阶段-----第二代数据库:关系型数据库和结构化查询语言

高级阶段------新一代数据库:NOSQL型数据库

五,常见数据库

 1, 关系型数据库

关系数据库是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。 简单说,关系型数据库是由多张能互相联接的二维行列表格组成的数据库。

关系模型就是指二维表格模型, 因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。当前主流的关系型数据库有Oracle、DB2、Microsoft SQL Server、MicrosoftAccess、MySQL、浪潮K-DB 、武汉达梦、南大通用、人大金仓等。

实体关系模型简称 E-R 模型,是一套数据库的设计工具,他运用真实世界中事物与关系的观念,来解释数据库中的抽象的数据架构。实体关系模型利用图形的方式(实体-关系图)来表示数据库的概念设计,有助于设计过程中的构思及沟通讨论。

2, 非关系型数据库

非关系型数据库: 又被称为 NoSQL(Not Only SQL ),意为不仅仅是 SQL, 是一种轻量、开源、不兼容 SQL 功能的数据库, 对 NoSQL 最普遍的定义是“非关联型的”,强调 Key-Value 存储和文档数据库的优点,而不是单纯地反对 RDBMS(关系型数据库管理系统)。

六,DBMS支持的数据模型

 

1,层次模型

若用图来表示,层次模型是一棵倒立的树。在数据库中,满足一下条件的数据模型称为层次模型:

  • 有且仅有一个节点无父节点,这个节点称为根节点
  • 其他节点有且仅有一个父节点。桌面型的关系模型数据库

 

 

2,网状模型

在现实世界中,事物之间的联系更多的是非层次关系的,用层次模型表示非树型结构是很不直接的,网状模型则可以克服这一弊病。网状模型是一个网络。在数据库中,满足以下两个条件的数据模型称为网状模型。A.允许一个以上的节点无父节点;B.一个节点可以有多于一个的父节点。

从以上定义看出,网状模型构成了比层次结构复杂的网状结构,适宜表示多对多的联系。

 

3,关系模型

以二维表的形式表示实体和实体之间联系的数据模型称为关系数据模型。从模型的三要素角度看,关系模型的内容为:

数据结构:一张二维表格。

数据操作:数据表的定义、检索、维护、计算等。

数据约束条件:表中列的取值范围即域值的限制条件。

 

概念模型:基于客户的想法和观点所形成的认识和抽象。

实体(Entity):客观存在的、可以被描述的事物。例如员工、部门。

属性(Attribute):用于描述实体所具有的特征或特性。如使用编号、姓名、工资等属性来描述员工的特征。

 

关系(Relationship):实体之间的联系。

一对一: 人 和 身份证

一对多: 班级 和 学生

多对多: 学生 和 课程

 

数据模型:也叫关系模型,是实体、属性、关系在数据库中的具体体现。

关系数据库:用于存储各种类型数据的”仓库”,是二维表的集合。

表:实体的映射

行和列:行代表一个具体的实体的数据。也叫一条记录。列是属性的映射,用于描述实体的。

主键和外键。

七,MySQL简介

MySQL是一个小型关系数据库管理系统,开发者为瑞典MySQL AB公司。在2008年1月16号被sun公司10亿美金收购。2009年,SUN又被Oracle以74亿美金收购。

目前MySQL被广泛地应用在Internet上的中小型网站中。由于体积小、速度快、总体拥有成本低,尤其是开放源代码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。

 

1,MySQL的特性

  1. 使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性。
  2. 支持AIX、BSDi、FreeBSD、HP-UX、Linux、Mac OS、Novell Netware、NetBSD、OpenBSD、 OS/2 Wrap、Solaris、SunOS、Windows等多种操作系统。
  3. 为多种编程语言提供了API。这些编程语言包括C、C++、C#、Delphi、Eiffel、Java、Perl、PHP、 Python、Ruby和Tcl等。
  4. 支持多线程,充分利用CPU资源,支持多用户。
  5. 优化的SQL查询算法,有效地提高查询速度。
  6. 既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的 软件中。
  7. 提供多语言支持,常见的编码如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数 据列名。
  8. 提供TCP/IP、ODBC和JDBC等多种数据库连接途径。
  9. 提供用于管理、检查、优化数据库操作的管理工具。
  10. 可以处理拥有上千万条记录的大型数据库。

 

2,MySQL体系结构

Mysql是由SQL接口,解析器,优化器,缓存,存储引擎组成的。

Connectors指的是不同语言中与SQL的交互。

Management Serveices & Utilities: 系统管理和控制工具。

Connection Pool:连接池。管理缓冲用户连接,线程处理等需要缓存的需求。

SQL Interface:SQL接口,接受用户的SQL命令,并且返回用户需要查询的结果。比如select from就是调 用SQL Interface。

Parser: 解析器。SQL命令传递到解析器的时候会被解析器验证和解析。

Optimizer:查询优化器。SQL语句在查询之前会使用查询优化器对查询进行优化。

Cache和Buffer: 查询缓存。如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数 据。

Engine:存储引擎。存储引擎是MySql中具体的与文件打交道的子系统。

-- 查看最大连接数

showvariableslike'%max_connections%';

# 查询缓存配置情况

showvariableslike'%query_cache%';

一条SQL语句执行流程:

连接层

 (1)提供连接协议:TCP/IP 、SOCKET

 (2)提供验证:用户、密码,IP,SOCKET

 (3)提供专用连接线程:接收用户SQL,返回结果

 通过以下语句可以查看到连接线程基本情况

 mysql> show processlist;

SQL层

  (1)接收上层传送的SQL语句

  (2)语法验证模块:验证语句语法,是否满足SQL_MODE

  (3)语义检查:判断SQL语句的类型

   DDL :数据定义语言

   DCL :数据控制语言

   DML :数据操作语言

   DQL: 数据查询语言

   ...

  (4)权限检查:用户对库表有没有权限

  (5)解析器:对语句执行前,进行预处理,生成解析树(执行计划),说白了就是生成多种执行方案.

  (6)优化器:根据解析器得出的多种执行计划,进行判断,选择最优的执行计划

     代价模型:资源(CPU IO MEM)的耗损评估性能好坏

  (7)执行器:根据最优执行计划,执行SQL语句,产生执行结果

 执行结果:在磁盘的xxxx位置上

  (8)提供查询缓存(默认是没开启的),会使用redis tair替代查询缓存功能

  (9)提供日志记录(日志管理章节):binlog,默认是没开启的。

存储引擎层(类似于Linux中的文件系统)

    负责根据SQL层执行的结果,从磁盘上拿数据。

    将16进制的磁盘数据,交由SQL结构化化成表,

    连接层的专用线程返回给用户。

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

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

相关文章

vue directive 注册局部指令

注册局部指令 vue directive 在注册局部指令时,是通过在组件 options 选项中设置 directives 属性。如下: directives: {focus: {// 指令的定义inserted: function (el) {el.focus()}} }在模板中的任何元素上都可以使用新的 v-focus property&#xff…

前端登录状态验证Session和Token的区别

(1)Session客户端发送一个登录请求,服务器验证登录数据无误,会生成一个sessionID,此ID对应的值即登录状态为已登录。服务器有一个key-value映射表,会把这个ID和登录状态存到此表中。服务器返回的响应头的se…

好用的iPhone 数据恢复软件精选

随着 Apple 的 iTunes / iCloud 备份服务的兴起,我们总是假设这些信息在我们需要的时候可以随时访问。然而,事实是,意想不到的“不幸”发生了,比如 iOS 升级失败、忘记密码,或者更严重的情况,如进水或被盗。…

Ansible的脚本------playbook剧本

一、剧本的前置知识点1、主机清单ansible默认的主机清单是/etc/ansible/hosts文件主机清单可以手动设置,也可以通过Dynamic Inventory动态生成一般主机名使用FQDNvi /etc/ansible/hosts [webserver] #使用方括号设置组名 www1.example.org #定…

想要精通算法和SQL的成长之路 - 接雨水

想要精通算法和SQL的成长之路 - 接雨水前言一. 接雨水前言 想要精通算法和SQL的成长之路 - 系列导航 一. 接雨水 原题链接 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 输入:height [0,…

【RabbitMQ】注册成功后的通知操作

目录前提说明代码实现1. 依赖2. 配置类3. 生产方创建测试类,目的:查看是否队列交换机创建成功,且在队列里面是否有一条待消费的信息。4. 消费方最后前提说明 背景条件:主要是自己学完了RabbitMQ后,想自己多去动手实践…

基于SSM的教务管理系统设计与实现

技术:Java、JSP等摘要:伴随着数字化、网络化、信息化发展的社会,越来越多的行业与时俱进融入到了互联网中,而高校作为为了一个更是培养各色人才之地,更是拥有大量的高科技人才,因此也更应该运用科技来完善教…

单片机开发---ESP32S3移植NES模拟器(二)

书接上文 《单片机开发—ESP32-S3模块上手》 《单片机开发—ESP32S3移植lvgl触摸屏》 《单片机开发—ESP32S3移植NES模拟器(一)》 暖场视频,小时候称这个为—超级曲线射门!!!!!&am…

Linux 安装jenkins和jdk11

Linux 安装jenkins和jdk111. Install Jdk112. Jenkins Install2.1 Install Jenkins2.2 Start2.3 Error3.Awakening1.1 Big Data -- Postgres4. Awakening1. Install Jdk11 安装jdk11 sudo yum install fontconfig java-11-openjdk 2. Jenkins Install 2.1 Install Jenkins 下…

八、Linux文件 - 文件IO与标准IO的区别

目录 1.Linux标准文件描述符 2.缓存的概念 1.Linux标准文件描述符 文件描述符缩写描述0STDIO标准输入1STDOUT标准输出2STDERR标准错误输出文件IO:是直接调用内核提供的系统调用函数,头文件时unistd.h标准IO:是间接调用系统调用函数&#x…

C语言经典编程题100例(21-40)

21、练习3-2 计算符号函数的值对于任一整数n,符号函数sign(n)的定义如下:请编写程序计算该函数对任一输入整数的值。输入格式:输入在一行中给出整数n。输出格式:在一行中按照格式“sign(n) 函数值”输出该整数n对应的函数值。输入样例1:10输出样例1:sig…

LeetCode刷题系列 -- 54. 螺旋矩阵

给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。示例 1:输入:matrix [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]示例 2:输入:matrix [[1,2,3,4],[…

Nextcloud通过不被信任的域名访问解决方法 Nextcloud 您正在访问来自不信任域名的服务器

windows电脑在网页端输入“http://192.168.xxx.xxx:8080/login”访问远程ubuntu18.04服务器,访问其docker镜像的Nextcloud,提示“”Nextcloud通过不被信任的域名访问解决方法 Nextcloud 您正在访问来自不信任域名的服务器“”,如下图&#xf…

Jetpack Compose中的绘制流程和自定义布局

Jetpack Compose中绘制流程的三个阶段 与大多数其他界面工具包一样,Compose 会通过几个不同的“阶段”来渲染帧。如果我们观察一下 Android View 系统,就会发现它有 3 个主要阶段:测量、布局和绘制。Compose 和它非常相似,但开头…

2023年java面试题之kafka(5道)

一. kafka介绍: 1.消息分类按不同类别,分成不同的Topic,Topic⼜拆分成多个partition,每个partition均衡分散到不同的服务器(提⾼并发访问的能⼒) 2.消费者按顺序从partition中读取,不⽀持随机读取数据,但可通过改变保存到zookeeper中的offset位置实现从任意位置开…

golang 优雅关闭服务

文章目录一、什么是优雅关闭服务二、使用函数三、使用案例一、什么是优雅关闭服务 先把在执行的任务执行完成,再关闭服务,防止中断服务造成程序错误,数据异常等影响。 二、使用函数 语法: Shutdown(ctx context.Context) error作…

深度学习之循环神经网络(RNN)实现股票预测

深度学习训练营之循环神经网络(RNN)实现股票预测原文链接环境介绍前置工作设置GPU数据加载划分数据集模型训练数据预处理归一化对样本进行构建构建模型激活模型对模型进行训练结果可视化预测模型评估原文链接 🍨 本文为🔗365天深度…

【Python案例实战】爬虫能做哪些很酷很有趣很有用的事情?爱了爱了,简直是神仙代码~(淘宝秒杀、VIP视频解析、wiwi破解等)

前言 🚀 作者 :“程序员梨子” 🚀 **文章简介 **:本篇文章主要是写了opencv的人脸检测、猫脸检测小程序。 🚀 **文章源码免费获取 : 为了感谢每一个关注我的小可爱💓每篇文章的项目源码都是无 偿…

Spring Cloud组件

1.服务治理 Spring Cloud Eureka 概念 Eureka提供了服务端组件,我们也称为注册中心。每个服务都向Eureka的服务注册中心,登记自己提供服务的元数据,包括服务的ip地址、端口号、版本号、通信协议等。 原理 服务注册中心,还会以心跳…

【DOCKER】容器概念基础

文章目录1.容器1.概念2.特点3.与虚拟机的对比2.docker1.概念2.命名空间3.核心概念3.命令1.镜像命令2.仓库命令1.容器 1.概念 1.不同的运行环境,底层架构是不同的,这就会导致测试环境运行好好的应用,到了生产环境就会出现bug(就像…