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

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

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

使用VSCode开发Django指南

使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...

C/C++ 中附加包含目录、附加库目录与附加依赖项详解

在 C/C 编程的编译和链接过程中,附加包含目录、附加库目录和附加依赖项是三个至关重要的设置,它们相互配合,确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中,这些概念容易让人混淆,但深入理解它们的作用和联…...

GitFlow 工作模式(详解)

今天再学项目的过程中遇到使用gitflow模式管理代码,因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存,无论是github还是gittee,都是一种基于git去保存代码的形式,这样保存代码…...

怎么让Comfyui导出的图像不包含工作流信息,

为了数据安全,让Comfyui导出的图像不包含工作流信息,导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo(推荐)​​ 在 save_images 方法中,​​删除或注释掉所有与 metadata …...

wpf在image控件上快速显示内存图像

wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像(比如分辨率3000*3000的图像)的办法,尤其是想把内存中的裸数据(只有图像的数据,不包…...