软考:中级软件设计师:数据库恢复与备份,故障与恢复,反规范化
软考:中级软件设计师:数据库恢复与备份
提示:系列被面试官问的问题,我自己当时不会,所以下来自己复盘一下,认真学习和总结,以应对未来更多的可能性
关于互联网大厂的笔试面试,都是需要细心准备的
(1)自己的科研经历,科研内容,学习的相关领域知识,要熟悉熟透了
(2)自己的实习经历,做了什么内容,学习的领域知识,要熟悉熟透了
(3)除了科研,实习之外,平时自己关注的前沿知识,也不要落下,仔细了解,面试官很在乎你是否喜欢追进新科技,跟进创新概念和技术
(4)准备数据结构与算法,有笔试的大厂,第一关就是手撕代码做算法题
面试中,实际上,你准备数据结构与算法时以备不时之需,有足够的信心面对面试官可能问的算法题,很多情况下你的科研经历和实习经历足够跟面试官聊了,就不需要考你算法了。但很多大厂就会面试问你算法题,因此不论为了笔试面试,数据结构与算法必须熟悉熟透了
秋招提前批好多大厂不考笔试,直接面试,能否免笔试去面试,那就看你简历实力有多强了。
(5)考网警的大佬,务必把软考:中级软件设计师的内容学好学透,学广,学多
文章目录
- 软考:中级软件设计师:数据库恢复与备份
- @[TOC](文章目录)
- 软考:中级软件设计师:数据库恢复与备份
- 数据库的故障,与恢复
- 基于日志的恢复机制
- 逆规范化技术
- 总结
文章目录
- 软考:中级软件设计师:数据库恢复与备份
- @[TOC](文章目录)
- 软考:中级软件设计师:数据库恢复与备份
- 数据库的故障,与恢复
- 基于日志的恢复机制
- 逆规范化技术
- 总结
软考:中级软件设计师:数据库恢复与备份
很重要,2022网警就考了

具体操作是重点。

完全备份之后变化的数据——差量备份
要回
要恢复,全部走一遍
不管完全,还是差量,之后变化的数据——增量备份

恢复只看前一天

日志文件,记录了我们操作的过程
一旦故障出现,我们再看日志,把操作规范
数据库的故障,与恢复

2022网警考试中就问你外存被破坏了,请你恢复数据库
爆炸,当时就不会玩
我现在查一波
1.识别 / 定位故障
之一步是找到故障源。数据库介质故障可能有很多种不同的情况,
包括但不限于硬盘故障,内存错误或软件故障等。
当确定了故障源后,就可以采取相应的应对措施进行逐步处理。
2.备份和恢复
如果有完整的备份,则可以使用备份数据库来重新构建数据库。
备份可以是完整的备份,增量备份或差异备份。
使用备份进行恢复时,需要确保备份是最近的可用备份,并考虑到备份的完整性和一致性。
此外,需要验证备份是否可以成功恢复,以及检查备份中丢失了多少数据,然后考虑如何处理这些缺失的数据。
3.尝试修复介质
如果介质故障是硬件问题,则可以尝试对其进行修复,以便可以使用硬件设备继续访问介质。
在这种情况下,可能需要考虑更换故障设备。
通常情况下,管理员会使用工具程序,如 CHKDISK 等来检查硬盘,以了解硬盘的健康状况。
如果发现硬盘有问题,则可以使用硬盘工具来修复它,如 Spinrite 等。
4.数据库恢复
如果数据库中出现故障,可以尝试使用磁盘工具,如 DBCC (SQL Server 数据库),
来修复数据库和表之间的一致性错误和引用损坏。
此外,还可以考虑将数据移动到新的磁盘上,以便及时修复引起问题的磁盘。
在数据库存在转储文件的情况下,可能还可以考虑使用转储文件来手动恢复数据库。
5.数据库恢复 / 校验工具
在尝试恢复时,可能使用特定的数据库恢复或校验工具来帮助找到丢失或损坏的数据并尝试恢复它们。这些工具可以是开源的或专有的,因此,选择适合自己环境和情况的工具是必不可少的。
例如,TestDisk 是一种流行的开源工具,可以帮助找回丢失的文件系统和分区,并修复损坏的分区表和引导记录。
通过识别和定位故障源,备份和恢复,尝试修复介质,数据库恢复,和使用特定的数据库恢复 / 校验工具,
可以从数据库介质故障中进行恢复。
当数据库发生故障时,采取快速,恰当的补救措施,将有助于保护所存储的数据,减少数据损失,
并避免在恢复过程中出现更大的问题。
同时,也需要注意预防这些故障发生,以确保数据库始终处于更佳状态。
这些当年我都没有打出来,分低,名字不够被刷了,可惜
基于日志的恢复机制
常用的三种日志类型
undo 日志
redo 日志
undo/redo 日志
undo 日志及其恢复机制
日志文件更新数据的日志记录格式:
<T, op, x, v>:
op: 更新操作类型
x: 被更新的数据对象
v: x更新前的取值 (原值)
2.1 创建 undo 日志记录的规则
数据元素更新时,先把日志记录写入磁盘,后把更新数据写入磁盘。提交事务前,则先把所有更新数据写入磁盘,后立即把 记录写入磁盘。
写日志 => 更新数据 => commit
2**.2 undo 日志的动态检查及其使用**
① 设置检查点的规则:
在某些事务开始时,写日志记录 <START CRPT(T1,…,TK)>,并刷新日志记录。
等待事务的提交或终止,在此期间可以有其它是事务 Tj 开始;
当 T1,…,TK 提交或终止后,写 End CKPT<T1,TK>,并刷新日志。
在这里插入图片描述
eg:
② 利用检查点恢复数据库策略:
(1) 从故障点起,逆向扫描日志文件,以便确定故障发生时没有完成的事务。
若逆向扫描过程中,首先遇到 , 则没有完成的事务T,必定没有相应的 记录,且最早位于下列区间

若逆向扫描过程中,首先遇到 <START CKPT(T1,…Tk)>,则未完成的事务 Tj 没有相应的 记录,且最早位于下列区间:

redo 日志及其恢复机制
3.1 日志文件更新数据的日志记录格式:
<T, op, x, w>:
op: 更新操作类型
x: 被更新的数据对象
w: x更新后的取值 (新值)
3.2 创建 REDO 日志记录的规则
数据更新时,先把所有记载数据更新的日志记录和 记录写入磁盘,后才把更新数据写入磁盘(先写日志,后写数据)。
3.3 恢复原则:重做已经提交的事务。
3.4 利用 redo 日志进行恢复
写日志记录 <STATRT CKPT(Tj,…,Tk)>,并刷新日志记录;
将写 <START CKPT(Tj,…,Tk)> 日志记录时,缓冲区中所有已经提交,但未写入磁盘的数据库更新操作,完成写盘操作。
写入 日志记录,并刷新日志记录。

(2) 利用 REDO 日志恢复数据库类型
从故障点起,逆向扫描日志,以确定回复故障时需要重做的已提交事务:
若逆向扫描过程中,首先遇到 , 则需要重做的事务时 Tr ∈ ({Tj} ∪ {T1,…,Tk}),且 Tr 必须是存在 记录的事务

若逆向扫描过程中,首先遇到 <START CKPT(Ti)>,则应继续扫描,直到另一 <START CKPT(Ts)> 为止(它必有对应的 ).则需要重做的事务时 Tr ∈ ({Tj} ∪ {T1,…,Tk}),且 Tr 必须是存在 记录的事务

7. redo 和 undo 区别
Undo日志记录某数据被修改前的值,可以用来在事务失败时进行rollback;
Redo日志记录某数据块被修改后的值,可以用来恢复未写入data file的已成功事务更新的数据。
undo:
写盘顺序:数据元素更新时,先把日志写入磁盘,后把更新的数据写入磁盘。提交事务前,先把所有更新数据写入磁盘,后立即把 写入磁盘。
恢复原则: 进行恢复时,从后向前扫描日志,遇到有 commit 的事务忽略,没有 commit 的事务将对数据库的更新进行撤销。
设置检查点规则:事务开始时,写日志记录 <START CKPT(T1,…,Tk)>,并刷新记录 (FLUSH LOG); 等待事务提交或终止;当 T1,…,Tk 提交或终止后,写 <END CKPT(T1,…,Tk)>,并刷新日志。
redo:
写盘顺序: 数据元素更新时,先把更新的日志记录和 写入磁盘;后才把更新数据写入磁盘。(先写日志,后写数据)
恢复原则: 重做已经提交的事务。
设置检查点规则:写日志 <START CKPT(T1,…,Tk)>,并刷新日志记录;将写 <START CKPT(T1,…,Tk)> 时,缓冲区中所有已经提交但未写入磁盘的数据库更新操作,完成写盘操作;写入 日志记录,并刷新纪录。(数据先更新,然后设置检查点,结束检查点,数据提交到磁盘)
基于 undo/redo 日志的恢复机制
<T, op, x, v, w>:
op: 更新操作类型
x: 被更新的数据对象
v: x更新前的取值 (原值)
w: x更新后的取值 (新值)
3.1 创建 undo/redo 日志记录的规则:
数据元素更新时,先把数据更新日志记录写入磁盘。 记录可以在磁盘上数据库元素的修改之前或之后。
3.2 恢复原则:重做已经提交的事务,撤销没有做完的事务。
3.3 设置检查点规则:
写入 START CKPT(T1,…,Tk),并刷新日志记录;
把所有缓冲区的更新数据写入磁盘;
写入 END CKPT,并刷新日志记录;
3.4 恢复策略:
故障点起逆向扫描,确定需要重做和撤销的事务;
重做 COMMIT 的事务,逆向撤销没有 COMMIT 的事务;
逆规范化技术
物极必反

表太多,慢慢连接,贼慢
增加冗余链,就是逆向规范化
为了方便,就直接搞一个派生冗余,增加总额,以空间换时间
加成绩表,直接看人的乘积,性别和课程放进去,反正实用才行。
组表要 考虑查询速度快。
方便
直接明了‘’
总结
提示:重要经验:
1)
2)
3)笔试求AC,可以不考虑空间复杂度,但是面试既要考虑时间复杂度最优,也要考虑空间复杂度最优。
相关文章:
软考:中级软件设计师:数据库恢复与备份,故障与恢复,反规范化
软考:中级软件设计师:数据库恢复与备份 提示:系列被面试官问的问题,我自己当时不会,所以下来自己复盘一下,认真学习和总结,以应对未来更多的可能性 关于互联网大厂的笔试面试,都是需要细心准备…...
Unbutu系统-Docker安装、JDK环境配置,Docker常用指令、Docker安装MySQL、Redis、Tomcat、Nginx,前端后分离项目部署
目录 1、防火墙 1.1、查看防火墙状态 1.2、开启防火墙 1.3、关闭防火墙 1.4、重启防火墙 1.5、查看防火墙版本 2、安装JDK 2.1、官网下载tar包 2.3、解压tar.gz文件 2.4、配置环境变量 2.4.1、查看安装路径 2.4.2、设置环境变量 2.4.3、执行该让环境变量生效 2.4…...
Python绘图系统10:在父组件中使用子组件的函数
文章目录 Combobox绑定事件互相调用源代码 Python绘图系统: 📈从0开始实现一个三维绘图系统自定义控件:坐标设置控件📉坐标列表控件📉支持多组数据的绘图系统图表类型和风格:散点图和条形图📊混…...
【Linux的成长史】Linux的发展史
🎬 博客主页:博主链接 🎥 本文由 M malloc 原创,首发于 CSDN🙉 🎄 学习专栏推荐:LeetCode刷题集 数据库专栏 初阶数据结构 🏅 欢迎点赞 👍 收藏 ⭐留言 📝 如…...
OLED透明屏是什么?什么叫做OLED透明屏的原屏?
OLED透明屏是一种新型的显示技术,具有高对比度、高亮度和能耗低等优势,正被越来越广泛地应用于各个领域中。 在OLED透明屏中,原屏是至关重要的元件之一。本文将深入探讨OLED透明屏原屏的意义、制造过程、品质要求、应用案例和发展趋势&#…...
Redis 持久化的手段有哪些 ?RDB 和 AOF 有什么区别 ?
目录 1. Redis 持久化的手段有哪些 2. RDB 和 AOF 有什么区别 2.1 RDB 持久化 2.2 AOF 持久化 2.2.1 AOF 持久化策略有哪些 3. 混合持久化是如何执行的(了解) 1. Redis 持久化的手段有哪些 Redis 持久化的手段有三种: 快照方式&#…...
【Vue】vue2预览显示quill富文本内容,vue-quill-editor回显页面,v-html回显富文本内容
文章目录 前言一、下载二、使用步骤1.引入样式2.html代码 总结 前言 提示:这里可以添加本文要记录的大概内容: vue后台框架,若依系统里有一个富文本编辑器,效果如下 在package.json里面查看,发现插件名叫quill 插件的…...
华纳云:ubuntu下nginx服务器如何配置
在Ubuntu操作系统上配置Nginx服务器涉及以下步骤。这里我将提供一个基本的配置示例,你可以根据自己的需求进行修改和定制。 安装 Nginx: 打开终端,并输入以下命令来安装 Nginx: sudo apt update sudo apt install nginx 启动 …...
PTP时间同步例程
下面是一个基本的PTP时间同步例程,可以使用Arduino或其他类似的微控制器实现: 步骤1:准备硬件 - 一个Arduino或类似的微控制器 - 一个以太网模块 步骤2:导入库文件 #include <Ethernet.h> #include <EthernetUdp.h>…...
【ES6】ES6遍历属性的方法
在ES6中,有几种遍历属性的方法,其中包括: 使用for…in循环和Object.keys()方法。 let obj {a: 1, b: 2, c: 3}; for (let key in obj) {console.log(obj[key]); }使用for…of循环和Object.values()方法。 let obj {a: 1, b: 2, c: 3}; f…...
【Web系列二十四】使用JPA简化持久层接口开发
目录 环境配置 1、引入依赖 配置文件 代码编写 实体类创建 JPA常用注解 Service与ServiceImpl Service ServiceImpl Controller Dao 三种实现Dao功能方式 1.继承接口,使用默认接口实现 2.根据接口命名规则默认生成实现 3.自定义接口实现(类似MyBatis…...
Flink流批一体计算(16):PyFlink DataStream API
目录 概述 Pipeline Dataflow 代码示例WorldCount.py 执行脚本WorldCount.py 概述 Apache Flink 提供了 DataStream API,用于构建健壮的、有状态的流式应用程序。它提供了对状态和时间细粒度控制,从而允许实现高级事件驱动系统。 用户实现的Flink程…...
软考高级系统架构设计师系列论文九十三:论计算机网络的安全性设计
软考高级系统架构设计师系列论文九十三:论计算机网络的安全性设计 一、计算机网络安全性设计相关知识点二、摘要三、正文四、总结一、计算机网络安全性设计相关知识点 软考高级系统架构设计师:计算机网络...
山西电力市场日前价格预测【2023-08-29】
日前价格预测 预测明日(2023-08-29)山西电力市场全天平均日前电价为321.48元/MWh。其中,最高日前电价为372.80元/MWh,预计出现在19: 30。最低日前电价为272.85元/MWh,预计出现在12: 30。 价差方向预测 1: 实…...
计算机毕设 基于深度学习的人脸专注度检测计算系统 - opencv python cnn
文章目录 1 前言2 相关技术2.1CNN简介2.2 人脸识别算法2.3专注检测原理2.4 OpenCV 3 功能介绍3.1人脸录入功能3.2 人脸识别3.3 人脸专注度检测3.4 识别记录 4 最后 1 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新…...
ES 7.6 - APi基础操作篇
ES7.6-APi基础操作篇 前言相关知识索引相关创建索引查询索引查询所有索引删除索引关闭与打开索引关闭索引打开索引 冻结与解冻索引冻结索引解冻索引 映射相关创建映射查看映射新增字段映射 文档相关(CURD)新增文档根据ID查询修改文档全量覆盖根据ID选择性修改根据条件批量更新 …...
【Go 基础篇】Go语言循环结构:实现重复执行与迭代控制
介绍 循环结构是编程中的重要概念,它允许我们重复执行一段代码块,或者按照一定的条件进行迭代控制。Go语言提供了多种循环结构,包括for、while和do-while等,用于不同的场景下实现循环操作。本篇博客将深入探讨Go语言中的循环结构…...
RabbitMQ笔记-RabbitMQ基本术语
RabbitMQ基本术语 相关概念; 生产者(Producer):投递消息。消息:消息体(payload)标签(label);生产者把消息交给rabbitmq,rabbitmq会根据标签把消息发给感兴趣…...
Git向远程仓库与推送以及拉取远程仓库
理解分布式版本控制系统 1.中央服务器 我们⽬前所说的所有内容(⼯作区,暂存区,版本库等等),都是在本地也就是在你的笔记本或者计算机上。⽽我们的 Git 其实是分布式版本控制系统!什么意思呢? 那我们多人…...
PostgreSQL+SSL链路测试
SSL一个各种证书在此就不详细介绍了,PostgreSQL要支持SSL的前提需要打开openssl选项,包括客户端和服务器端。 测试过程。 1. 生成私钥 root用户: mkdir -p /opt/ssl/private mkdir -p /opt/ssl/share/ca-certificateschmod 755 -R /opt/ss…...
【Perplexity ACM论文查询终极指南】:20年科研老兵亲授3大隐藏技巧,90%研究者至今不知
更多请点击: https://intelliparadigm.com 第一章:Perplexity ACM论文查询的底层逻辑与认知重构 Perplexity 并非 ACM 官方检索系统,而是一种基于语言模型的智能代理式查询工具,其与 ACM Digital Library 的交互本质是语义驱动的…...
基于Whisper与VS Code的语音编程氛围系统构建指南
1. 项目概述:当语音输入遇上沉浸式编程最近在GitHub上看到一个挺有意思的项目,叫voice-typing-vibe-coding。光看名字,你可能会觉得这又是一个简单的语音转代码工具,但实际体验下来,我发现它的野心远不止于此。它试图解…...
AI连接器SDK:统一接口简化多模型集成与开发
1. 项目概述与核心价值最近在折腾AI应用开发,特别是想把大语言模型的能力无缝集成到自己的业务系统里,相信很多开发者都遇到过类似的场景:想调用某个模型API,但发现不同厂商的接口规范、认证方式、返回格式千差万别;想…...
基于MPU6050角速度动态阈值的自适应计步算法实现
1. MPU6050与动态计步算法入门 你可能已经见过各种智能手环和运动设备的计步功能,但有没有想过它们是如何准确统计步数的?今天我要分享的是一种基于MPU6050传感器的动态阈值计步算法实现。这种方案特别适合手环、腿环这类穿戴设备,核心思路是…...
Katib:Kubernetes原生机器学习自动超参数调优实战指南
1. 项目概述:当机器学习遇上Kubernetes的自动化调优引擎 如果你在Kubernetes上跑过机器学习训练任务,大概率会碰到一个灵魂拷问:模型超参数怎么调?是手动一遍遍改代码、提交任务、等结果,还是写一堆脚本去自动化&#…...
【SPIE出版】黄冈师范学院主办!第四届大数据、计算智能与应用国际会议(BDCIA 2026)
第四届大数据、计算智能与应用国际会议(BDCIA 2026)将于2026年11月6-8日在中国黄冈召开。本次大会由黄冈师范学院主办,旨在汇聚全球学术界与产业界的专家学者、研究人员及工程技术人员,共同探讨大数据、计算智能及相关应用领域的前…...
LangChain 第一课:核心架构与组件(前端友好版)
一、先一句话搞懂:LangChain 到底是什么?LangChain 是一个大模型应用开发框架,专门帮你把「大模型、RAG、Agent、工具调用」这些功能,像搭积木一样快速拼起来,不用从零写复杂逻辑。前端类比秒懂你写 Vue 要用到 Vue、V…...
对比直接使用厂商API体验Taotoken统一接入的便利
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 对比直接使用厂商API体验Taotoken统一接入的便利 对于需要集成多种大语言模型的开发者而言,管理多个厂商的API是一项繁…...
Python通达信数据获取终极指南:5分钟快速掌握金融数据分析利器
Python通达信数据获取终极指南:5分钟快速掌握金融数据分析利器 【免费下载链接】mootdx 通达信数据读取的一个简便使用封装 项目地址: https://gitcode.com/GitHub_Trending/mo/mootdx 还在为金融数据分析寻找可靠的数据源而烦恼吗?Python通达信数…...
磁力搜索聚合工具终极指南:一键聚合23个资源站点
磁力搜索聚合工具终极指南:一键聚合23个资源站点 【免费下载链接】magnetW [已失效,不再维护] 项目地址: https://gitcode.com/gh_mirrors/ma/magnetW 还在为寻找资源而烦恼吗?magnetW磁力链接聚合搜索工具帮你解决所有搜索难题&#…...
