数据库技术基础

news/2024/7/22 1:09:24/文章来源:https://blog.csdn.net/weixin_55935366/article/details/139280104

数据库技术基础

导航

文章目录

  • 数据库技术基础
  • 导航
    • 一、基础概念
      • 数据库系统
      • 数据库管理系统
      • DBMS分类
      • 数据库技术的发展
      • 数据库体系结构
    • 二、数据模型
      • 数据模型基本概念
    • 三、数据库的控制功能
      • 事务概述
      • SOL中事务定义语句
      • 日志文件
      • 故障种类
      • 两个操作Undo/Redo
      • 事务故障的恢复
      • 系统故障的恢复
      • 介质故障的恢复
      • 介质故障的恢复需要DBA的介入
      • 封锁
      • 封锁协议
      • 活锁
      • 死锁
    • 四、数据库安全机制
    • 五、数据仓库
      • 数据仓库的数据模式
      • 数据仓库的体系结构
    • 六、数据挖掘
      • 数据挖掘相关技术

一、基础概念

数据库系统

★人员

  • 系统分析员和数据库设计人员
  • 应用程序员
  • 最终用户
  • 数据库管理员

image-20240523103707239

image-20240523173748144

数据库管理系统

功能

  • ★数据定义
  • ★数据操作
  • ★数据库运行管理
  • ★数据组织、存储和管理
  • ★数据库的建立和维护
  • ★其它功能

特征

  • ★数据结构化且统一管理★有较高的数据独立性
  • ★数据控制功能
    • 数据库的安全性
    • 数据库的完整性
    • 并发控制
    • 故障恢复

DBMS分类

  • 关系数据库系统(RDBS):是支持关系模型的数据库系统,借助于集合代数等概念和方法来处理数据库中的数据。
  • 面向对象的数据库系统(OODBS):支持以对象形式进行数据建模的数据库管理系统。
  • 对象关系数据库系统(ORDBS):在传统的关系数据模型基础上,提供元组、数组和集合等更为丰富的数据类型以及处理新的数据类型的能力。

数据库技术的发展

  • 人工管理阶段(20世纪50年代中期以前)
    • 特点:数据量较少;数据不保存;没有软件系统对数据进行管理。
  • 文件系统阶段(20世纪50年代后期至20世纪60年代中期)√
    • 特点:数据长期保存;使用文件系统管理数据;文件结构多样化。
  • 数据库系统阶段(20世纪60年代后期至今)
    • √特点:数据结构化;共享高;冗余低,易扩充;独立性高;由DBMS统一管理和控制。

数据库体系结构

  • 集中式数据库系统(20世纪60年代中期)
    • 硬件结构决定;单用户数据库系统;高性能数据库系统。
  • C/S(客户端/服务器)体系结构
    • 前端客户机系统和后端服务器系统;事务服务器和数据服务器。
  • 并行数据库系统
    • 由多个物理上连在一起的CPU组成,而分布式系统的各个CPU在地理上式分开的。
    • 分为共享内存式多处理器和无共享式并行体系结构。
  • 分布式数据库系统
    • 分布式DBMS包括物理上分布、逻辑上集中的分布式结构和物理上逻辑上都分布的分布式数据库结构两种。

二、数据模型

数据模型基本概念

  • 模型 对现实世界特征的模拟和抽象

  • 数据模型 对现实世界数据特征的抽象

  • 数据模型的三要素 数据结构、数据操作、数据的约束条件

  • 概念数据模型 主要用于数据库设计

    • E-R模型
  • 基本数据模型 用于实现DBMS

    • 层次模型、网状模型、关系模型

image-20240523191225936

实体的属性

  • 简单属性
  • 复合属性
  • 单值属性
  • 多值属性
  • NULL属性
  • 派生属性

image-20240523191650355

image-20240523201816070

扩充的E-R模型

  • 弱实体 实体对于另一些实体具有很强的依赖关系例如:家属总是属于某职工的
  • 特殊化 一个实体集按照某些特征可以区分为几个子实体
    • 例如:学生实体集可以分为研究生、本科生等子集
  • 概括
  • 聚集

超类和子类模型使用特殊化圆圈和连线的一般方法来表示,双竖边矩表示 子类,“U"表示特殊化,圆圈中的"0"表示全特殊化,“D表示不相交特殊化。

层次模型

  • 采用树型结构表示数据与数据间的联系。

网状模型

  • 采用网络结构表示数据与数据间联系。

关系模型

  • 用二维表格结构表达实体集
  • 用外键表示实体间联系的数据模型称为关系模型
  • 关系同网状和层次模型的最大区别
    • 用表中的数据而不是通过指针链来表示和实现实体间的联系

三、数据库的控制功能

事务概述

  • 定义
    • 事务是一系列的数据库操作,是数据库应用程序的基本逻辑单位,即应呈序对数据库的操作都应该以事务的方式执行。
  • 4个特性(ACID)
    • 原子性(Atomicity)
    • 一致性(Consistency)
    • 隔离性(lsolation)
    • 持久性(Durability)

事务状态

  • 5种状态活动状态、部分提交状态、失败状态、提交状态、中止状态
  • 状态转换Begin-Transation、 End-Transation、Commit-Transation、 Abort-Transation

image-20240523203424551

SOL中事务定义语句

  • 事务开始BEGIN TRANSACTION
  • 事务结束END TRANSACTIONR
  • OLLBACK事务回滚 表示事务非成功地结束
  • COMMIT 事务提交 表示事务成功结束

日志文件

有两种格式供数据库系统采用

  • 以记录为单位的日志文件 事务标识、操作类型、操作对象、更新前数据的旧值、更新后数据的新值
  • 以数据块为单位的日志文件 包括事务标识、被更新的数据块
  • 登记日志文件时必须严格按照并发事务执行的时间次序来登记,且先写日志文件后写数据库

故障种类

  1. 事务故障
    • 由于事务程序内部错误而引起的,有些可以预期,如金额不足等;有些不可以预期,如非法输入、运算溢出等(逻辑错误)。
    • 系统进入一种不良状态,导致事务无法继续执行(系统错误)
  2. 系统故障(通常称为软故障)
    • 特定类型的硬件错误、操作系统故障、DBMS代码错误、突然停电等
  3. 介质故障(称为硬件故障)
    • 是指外存故障,例如磁盘损坏、磁头碰撞,瞬时强磁场干扰等

两个操作Undo/Redo

  • Undo
    • 撤销事务(Undo) 使数据库回复到执行前的正确状态将未完成的事务撤销,
  • Redo
    • 重做事务(Redo) 对已经提交的事务重新执行

事务故障的恢复

事务故障的恢复由系统自动完成,对用户是透明的

  1. 步骤1:反向(从后向前)扫描日志文件,查找该事务的更新操作
  2. 步骤2:对该事务的更新操作执行逆操作,也就是将日志记录更新前的值写入数据库
  3. 步骤3:继续反向扫描日志文件,查找该事务的其他更新操作,并作同样处理
  4. 步骤4:如此处理下去,直到读到了此事务的开始标记,事务故障恢复就完成

系统故障的恢复

在系统重启之后自动执行的

  • 正向(从头到尾)扫描日志文件,找出故障发生前已经提交的事务(这些事务既有BEGIN TRANSACTION 记录,也有COMMIT记录),将其事务标识记入重做(REDO)队列。同时找出故障发生时尚未完成的事务(这些事务只有BEGIN TRANSACTION 记录,无相应的COMMIT记录),将其事务标识记入撤销(UNDO)队列
  • 反向扫描日志文件,对每个UNDO事务的更新操作执行逆操作,也就是将日志记录中更新前的值写入数据库。
  • 正向扫描日志文件,对每个REDO事务重新执行日志文件登记的操作,也将是将日志记录中更新后的值写入数据库

介质故障的恢复

需要DBA的介入

  • 装入最新的数据库后备副本,使数据库恢复到最近一次转储时的一致性状态。
  • 转入相应的日志文件副本,重做已完成的事务

介质故障的恢复需要DBA的介入

  • DBA只需要重装最近转储的数据库副本和有关的各日志文件副本
  • 然后执行系统提供的恢复命令
  • 具体的恢复操作仍由DBMS完成

image-20240523205655032

封锁

  1. 排它锁
    • (简称X锁)又称写锁
    • 保证了其他事务在T释放A上的锁之前就不能再读取和修改A
  2. 共享锁
    • (简称S锁)又称读锁
    • 保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改
  3. 封锁的粒度
    • 封锁对象的大小称为封锁的粒度
    • 封锁对象
      • 可以是逻辑单元(如:属性、元组、关系、索引项、整个索引,甚至整个数据库)
      • 可以是物理单元(如:数据页,索引页)

封锁协议

  1. 三级封锁协议
    • 一级封锁协议 解决丢失更新问题
    • 二级封锁协议 解决了读“脏”数据;不能保证可重复读
    • 三级封锁协议 防止丢失修改;不读“脏”数据;防止了不可重复读
  2. 两段封锁协议
    • 保证可串行化
    • 第一阶段是获得封锁
    • 第二阶段是释放封锁

活锁

  • 举个例子来说明活锁的概念,如果事务T1封锁了数据R,事多T2又请求封锁R,于是T2等待。若T3也请求封锁R,当T1释放了R上的锁之后系统首先批准了T3 的请求而T2仍等待。之后T4又请求封锁R,当T3释放了R上的封锁后,系统批准了T4的请求,如此继续下去,T2有可能永远等待,这就形成了活锁
  • 避免活锁的简单方法是采用先来先服务的策略

死锁

  • 举例来说明死锁的概念,如果事务T1封锁了数据R1,T2封锁了数据R2然后T1又请求封锁R2 ,因为T2已经封锁了R2,所以T1等待T2释放R2:接着T2有申请封锁R1,而T1已经封锁了R1,T2则只能等待T1释放R1上的锁。这样就出现了这样的情况,即T1在等待T2,而T2又在等待T1T1和T2两个事务永远不能结束,这就形成了死锁
  • 目前在数据库中解决死锁问题主要有两种方法√
    • 一个是采取一定的措施来预防死锁的发生
    • 另一个是允许发生死锁,并采用一定手段定期诊断系统中是否有死锁,如果发现了死锁则立即解除掉

四、数据库安全机制

用户标识与鉴别

访问控制

  • 自主存取控制
    • 授权
    • 角色
  • 强制存取控制
  • 基于角色的存取控制

视图机制

数据加密

审计

备份/恢复

聚合、推理和多实例

五、数据仓库

改据仓库的基本特性

  • 面向主题的
  • 数据是集成的
  • 数据是相对稳定的
  • 数据是反映历史变化的

image-20240523215651381

数据仓库的数据模式

  1. 星状模式
    • 一个事实表
    • 一级维表
  2. 雪花模式
    • 一个事实表
    • 多级维表
  3. 事实星状模式
    • 不止一个事实表
    • 共享维表

数据仓库的体系结构

  1. 三层体系
    • ·底 层 数据仓库服务器
    • 中间层 OLAP服务器
    • 顶层 前端工具口
  2. 从结构的角度
    • 企业仓库
    • 数据集市
    • 虚拟仓库

数据转移

  • 简单转移
  • 清洗
  • 集成
  • 聚集和概括

多维分析的基本动作

  • 切片
  • 切块
  • 旋转

OLAP 中的基本概念

  • 变量
  • ·维
  • 维的层次
  • 维的成员
  • 多维数组
  • 数据单元

六、数据挖掘

数据挖掘相关技术

  1. 关联分析 Apriori、FP-growth
  2. 序列模式分析 AprioriAll、Apriorisome、GsP
  3. 回归分析
  4. 分类 C4.5、ID3、Logistic回归、朴素贝叶斯
  5. 聚类 K-Means、DBSCAN、EM

数据挖掘的应用过程

  • 确定挖掘对象
  • 准备数据
  • 建立模型
  • 数据挖掘
  • 结果分析
  • 知识应用

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

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

相关文章

黑马es0-1实现自动补全功能

1、安装分词器 上github上找人做好的分词器,放到es-plugin数据卷里,然后重启es即可 2、自定义分词器 elasticsearch中分词器(analyzer)的组成包含三部分: character filters:在tokenizer之前对文本进行处理。例如删除字符、替换字符 …

微信小程序连接阿里云快速入门【物联网】

一、前言 1.1 项目背景 随着5G的逐渐普及,万物互联的浪潮已经席卷而来。在万物互联的场景下,如何实现设备之间的互联互通,成为了一个亟待解决的问题。 微信小程序作为一款轻量级的小程序开发框架,以其简洁的语法和丰富的组件库…

【STM32嵌入式系统设计与开发---传感器拓展】——1_2_蓝牙主从模块_AT配置(HC-05)

一、主机蓝牙设置 # 1、重置模块 ATORGL # 2、设置名字,自己随便设置 ATNAMEMaster # 3、设置连接密码,要和从机一样,密码好像可以不加双引号 ATPSWD"1234" # 4、设置为主机 ROLE 1 为主机 ROLE 0为从机 ATROLE1 # 5、设置波特…

[9] CUDA性能测量与错误处理

CUDA性能测量与错误处理 讨论如何通过CUDA事件来测量它的性能如何通过CUDA代码进行调试 1.测量CUDA程序的性能 1.1 CUDA事件 CPU端的计时器可能无法给出正确的内核执行时间CUDA事件等于是在你的CUDA应用运行的特定时刻被记录的时间戳,通过使用CUDA事件API&#…

SqliSniper:针对HTTP Header的基于时间SQL盲注模糊测试工具

关于SqliSniper SqliSniper是一款基于Python开发的强大工具,该工具旨在检测HTTP请求Header中潜在的基于时间的SQL盲注问题。 该工具支持通过多线程形式快速扫描和识别目标应用程序中的潜在漏洞,可以大幅增强安全评估过程,同时确保了速度和效…

K8s种的service配置

什么是service 官方的解释是:   k8s中最小的管理单元是pod;而service是 将运行在一个或一组 Pod 上的网络应用程序公开为网络服务的方法;   Kubernetes 中 Service 的一个关键目标是让你无需修改现有应用以使用某种服务发现机制。 你可以在 Pod 集合中运行代码…

[C][动态内存分配][柔性数组]详细讲解

目录 1.动态内存函数的介绍1.malloc2.free2.calloc4.realloc 2.常见的动态内存错误3.C/C程序的内存开辟4.柔性数组1.是什么?2.柔性数组的特点3.柔性数组的使用4.柔性数组的优势 1.动态内存函数的介绍 1.malloc 函数原型:void* malloc(size_t size)功能…

流水账(CPU设计实战)——lab3

Lab3 Rewrite V1.0 版本控制 版本描述V0V1.0相对V0变化: 修改了文件名,各阶段以_stage结尾(因为if是关键词,所以module名不能叫if,遂改为if_stage,为了统一命名,将所有module后缀加上_stage&a…

Java | Leetcode Java题解之第118题杨辉三角

题目&#xff1a; 题解&#xff1a; class Solution {public List<List<Integer>> generate(int numRows) {List<List<Integer>> ret new ArrayList<List<Integer>>();for (int i 0; i < numRows; i) {List<Integer> row new…

《探索Stable Diffusion:AI绘画的创意之路与实战秘籍》

《Stable Diffusion AI 绘画从提示词到模型出图》介绍了 Stable Diffusion AI 绘画工具及其使用技巧。书中内容分为两部分&#xff1a;“基础操作篇”&#xff0c;讲解了 SD 文生图、图生图、提示词、模型、ControlNet 插件等核心技术的应用&#xff0c;帮助读者快速从新手成长…

基于C#开发web网页管理系统模板流程-主界面管理员入库和出库功能完善

前言 紧接上篇->基于C#开发web网页管理系统模板流程-主界面管理员录入和编辑功能完善-CSDN博客 本篇将完善主界面的管理员入库和出库功能&#xff0c;同样的&#xff0c;管理员入库和出库的设计套路适用于动态表的录入和编辑 首先还是介绍一下本项目将要实现的功能 &#xf…

【Oracle】PL SQL 怎么重新编译无效的对象

1.打开PL SQL &#xff0c;点击图中有红色的 2.点击齿轮按钮即可 from&#xff1a;【Oracle】PL SQL 怎么重新编译无效的对象_plsql编译无效对象的按钮在哪里-CSDN博客

openresty(Nginx) 隐藏 软包名称及版本号 升级版本

1 访问错误或者异常的URL 2 修改配置&#xff0c;重新编译&#xff0c;升级 #修改版本等 vim ./bundle/nginx-1.13.6/src/core/nginx.h #define nginx_version 1013006 #define NGINX_VERSION "1.13.6" #define NGINX_VER "openresty/&q…

C++线程任务队列模型

功能描述 实现一个任务队列&#xff0c;用于任务的执行 任务队列 任务队列可以添加、删除任务&#xff0c;实现对任务的管理添加任务后&#xff0c;任务队列可以开始执行任务队列执行任务方式为串行执行 任务 任务执行需要持续一段10s内随机的时间&#xff0c;执行过程通过…

如何批量提取pdf文件名?批量提取文件夹里的文件名,只要用对方法!

在数字化时代&#xff0c;PDF文件已经成为我们日常工作中不可或缺的一部分。然而&#xff0c;随着PDF文件数量的不断增加&#xff0c;如何高效地管理这些文件成为了一个挑战。批量提取PDF文件名&#xff0c;就是解决这一问题的关键所在。本文将为你介绍几种实用的方法&#xff…

【小呆的力学笔记】连续介质力学的知识点回顾二:应变度量

文章目录 3. 格林应变与阿尔曼西应变 3. 格林应变与阿尔曼西应变 变形体在变形前的线元 O A → \overrightarrow{OA} OA &#xff0c;在变形后变成 o a → \overrightarrow{oa} oa &#xff0c;那么应变应该度量这种线元变形前后的差别。 ∣ o a → ∣ 2 − ∣ O A → ∣ 2 …

【Qt秘籍】[004]-Qt中的重要工具-介绍

QtCreator概览 当我们打开系统的菜单翻到刚刚下载的Qt文件&#xff0c;里面的内容却让我们眼花缭乱。 不过别急&#xff0c;下面我们将一一解析。 1.Assistant Qt自带的离线版本官方文档 2.Designer Qt图形化设计界面的工具&#xff0c;通过拖拽控件快速生成界面&#xff0c…

SpirngMVC框架学习笔记(一):SpringMVC基本介绍

1 SpringMVC 特点&概述 SpringMVC 从易用性&#xff0c;效率上 比曾经流行的 Struts2 更好 SpringMVC 是 WEB 层框架&#xff0c;接管了 Web 层组件, 比如控制器, 视图, 视图解析, 返回给用户的数据格式, 同时支持 MVC 的开发模式/开发架构SpringMVC 通过注解&#xff0c;…

【DrissionPage爬虫库 1】两种模式分别爬取Gitee开源项目

文章目录 DrissionPage爬虫库简介1. 浏览器操控模式&#xff08;类似于游戏中的后台模拟鼠标键盘&#xff09;2. 数据包收发模式&#xff08;类似于游戏中的协议封包&#xff09; 实战中学习需求&#xff1a;爬取Gitee开源项目的标题与描述解决方案1&#xff1a;用数据包方式获…

[机缘参悟-191] - 《道家-水木然人间清醒1》读书笔记 -14- 关系界限 - 经济和人格上的独立,走向成熟的必经之路,才能更好的谈其他情感(IT)

目录 前言&#xff1a; 1、“友善的孤独者” 2、“外向的孤独者” 3、道不同不相为谋 4、警惕依赖 5、完整独立的个体 6、不必纠正他人的错误&#xff0c;除非他影响了你 7、不再期待别人能理解自己&#xff0c;只有高维向下兼容你的人才能理解你 8、只有高维和同频的…