当前位置: 首页 > news >正文

数据库技术基础

数据库技术基础

导航

文章目录

  • 数据库技术基础
  • 导航
    • 一、基础概念
      • 数据库系统
      • 数据库管理系统
      • 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

数据挖掘的应用过程

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

相关文章:

数据库技术基础

数据库技术基础 导航 文章目录 数据库技术基础导航一、基础概念数据库系统数据库管理系统DBMS分类数据库技术的发展数据库体系结构 二、数据模型数据模型基本概念 三、数据库的控制功能事务概述SOL中事务定义语句日志文件故障种类两个操作Undo/Redo事务故障的恢复系统故障的恢…...

这些项目,我当初但凡参与一个,现在也不至于还是个程序员

10年前,我刚开始干开发不久,我觉得这真是一个有前景的职业,我觉得我的未来会无限广阔,我觉得再过几年,我一定工资不菲。于是我开始像很多大佬说的那样,开始制定职业规划,并且坚决执行。但过去这…...

ch2应用层--计算机网络期末复习

2.1应用层协议原理 网络应用程序位于应用层 开发网络应用程序: 写出能够在不同的端系统上通过网络彼此通信的程序 2.1.1网络应用程序体系结构分类: 客户机/服务器结构 服务器: 总是打开(always-on)具有固定的、众所周知的IP地址 主机群集常被用于创建强大的虚拟服务器 客…...

Red Hat Enterprise Linux (RHEL) 8.10 发布 - 红帽企业 Linux 8 完美终结版

Red Hat Enterprise Linux (RHEL) 8.10 (x86_64, aarch64) - 红帽企业 Linux 红帽企业 Linux 8 完美终结版 请访问原文链接:Red Hat Enterprise Linux (RHEL) 8.10 (x86_64, aarch64) - 红帽企业 Linux,查看最新版。原创作品,转载请保留出处…...

.NET 直连SAP HANA数据库

前言 上个项目碰到的需求,IT部门要求直连SAP的HANA数据库,以只读的权限读取SAP部门开发的CDS视图,是个有点复杂的工程,需要从成品一直往前追溯到原材料的产地,和交货单、工单、采购订单有相当程度上的关联 IT部门要求…...

HTML <from>表单

定义&#xff1a;<form>元素定义了一个表单&#xff0c;用户可以在表单中输入数据&#xff0c;这些数据可以被提交到服务器。 属性&#xff1a; action&#xff1a;指定表单提交时的目标URL&#xff08;服务器端脚本的地址&#xff09;。 method&#xff1a;定义提交表…...

Wpf 使用 Prism 实战开发Day28

首页汇总方块点击导航功能 点击首页汇总方块的时候&#xff0c;跳转到对应的数据页面 step1: 在IndexViewModel 中&#xff0c;给TaskBar 里面Target 属性&#xff0c;赋上要跳转的页面 step2: 创建导航事件命令和方法实现 step3: 实现导航的逻辑。通过取到 IRegionManager 的…...

如何让一个普通用户可以读写某个目录

循环设置这个目录以及上面每一级目录的读取和执行权限 sudo chmod -R orx /opt/software/yourdir 然后设置指定用户user1可以读写这个目录 sudo setfacl -Rm u:user1:rwx /opt/software/yourdir 读取acl sudo getfacl -R /opt/software/yourdir -R 是循环读取子目录和文件的意思…...

知识笔记——jieba分词初探

1. 简介 jieba 是python中一个非常好用的 中文分词组件&#xff0c;但它并不是只有分词这一个功能&#xff0c;还提供了很多在分词之上的算法&#xff0c;如关键词提取、词性标注等。 安装方式&#xff1a; pip install jieba2. 分词 支持 3 种分词模式&#xff1a;精确模式…...

GPT-4o:人工智能新纪元的开端

引言 近年来&#xff0c;人工智能领域的发展日新月异&#xff0c;特别是在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;各种生成预训练模型不断推陈出新。自OpenAI发布GPT-3以来&#xff0c;生成预训练模型在文本生成、语言理解等任务中展现了强大的能力。近期&a…...

探索AI去衣技术中的反射应用

在当今数字时代&#xff0c;人工智能&#xff08;AI&#xff09;技术的飞速发展已经渗透到了我们生活的方方面面。其中&#xff0c;图像处理和计算机视觉作为AI的重要分支&#xff0c;正不断推动着创新应用的边界。今天&#xff0c;我们要探讨的是一个颇具争议但又技术上颇为有…...

一款高级管理控制面板主题!【送源码】

AdminLTE是一个完全响应的管理模板。基于Bootstrap5框架和JavaScript插件。高度可定制&#xff0c;易于使用。适用于从小型移动设备到大型桌面的多种屏幕分辨率。AdminLTE 是一个基于Bootstrap 3.x的免费高级管理控制面板主题。 https://github.com/almasaeed2010/AdminLTE —…...

​用 ONLYOFFICE 宏帮你自动执行任务:介绍与教程

使用 ONLYOFFICE 宏&#xff0c;可以来自动实现一些操作节省更多时间和精力。在本文中&#xff0c;我们集合了一些关于宏的教程&#xff0c;带您了解宏的工作原理&#xff0c;以及一些实例展示。 什么是 ONLYOFFICE 宏 如果您是一名资深 Microsoft Excel 用户&#xff0c;那么…...

C++ vector类

目录 0.前言 1.vector介绍 2.vector使用 2.1 构造函数(Constructor) 2.1.1. 默认构造函数 (Default Constructor) 2.1.2 填充构造函数 (Fill Constructor) 2.1.3 范围构造函数 (Range Constructor) 2.1.4 拷贝构造函数 (Copy Constructor) 2.2 迭代器(Iterator) 2.2.…...

QMetaObject::invokeMethod 简介

1. QMetaObject::invokeMethod的功能和用途 QMetaObject::invokeMethod是Qt框架中的一个功能强大的方法&#xff0c;它允许你以异步的方式调用QObject派生类的成员函数。这个功能特别有用&#xff0c;因为它允许你安全地在不同的线程之间调用方法&#xff0c;而不需要担心线程…...

2024-05-29 精神分析-孤独感-分析

摘要: 所谓的孤独感是种很笼统的感觉&#xff0c;可能包含了很多种不同的情绪。 比如&#xff0c;希望和他人建立联系&#xff0c;消除敌意&#xff0c;对他人愧疚&#xff0c;想要从他人那里获取关爱或者其他&#xff0c;也可能是感觉到自己的脆弱和无助&#xff0c;希望获得…...

开源与闭源AI模型的对决:数据隐私、商业应用与社区参与

引言 在人工智能&#xff08;AI&#xff09;领域&#xff0c;模型的发展路径主要分为“开源”和“闭源”两条。这两种模型在数据隐私保护、商业应用以及社区参与与合作方面各有优劣&#xff0c;是创业公司、技术巨头和开发者们必须仔细权衡的重要选择。那么&#xff0c;面对这些…...

[C语言]自定义类型详解:结构体、联合体、枚举

目录 &#x1f680;结构体 &#x1f525;结构体类型的声明 &#x1f525;结构的自引用 &#x1f525;结构体变量的定义和初始化 &#x1f525;结构体内存对齐 &#x1f525;结构体传参 &#x1f525;结构体实现位段&#xff08;位段的填充&可移植性&#xff09; &a…...

Vue3使用Composition API实现响应式

title: Vue3使用Composition API实现响应式 date: 2024/5/29 下午8:10:24 updated: 2024/5/29 下午8:10:24 categories: 前端开发 tags: Vue3CompositionRefsReactiveWatchLifecycleDebugging 1. 介绍 Composition API是Vue.js 3中新增的一组API&#xff0c;用于在组件中组…...

使用moquette mqtt发布wss服务

文章目录 概要一、制作的ssl证书二、配置wss小结 概要 moquette是一款不错的开源mqtt中间件&#xff0c;github地址&#xff1a;https://github.com/moquette-io/moquette。我们在发布mqtt服务的同时&#xff0c;是可以提供websocket服务器的&#xff0c;有些场景下需要用到&a…...

【JavaEE】-- HTTP

1. HTTP是什么&#xff1f; HTTP&#xff08;全称为"超文本传输协议"&#xff09;是一种应用非常广泛的应用层协议&#xff0c;HTTP是基于TCP协议的一种应用层协议。 应用层协议&#xff1a;是计算机网络协议栈中最高层的协议&#xff0c;它定义了运行在不同主机上…...

在rocky linux 9.5上在线安装 docker

前面是指南&#xff0c;后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

cf2117E

原题链接&#xff1a;https://codeforces.com/contest/2117/problem/E 题目背景&#xff1a; 给定两个数组a,b&#xff0c;可以执行多次以下操作&#xff1a;选择 i (1 < i < n - 1)&#xff0c;并设置 或&#xff0c;也可以在执行上述操作前执行一次删除任意 和 。求…...

linux 错误码总结

1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

vue3 定时器-定义全局方法 vue+ts

1.创建ts文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息&#xff0c;对客户进行统一管理&#xff0c;可以把所有客户信息录入系统&#xff0c;进行维护和统计功能。可通过文件的方式保存相关录入数据&#xff0c;对…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)

推荐 github 项目:GeminiImageApp(图片生成方向&#xff0c;可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用

文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么&#xff1f;1.1.2 感知机的工作原理 1.2 感知机的简单应用&#xff1a;基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...