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

软考:数据库考点总结

结构冲突

在数据库领域,冲突主要指的是在并发操作中,多个事务试图同时访问或修改相同的数据资源,导致数据一致性、完整性和隔离性受到威胁。以下是数据库中常见的几种冲突类型:

  1. 读写冲突(Read-Write Conflict)

    • 当一个事务在读数据的同时,另一个事务试图修改该数据,就会产生读写冲突。这种冲突可能导致“脏读”、“不可重复读”和“幻读”等问题。
  2. 写写冲突(Write-Write Conflict)

    • 当多个事务同时试图修改同一数据时,就会产生写写冲突。这种冲突可能导致数据丢失或覆盖。
  3. 死锁(Deadlock)

    • 两个或多个事务互相等待对方释放资源,导致系统进入停滞状态。
  4. 命名冲突(Naming Conflict)

    • 在数据库设计中,两个或多个元素(如实体、属性、关系等)使用了相同的名字,导致混淆和错误。
  5. 属性冲突(Attribute Conflict)

    • 在不同实体或关系中,属性具有相同的名字,但表示不同的意义或类型。
  6. 结构冲突(Structural Conflict)

    • 在合并多个ER图时,实体之间的关系结构不一致,导致难以整合。

这些冲突类型对数据库的影响不同,处理方法也有所差异。数据库管理系统(DBMS)通过锁机制、事务隔离级别、死锁检测等手段来识别和处理这些冲突,以确保数据的一致性和系统的高效运行。

  • 同一实体在不同的ER图中属性个数和排列次数不同,归属于结构冲突(真题考点)。

ACID特性:

  • 数据库的ACID特性是确保数据库事务可靠性和一致性的四个关键属性。ACID是原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)的缩写。下面是每个特性的详细解释:
  1. 原子性(Atomicity)

    • 原子性意味着事务中的所有操作要么全部完成,要么全部不完成。如果事务中的某个操作失败,整个事务将回滚到事务开始前的状态,就像这个事务从未执行过一样。这种特性确保了事务的不可分割性。
  2. 一致性(Consistency)

    • 一致性确保事务的执行将数据库从一个一致的状态转换到另一个一致的状态。在事务开始之前和事务结束之后,数据库的完整性约束都必须得到满足。这意味着事务执行过程中不会违反任何预定义的规则和约束。
  3. 隔离性(Isolation)

    • 隔离性保证了并发执行的事务之间的操作不会相互干扰。每个事务都像是在一个独立的环境中执行,对其他事务不可见,直到事务完成并提交。不同的数据库系统可能支持不同的隔离级别,如读未提交(Read Uncommitted)、读已提交(Read Committed)、可重复读(Repeatable Read)和串行化(Serializable)。
  4. 持久性(Durability)

    • 持久性意味着一旦事务被提交,它对数据库的修改就是永久性的,即使系统发生故障也不会丢失。数据库系统必须确保已提交的事务修改能够被保存到持久化存储中,通常是磁盘。

ACID特性是数据库事务处理的核心,它们共同工作以确保数据库的可靠性和数据的完整性。不同的数据库管理系统可能在实现这些特性时有所不同,但它们都必须遵循ACID原则来提供可靠的事务处理能力。


NoSQL

区别于关系型数据库,不保证ACID特性的数据库类型
1、列式数据库,通过列来组织和存储数据,比如Hbase
2、键值对数据库,比如Redis
3、文档型数据库
4、图数据库
特点:
1、易扩展
2、大数据量,高性能
3、灵活的数据模型,无需事前为要存储的数据建立字段,随时可用存储自定义的数据格式
4、高可用

体系架构,从上到下:
接口层,比如Rest,Map/Reduce,数据调用接口
数据逻辑层,数据逻辑表现形式
数据分布层,数据如何进行分布的,类似关系是数据库,CAP支持,数据中心支持,动态部署支持
数据持久层:数据的存储形式,比如内存,硬盘,内存和硬盘接口,定制可插拔四种形式。定制可插拔保证了数据存取具有较高的灵活性。


数据分布层三种支持的解释:

在数据库领域,数据分布层的CAP支持、数据中心支持和动态部署支持是构建高可用、高性能和可扩展数据库系统的关键特性。以下是对这些特性的详细解释:

  1. CAP支持(Consistency, Availability, Partition tolerance)

    • 一致性(Consistency):在分布式系统中,一致性指的是数据在多个节点之间保持同步。强一致性意味着任何时候读取的数据都是最新的,而弱一致性或最终一致性则允许数据在一段时间内不同步,但最终会达到一致状态。
    • 可用性(Availability):指系统在任何时候都能响应用户的请求,即使在部分节点失败的情况下。高可用性系统能够容忍节点故障,而不影响整体服务。
    • 分区容错性(Partition tolerance):在网络分区发生时,系统仍然能够继续运行。由于网络问题,分布式系统中的节点可能会被分割成不同的分区,分区容错性要求系统在这种情况下仍然能够工作。
  2. 数据中心支持

    • 数据中心支持涉及到数据库系统在多个数据中心的部署和运行能力。这包括数据的跨数据中心复制、备份和恢复,以及在数据中心之间进行负载均衡和故障转移,以确保数据的高可用性和业务连续性。
  3. 动态部署支持

    • 动态部署支持指的是数据库系统能够根据业务需求和负载变化,动态地调整资源分配和配置。这包括动态增加或减少数据库节点、动态调整数据分区(Sharding)策略,以及在运行时切换数据源等。例如,dynamic-datasource 是一个开源的 Spring Boot 多数据源启动器,它支持数据源分组、敏感信息加密、独立初始化表结构等功能,允许项目启动后动态增加或移除数据源。

这些特性共同构成了现代数据库系统在分布式环境下的核心能力,使得数据库能够更好地应对大规模数据和高并发请求的挑战。


数据持久层的特点

数据持久层是软件架构中负责数据存储和管理的部分,它涉及到数据如何在系统中被保存和访问。数据的存储形式包括内存、硬盘、内存和硬盘的接口,以及定制可插拔存储解决方案。以下是这四种形式的简要说明和为什么定制可插拔形式能够提供较高的灵活性:

  1. 内存(Memory)

    • 数据存储在RAM中,访问速度快,但成本较高,且数据在断电后会丢失。
  2. 硬盘(Hard Disk)

    • 数据存储在硬盘驱动器上,成本较低,容量大,但访问速度比内存慢。
  3. 内存和硬盘接口(Memory-Disk Interface)

    • 指的是缓存系统,如Redis或Memcached,它们作为内存和硬盘之间的桥梁,提供快速的数据访问,同时将数据持久化到硬盘。
  4. 定制可插拔(Customizable and Pluggable)

    • 定制可插拔的数据存储解决方案允许开发者根据特定需求定制存储系统,包括数据的存储格式、访问模式、持久化策略等。这种灵活性主要体现在以下几个方面:
      • 技术多样性:不同的应用可能需要不同的存储技术,如关系型数据库、NoSQL数据库、文件系统等。定制可插拔允许根据需求选择合适的存储技术。
      • 扩展性:随着业务的发展,数据存储需求可能会变化。定制可插拔的解决方案可以根据需要轻松扩展或替换存储组件。
      • 维护和升级:定制的解决方案可以更容易地进行维护和升级,因为它们通常与特定的业务逻辑紧密集成。
      • 性能优化:定制解决方案可以根据特定的访问模式和数据特征进行优化,提高性能。
      • 成本效益:通过定制,可以选择成本效益最高的存储解决方案,避免不必要的开销。
      • 数据一致性和完整性:定制解决方案可以更好地控制数据的一致性和完整性,尤其是在复杂的事务处理中。

定制可插拔的数据持久层解决方案提供了高度的灵活性和控制力,使得开发者能够根据应用的具体需求设计和实现最适合的数据存储策略。这种灵活性是构建高效、可靠和可维护系统的关键。

相关文章:

软考:数据库考点总结

结构冲突 在数据库领域,冲突主要指的是在并发操作中,多个事务试图同时访问或修改相同的数据资源,导致数据一致性、完整性和隔离性受到威胁。以下是数据库中常见的几种冲突类型: 读写冲突(Read-Write Conflict&#xf…...

Flash的语音ic型号有哪些?

深圳唯创知音电子有限公司在语音技术领域具有深厚的积累,其Flash语音IC产品凭借高性能和广泛的应用领域,在市场上占据了一席之地。以下是对该公司Flash语音IC产品的详细介绍: 一、产品概述 Flash语音IC是一种采用Flash存储技术的语音芯片&…...

10天进阶webpack---(1)为什么要有webpack

首先就是我们的代码是运行在浏览器上的,但是我们开发大多都是利用node进行开发的,在浏览器中并没有node提供的那些环境。这就早成了运行和开发上的不同步问题。 -----引言 浏览器模块化的问题: 效率问题:精细的模块划分带来了更…...

HTML CSS

目录 1. 什么是HTML 2. 什么是CSS ? 3. 基础标签 & 样式 3.1 新浪新闻-标题实现 3.1.1 标题排版 3.1.1.1 分析 3.1.1.2 标签 3.1.1.3 实现 3.1.2 标题样式 3.1.2.1 CSS引入方式 3.1.2.2 颜色表示 3.1.2.3 标题字体颜色 3.1.2.4 CSS选择器 3.1.2.5 发布时间字…...

第03章 MySQL的简单使用命令

一、MySQL的登录 1.1 服务的启动与停止 MySQL安装完毕之后,需要启动服务器进程,不然客户端无法连接数据库。 在前面的配置过程中,已经将MySQL安装为Windows服务,并且勾选当Windows启动、停止时,MySQL也 自动启动、停止…...

【C++动态规划】2435. 矩阵中和能被 K 整除的路径|1951

本文涉及知识点 C动态规划 LeetCode2435. 矩阵中和能被 K 整除的路径 给你一个下标从 0 开始的 m x n 整数矩阵 grid 和一个整数 k 。你从起点 (0, 0) 出发,每一步只能往 下 或者往 右 ,你想要到达终点 (m - 1, n - 1) 。 请你返回路径和能被 k 整除的…...

三、Kafka集群

一、Kafka集群的概念 1、目的 高并发、高可用、动态扩展。 主备数据架构、双活节点、灾备数据中心。 如果是服务的地理范围过大也可以使不同的集群节点服务不同的区域,降低网络延迟。 2、Kafka集群的基本概念 1)复制(镜像) kaf…...

[数据结构]堆

堆,本质是一颗完全二叉树。属于非线性结构。 代码实现可参考树的代码。 函数介绍: //此堆是小堆,大堆操作部分与小堆相反 void InitHeap(Heap* cat) {assert(cat);cat->arr NULL;cat->capacity cat->size 0; } void DestroyHeap(Heap* cat) {assert(…...

UDP-鼠李糖合成酶基因的克隆与鉴定-文献精读76

何首乌中UDP-鼠李糖合成酶基因FmRHM1/2的克隆与鉴定 摘要 UDP-鼠李糖是一种由UDP-鼠李糖合酶(RHM)催化合成的鼠李糖供体,而鼠李糖是鼠李糖苷化合物的重要组成部分,植物中只有少数基因编码的酶参与UDP-鼠李糖生物合成。本研究基于…...

【H2O2|全栈】JS进阶知识(四)Ajax

目录 前言 开篇语 准备工作 基本概念 原生JS使用AJAX 创建AJAX对象 设置请求方式和地址 设置请求头 发送请求 get方式发送 post方式发送 获取响应数据 AJAX状态码和HTTP状态消息 错误捕获 原生JS封装AJAX方法 $ 调用AJAX方法 结束语 前言 开篇语 本系列博客…...

Spring IOC的工作流程

Spring IOC的工作流程 好的,这个问题我会从几个方面来回答。 IOC是什么 Bean的声明方式 IOC的工作流程 IOC的全称是 Inversion Of Control,也就是控制反转,它的核心思想是把对象的管理权限交给容器。(展示图 1) &…...

从新手到专家:7款电脑平面设计软件评测

平面设计在时尚、广告等多个领域扮演着重要角色,而创作出独特且富有创意的设计作品则需要依赖优秀的电脑平面设计软件。市场上的电脑平面设计软件众多,每款软件都有其独到之处。本文将为你推荐几款值得关注的电脑平面设计软件,并分析它们的特…...

【C++】如何让C++字符串更快、C++的小字符串优化

二十三、如何让C字符串更快、C的小字符串优化 1、如何让C字符串更快? 如果程序中有很多字符串操作,比如格式化文本(日志记录),那是非常糟糕的,因为字符串操作是很慢的。字符串string和它相关的很多函数很可能会自动分配内存&…...

C++《list》

在本篇当中我们将学习STL中的list,在此list就是我们之前在数据结构学习过的链表,在本篇中我们要来了解list当中的成员函数该如何使用,由于list各个函数的接口和之前学习过的vector类型,因此在学习list的使用就较为轻松。在lis篇章…...

strongswan中METHOD定义

strongswan中使用METHOD来定义函数(方法),如下get_first函数定义。 METHOD(linked_list_t, get_first, status_t,private_linked_list_t *this, void **item) {if (this->count 0)return NOT_FOUND;*item this->first->value;ret…...

Rive 动画框架竟然支持响应式布局,全平台动画框架开启全新 UI 交互能力

没用过 Rive 的可能对于 Rive 还不熟悉,其实之前已经介绍过 Rive 好几次,例如《Rive 2 动画库「完全商业化」》 和《给掘金 Logo 快速添加动画效果》 等文章都介绍过 Rive ,之所以会接触 Rive 到, 也是因为多年前想在 Flutter 平台…...

MQ的详细大全知识点

MQ(Message Queue)是一种在分布式系统中广泛应用的消息中间件,它基于“先进先出”的数据结构原理,用于在不同系统之间传递消息。MQ通过提供接口给各个系统调用,实现了发送者和接收者之间的解耦,使得系统之间…...

AI图像相似性搜索对比:VIT, CLIP, DINO-v2, BLIP-2

图像相似性搜索的核心在于一个简单的想法:图像可以表示为高维空间中的向量。当两个图像相似时,它们的向量应该在这个空间中占据相似的位置。我们可以通过测量角度(或余弦相似度)来确定这些向量的相似程度。如果角度小,…...

【tomcat系列漏洞利用】

Tomcat 服务器是一个开源的轻量级Web应用服务器,在中小型系统和并发量小的场合下被普遍使用。主要组件:服务器Server,服务Service,连接器Connector、容器Container。连接器Connector和容器Container是Tomcat的核心。一个Container…...

前端学习-盒子模型(十八)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 盒子模型组成 边框 语法 边框简写 代码示例 表格的细线边框 语法 内边距 内边距复合写法 外边距 外边距典型应用 外边距合并 清除内外边距 总结 前…...

接口测试中缓存处理策略

在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...

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

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

python打卡day49

知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​,覆盖应用全生命周期测试需求,主要提供五大核心能力: ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

线程同步:确保多线程程序的安全与高效!

全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...