【系统架构设计】数据库系统(二)

数据库系统(二)

  • 数据库模式与范式
  • 数据库设计
    • 数据库设计的方法
    • 数据库设计的基本步骤
  • 事务管理
    • 并发控制
    • 故障和恢复
  • 备份与恢复
  • 分布式数据库系统
  • 数据仓库
  • 数据挖掘
  • NoSQL
  • 大数据

数据库模式与范式

数据库设计

数据库设计的方法

目前已有的数据库设计方法可分为四类:直观设计法、规范设计法、计算机辅助设计法和自动化设计法。其中,基于3NF的数据库设计方法,其具体设计步骤分为5个阶段,如图3-2所示。

在这里插入图片描述

数据库设计的基本步骤

分步设计法遵循自顶向下、逐步求精的原则,将数据库设计过程分解为若干相互独立又相互依存的阶段,每一阶段采用不同的技术与工具,解决不同的问题,从而将问题局部化,减少了局部问题对整体设计的影响。在分步设计法 中,通常把数据库的设计分为需求分析、概念结构设计、逻辑结构设计和数据库物理设计 4个阶段,如图3-3所示。

在这里插入图片描述

  1. 需求分析:指收集和分析用户对系统的信息需求和处理需求,得到设计系统所必需的需求信息,建立系统说明文档。其目标是通过调查研究,了解用户的数据要求和处理要求,并按一定格式整理形成需求说明书。该阶段的任务是
  • 确认需求、确定设计目标
  • 分析和收集数据
  • 整理文档
  1. 概念结构设计:其目标是对需求说明书提供的所有数据和处理要求进行抽象与综合处理,按一定的方法构造反映用户环境的数据及其相互联系的概念模型,即用户的数据模型或企业数据模型这种概念数据模型与DBMS无关,是面向现实世界的、极易为用户所理解的数据模型。概念模型的描述工具应该能够体现概念模型的特点,如E-R模型。概念结构的设计策略主要有自底向上、自顶向下、由里向外和混合策略
  2. 逻辑结构设计:设计目标是把上一阶段得到的与DBMS无关的概念数据模型转换成等价的,并为某个特定的DBMS所接受的逻辑模型所表示的概念模型,同时将概念设计阶段得到的应用视图转换成外部模式,即特定DBMS下的应用视图。该阶段的结果是用DBMS所提供的数据定义语言(DDL)写成的数据模式
  3. 数据库物理设计:任务是将逻辑设计阶段得到的满足用户需求的已确定的逻辑模型在物理上加以实现,其主要内容是根据DBMS提供的各种手段,设计数据的存储形式和存取路径,如文件结构、索引设计等,即设计数据库的内模式或存储模式。

ps: 概念设计可以理解为E-R的实物图,逻辑结构设计就涉及到了具体的表格设计,物理设计就是最底层的怎么去存储提高性能。

事务管理

数据库系统运行的基本工作单位是事务,相当于操作系统中的进程,是用户定义的一个数据库操作序列,这些操作序列要么全做要么全不做,是一个不可分割的工作单位。事务具体以下特性:

  1. 原子性(Atomicity ):数据库的逻辑工作单位;
  2. 一致性(Consistency):使数据库从一个一致性状态变成另一个一致性状态;
  3. 隔离性(Isolation):不能被其他事务干扰;
  4. 持续性(永久性)(Durability):一旦提交,改变就是永久性的。

事务提交语句: 表示事务执行成功的结束;
事务回退语句:表示事务执行不成功的结束。

并发控制

在多用户共享系统中,许多事务可能同时对同一数据进行操作,称为“并发操作",此时数据库管理系统DBMS的并发控制子系统负责协调并发事务的执行,保证数据库的完整性不受破坏,同时避免用户得到不正确的数据。并发操作带来的问题有:丢失更新问题、不一致分析问题(读过时的数据)、依赖于未提交更新的问题(读了”脏“数据)。这三个问题需要DBMS 的并发控制子系统解决,主要方法是采用封锁技术,它有2种类型:

  • 排他型封锁(简称 X封锁):如果事务T 对数据A 实现X封锁,那么只允许T 读取和修改数据A,其他事务要等T解除X封锁后,才能对数据A实现任何类型的封锁。即只允许一个事务独锁和使用数据
  • 共享型封锁(简称 S封锁):如果事务T 对数据A 实现S封锁,那么允许T读取数据A ,但不能修改数据A ,在所有S封锁解锁前,绝不允许任何事务对数据A 实现X封锁。即可以允许并发读,但不允许修改

ps:脏数据是指没有经过预处理而直接接收到的原始数据,或者不符合特定分析要求的数据。

在多个事务并发执行的系统中,主要采用封锁协议来进行处理:

  • 一级封锁协议:事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。该协议可以防止丢失修改,并保证事务T是可恢复的,但不能保证可重复读和不读脏数据。
  • 二级封锁协议:一级封锁协议加上事务T在读取数据R之前先对其加S锁,读完后即可释放S锁。该协议可以防止丢失修改,防止读脏数据,但不能保证可重复读。
  • 三级封锁协议:一级封锁协议加上事务T在读取数据R之前先对其加S锁,直到事务结束才释放。该协议可以防止丢失修改,防止读脏数据,保证可重复读。
  • 两段锁协议:所有事务必须分2个阶段对数据项加锁和解锁,其中扩展阶段是在对任何数据进行读写操作之前,首先要申请并获得该数据的封锁;收缩阶段是在释放一个封锁之后,事务不能再申请和获得任何其他封锁。若并发执行的所有事务均遵守两段封锁协议,则对这些事务的任何并发调度策略都是可串行化的。但遵守两段锁协议的事务可能发生死锁,而死锁是不可避免的,目前采用** 预防法** 和死锁的解除法来进行处理。。

可串行化调度是指多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行地执行它们时的结果相同。这种调度策略确保了数据库的一致性和正确性,避免了数据不一致的情况,如丢失修改、读“脏”数据和不可重复读等。
封锁是指事务T在对某个数据对象(例如表、记录等)操作之前,先向系统发出请求,对其加锁。加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其它的事务不能更新此数据对象。

封锁的粒度 是被封锁数据目标的大小。封锁粒度小则并发性高,但开销大;封锁粒度大则并发性低,但开销小

故障和恢复

数据库的故障可用事务的故障来表示,主要有4种:

  1. 事务故障:事务在运行过程中由于种种原因,如输入数据的错误、运算溢出、违反了某些完整性限制、某些应用程序的错误,以及并发事务发生死锁等,使事务未运行至正常终止点就被撤销。
  2. 系统故障:是指系统在运行过程中,由于某些原因(如操作系统或数据库管理系统代码错误、操作员操作失误、特定类型的硬件错误(如CPU故障)、突然停电等造成系统停止运行),致使事务在执行过程中以非正常方式终止,这时内存中的信息丢失,但存储在外存上的数据不会受影响
  3. 介质故障:系统在运行过程中,由于某种硬件故障,如磁盘损坏、磁头碰撞或由于操作系统的某种潜在的错误、瞬时强磁场干扰,使存储在外存上的数据部分损失或全部损失
  4. 计算机病毒:是一种人为破坏计算机正常工作的特殊程序。

分别对应的故障恢复,最常用的恢复方式是** 转储和登记日志文件**,可根据故障的不同类型,采用不同的恢复策略。

  1. 事务故障的恢复,由系统自动完成,不用用户干预,步骤如下:
  • 反向扫描文件日志,查找该事务的更新操作;
  • 对该事务的更新操作执行逆操作;
  • 继续反向扫描日志文件,查找该事务的其他更新操作,并做同样处理;
  • 如此处理下去,直至读到此事务的开始标记,事务故障恢复完成。
  1. 系统故障的恢复,系统故障发生时,造成数据库不一致状态原因有2个:一是由于一些未完成事务对数据库的更新已写入数据库;二是由于一些已提交事务对数据库的更新还留在缓冲区没来得及写入数据库。系统故障的恢复是在重新启动时自动完成,不需要用户干预,步骤如下:
  • 正向扫描日志文件,找到在故障发生前已经提交的事务,将其事务标识记入重做(Redo)队列,同时找出故障发生时尚未完成的事务,将其事务标识记入撤销(Undo)队列;
  • 对撤销队列中的各个事务进行撤销处理:反向扫描日志文件,对每个Undo事务的更新操作执行逆操作;
  • 对重做队列中的各个事务进行重做处理:正向扫描日志文件,对每个Redo事务重新执行日志文件登记的操作。

ps:可以理解成:故障发生前事务结束,放在缓冲区的更新操作,恢复目的是要执行完;故障发生时事务进行中,恢复目的是要回退。

  1. 介质故障与病毒破坏的恢复,此时磁盘上的物理数据库被破坏了,步骤如下:
  • 装入最新的数据库后备副本,使数据库恢复到最近一次转储时的一致性状态;
  • 从故障点开始反向读日志文件,找出已提交事务标识将其记入重做队列;
  • 从起始点开始正向阅读日志文件,根据重做队列中的记录,重做所有已完成事务,将数据库恢复至故障前某一时刻的一致状态。

备份与恢复

备份与恢复计划制定要遵循2个原则:

  • 保证数据丢失的情况尽量少或者完整不丢失;
  • 备份和恢复时间尽量短,保证系统最大的可用性。

数据库备份按照不同方式可以分为多种,按照** 备份内容** 分为物理备份 和** 逻辑备份**

  1. 物理备份是在操作系统层面对数据库的数据文件进行备份,分为冷备份和热备份
  • 冷备份:将数据库正常关闭,在停止状态下利用操作系统的命令将数据库文件全部备份下来,当数据库发生故障时,将数据文件复制回去,进行恢复。
  • 热备份分2种,一种是不关闭数据库,将数据库中需要备份的数据文件依次置于备份状态相对保持静止,然后再利用操作系统的命令将数据库文件备份下来,备份完毕后再将数据文件恢复为正常状态,当数据库发生故障时,恢复方法同冷备份;另一种是利用备份软件(如ServHA),在数据库正常运行状态下,将数据库中数据文件备份出来。

为提高物理备份效率,通常将完全、增量、累积三种备份方式相组合。

ps:累积备份是将自上次完全或累积备份以来所有修改过的数据备份;增量备份是只备份修改的数据。

  1. 逻辑备份是指利用各数据库系统自带的工具软件备份和恢复数据库的内容

分布式数据库系统

数据仓库

数据挖掘

NoSQL

大数据

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

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

相关文章

ti-iwr6843isk的level_sensing上位机开发

1.入门推荐视频 https://www.ixigua.com/home/558167761108780/?list_entrancesearch 2.关于TI官方实验的一些思考 1.仅使用,而不涉及开发的话,可以直接烧录mmwave_industrial_toolbox_**文件夹中各个实验的二进制驱动文件。 2.除了烧录驱动&#xf…

jenkins 插件版本冲突

一、Jenkins安装git parameter 插件重启后报错与临时解决方案 cd /root/.jenkins cp config.xml config.xml.bak vim config.xml <authorizationStrategy class"hudson.security.FullControlOnceLoggedInAuthorizationStrategy"><denyAnonymousReadAcces…

Step-DPO 论文——数学大语言模型理解

论文题目&#xff1a;STEP-DPO: STEP-WISE PREFERENCE OPTIMIZATION FOR LONG-CHAIN REASONING OF LLMS 翻译为中文就是&#xff1a;“LLMs长链推理的逐步偏好优化” 论文由港中文贾佳亚团队推出&#xff0c;基于推理步骤的大模型优化策略&#xff0c;能够像老师教学生一样优…

深入理解计算机系统 CSAPP 家庭作业10.9

if (Fork() 0) {dup2(STDIN_FILENO, atoi(argv[1]));Execve("fstatcheck", argv, envp); }

vue使用了代理跨域,部署上线,使用Nginx配置出现问题,访问不到后端接口

1、如果路由的mode是history模式的要加上框框里的哪句&#xff0c;然后配置下面的location router location / {root /usr/local/app/dist/; #vue文件dist的完整路径try_files $uri $uri/ router;index index.html index.htm;}#error_page 500 502 503 504 /50x.html;lo…

Alpine Linux 轻量级Linux 适合于 docker 容器镜像

Alpine Linux是创始于2010年4月及以前的、一款开源社区开发的、基于musl libc和BusyBox的轻量级Linux发行版&#xff1b;适合用来做路由器、防火墙、VPNs、VoIP 盒子以及服务器的操作系统。 Alpine 的意思是“高山的”。Alpine Linux 围绕 musl libc 和 busybox 构建。这使得它…

GaussianPro使用笔记

1. 介绍 GaussianPro: 3D Gaussian Splatting with Progressive Propagation 3D高斯分布(3DGS)最近以其高保真度和效率彻底改变了神经渲染领域。然而&#xff0c;3DGS在很大程度上依赖于运动结构&#xff08;SfM&#xff09;技术生成的初始化点云。当处理不可避免地包含无纹理…

顺序表<数据结构 C版>

目录 线性表 顺序表 动态顺序表类型 初始化 销毁 打印 检查空间是否充足&#xff08;扩容&#xff09; 尾部插入 头部插入 尾部删除 头部删除 指定位置插入 指定位置删除 查找数据 线性表 线性表是n个相同特性的数据元素组成的有限序列&#xff0c;其是一种广泛运…

算法 101 对称二叉树(Python)

需求 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 示例 1&#xff1a; 输入&#xff1a;root [1,2,2,3,4,4,3] 输出&#xff1a;true 示例 2&#xff1a; 输入&#xff1a;root [1,2,2,null,3,null,3] 输出&#xff1a;false 输出 class TreeNode:de…

Richtek立锜科技线性稳压器 (LDO) 选型

一、什么是LDO? LDO也可称为低压差线性稳压器&#xff0c;适合从较高的输入电压转换成较低输出电压的应用&#xff0c;这种应用的功率消耗通常不是很大&#xff0c;尤其适用于要求低杂讯、低电流和输入、输出电压差很小的应用环境。 二、LDO的特性 LDO透过控制线性区调整管…

C++ Eigen - 使用旋转矩阵,实现两个传感器之间的坐标变换(仅平移)

文章目录 1. 需求描述2. 需求分析3. 理论基础(来源于本人:实践中测试)4. 代码实现 1. 需求描述 设有三个坐标系&#xff1a;1系&#xff0c;m系&#xff0c;2系&#xff1b; 其中在1系下有坐标P’(1, 1, 0). 求该坐标在2系下的坐标值 P"&#xff1f; 手工分析肯定是&…

C/C++蓝屏整人代码

文章目录 &#x1f4d2;程序效果 &#x1f4d2;具体步骤 1.隐藏任务栏 2.调整cmd窗口大小 3.调整cmd窗口屏幕颜色 4.完整代码 &#x1f4d2;代码详解 &#x1f680;欢迎互三&#x1f449;&#xff1a;程序猿方梓燚 &#x1f48e;&#x1f48e; &#x1f680;关注博主&a…

【西安活动邀请函】7月27 | PowerData 数字经济-“西安“开源行!

活动介绍 古有“长安回望绣成堆&#xff0c;山顶千门次第开”&#xff0c;西安&#xff0c;这座拥有深厚历史文化底蕴的古都&#xff0c;自古以来便是国家的重要战略中心。在漫长的历史进程中&#xff0c;西安不仅孕育了辉煌的文化&#xff0c;更在现代化进程中展现出了蓬勃的…

算法力扣刷题记录 五十一【654.最大二叉树】

前言 二叉树篇&#xff0c;继续。 记录 五十一【654.最大二叉树】 一、题目阅读 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点&#xff0c;其值为 nums 中的最大值。递归地在最大值 左边 的 子数组前缀上 构建左子树。…

分享5款免费在线ps网页版工具,在线ps图片编辑器

在线PS&#xff0c;即在线Photoshop&#xff0c;是一种无需下载和安装即可在浏览器中使用的图片处理工具。这类工具通常提供与桌面版Photoshop相似的功能&#xff0c;包括但不限于图像编辑、调整、美化等。小编为大家收集整理了5款免费在线PS网页版工具&#xff0c;方便有需要的…

如何利用windows本机调用Linux服务器,以及如何调用jupyter界面远程操控

其实这篇文章没必要存在&#xff0c;教程太多了 参考博客&#xff08;1 2 3&#xff09;&#xff0c;如侵删 奈何网上的大神总是会漏掉一些凡人遇到的小问题 &#xff08;1&#xff09; 建议下载PuTTy for windows&#xff0c;从而建立与远程服务器的SSH连接 需要确认目标服…

实验六:频域图像增强方法

一、实验目的 熟练掌握频域滤波增强的各类滤波器的原理及实现。分析不同用途的滤波器对频域滤波增强效果的影响,并分析不同的滤波器截止频率对频域滤波增强效果的影响。二、实验原理 ① Butterworth 低通滤波器:一种具有最大平坦通带幅度响应的滤波器。它的特点是在通带内具…

JAVA面向对象03

基本类型的包装类 拆包–>封包 拆包–>包装类型转换基本数据类型 封包—>基本数据类型转换包装类型 编号基本数据类型包装类型1byteByte2shortShort3charCharacter4intInteger5longLonLong6floatFloat7doubleDouble8booleanBoolean 使用包装类型的原因 java是一…

【JDK切换】切换JDK版本

众所周知&#xff1a; 现在springboot框架创建的jdk版本已经没有1.8了&#xff0c;但是有的项目运用的还是1.8&#xff0c;但新创建却不得不下载个新版本JDK&#xff0c;比如JDK22&#xff1a;https://download.csdn.net/download/sh1307212321/89556578 那么问题来了&#x…

DC系列靶场---DC 2靶场的渗透测试(一)

信息收集 Nmap扫描 nmap -sV -p- -sC -T4 172.30.1.141 域名解析 echo 172.30.1.141 dc-2 >> /etc/hosts 目录枚举 gobuster dir -u http://172.30.1.141 -w work/lab/CTF/ATT_CK_01/SecLists-master/Discovery/Web-Content/big.txt -x .php,.rar,.html,.zip -t 20 -b…