当前位置: 首页 > 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…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式&#xff0c;可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误&#xff0c;它们的含义、原因和解决方法都有显著区别。以下是详细对比&#xff1a; 1. HTTP 406 (Not Acceptable) 含义&#xff1a; 客户端请求的内容类型与服务器支持的内容类型不匹…...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台&#xff08;Launchpad&#xff09;多出来了&#xff1a;Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显&#xff0c;都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

基于数字孪生的水厂可视化平台建设:架构与实践

分享大纲&#xff1a; 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年&#xff0c;数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段&#xff0c;基于数字孪生的水厂可视化平台的…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入&#xff0c;一个是通过INMP441麦克风模块采集音频&#xff0c;一个是通过PCM5102A模块播放音频&#xff0c;那如果我们将两者结合起来&#xff0c;将麦克风采集到的音频通过PCM5102A播放&#xff0c;是不是就可以做一个扩音器了呢…...

c#开发AI模型对话

AI模型 前面已经介绍了一般AI模型本地部署&#xff0c;直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型&#xff0c;但是目前国内可能使用不多&#xff0c;至少实践例子很少看见。开发训练模型就不介绍了&am…...

Mac下Android Studio扫描根目录卡死问题记录

环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中&#xff0c;提示一个依赖外部头文件的cpp源文件需要同步&#xff0c;点…...

#Uniapp篇:chrome调试unapp适配

chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器&#xff1a;Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...