高级系统架构师学习(九)数据库系统

news/发布时间2024/8/25 3:52:49

一、数据库概述

数据库模式

三级模式:

  • 外模式:视图
  • 模式(也称为概念模式)数据库表
  • 内模式:物理文件

两层映像:两层映像可以保证数据库中的数据具有较高的逻辑独立性物理独立性

  • 外模式 - 模式映像
  • 模式 - 内模式映像

物理独立性:即数据库的内模式发生改变时,应用程序不需要改变

逻辑独立性:逻辑结构发生改变时,用户程序不需要改变。(逻辑独立性比物理独立性更难实现)

聚簇索引:会影响内模式

分布式数据库

  特点:

1、数据独立性:除了数据的逻辑独立性物理独立性外,还有数据分布独立性(分布透明性)。

2、集中与自治共享结合的控制结构:各局部的DBMS可以独立地管理局部数据库,具有自治的功能。同时,系统又设有集中控制机制,协调各局部DBMS的工作,执行全局应用。

3、适当增加数据冗余度:在不同的场地存储同一数据的多个副本,可以提高系统的可靠性可用性,同时也能提高系统性能。

4、全局的一致性、可串行性和可恢复性

分布式透明性

  • 分片透明性:用户感受不到分片存在
    • 水平分片(按记录分)
    • 垂直分片(按字段分)
    • 混合分片
  • 位置透明性:用户无需知道数据存放的物理位置
  • 局部数据模型透明性(逻辑透明)用户或应用程序无需知道局部场地使用的是哪种数据模型。

两阶段提交协议【2PC】

  • 表决阶段:形成一个共同的决定。【形成决定】
  • 执行阶段:实现这个协调者的决定。【实现决定】

两条全局提交规则

  • 1、只要有一个参与者撤销事务,协调者就必须做出全局撤销决定。【一否全否】
  • 2、只有所有参与者都同意提交事务,协调者才能做出全局提交决定。【全过才提交】

分库分区分表

分区和分表的异同

分区的常见方式

分区的优点

  • 1、相对于单个文件系统或是硬盘,分区可以存储更多的数据
  • 2、数据管理比较方便,比如要清理或废弃某年的数据,就可以直接删除该日期的分区数据即可。
  • 3、精准定位分区查询数据,不需要全表扫描查询,大大提高数据检索效率
  • 4、可跨多个分区磁盘查询,来提高查询的吞吐量
  • 5、在涉及聚合函数查询时,可以很容易进行数据的合并。

索引和视图

  关系的3种类型:

  • 基本关系(通常又称为基本表或基表):实际存在的表,实际存储数据的逻辑表示。
  • 查询表:查询结果对应的表。
  • 视图表:由基表或其他视图表导出的表,本身不独立存储,数据库只存放它的定义,常称为虚表。
    • PS:视图并没有真正存储这些数据,而是通过查询原始表动态生成所需要的数据。

  视图:并不在数据库中实际存在,而是一种虚拟表

  优点:

  • 1、视图能简化用户的操作
  • 2、视图机制可以使用户以不同的方式查询同一数据
  • 3、视图对数据库重构提供了一定程度的逻辑独立性
  • 4、视图可以对机密的数据提供安全保护

  物化视图:实体化视图,其本身会存储数据

    • PS:当原始表中的数据更新时,物化视图也会更新

二、数据库设计过程

数据库设计过程

  • 1、需求分析
  • 2、概念结构设计
  • 3、逻辑结构设计
  • 4、物理设计

1、需求分析

  前置背景:

  • 当前和未来应用的数据要求
  • 数据处理要求

  产出:

  • 数据流图
  • 数据字典
  • 需求说明书

2、概念结构设计

  前置背景:(与需求分析阶段一致)

  • 当前和未来应用的数据要求
  • 数据处理要求

  产出:

  • ER模型

3、逻辑结构设计

  前置背景:

  • 转换模型、规范化理论
  • DBMS特性
  • 数据处理要求

  产出:

  • 关系模式
  • 视图
  • 完整性约束
  • 应用处理说明书

4、物理设计

  前置背景:

  • DBMS特性
  • 硬件、OS特性

概念结构设计过程

  E-R图集成的方法:

  • 一次集成:多个局部E-R图一次集成。
  • 逐步集成:以累加的方式一次集成两个局部E-R。

  集成产生的冲突及解决办法:

  • 属性冲突:包括属性域冲突和属性取值冲突。
  • 命名冲突:包括同名异义和异名同义。
  • 结构冲突:包括同一对象在不同应用中具有不同的抽象,以及同一实体在不同局部E-R图中所包含的属性个数和属性排列次序不完全相同。
  • 解决方法:根据应用的语义对实体联系的类型进行综合或调整。

逻辑结构设计过程

任务

  • 1、E-R 图向关系模式的转换
    • 实体向关系模式的转换
    • 联系向关系模式的转换
  • 2、关系模式的规范化
  • 3、确定完整性约束(保证数据的正确性)
    • 实体完整性约束
    • 参照完整性约束
    • 用户自定义完整性约束
    • 触发器
  • 4、用户视图的确定(提高数据的安全性和独立性)
    • 根据数据流图确定处理过程使用的视图
    • 根据用户类别确定不同用户使用的视图
  • 5、应用程序设计

相关概念

  • 目或度:关系模式中属性的个数。
  • 候选码(候选键)【可以唯一地标识一个元组的属性或属性组】
  • 主属性与非主属性:组成候选码的属性就是主属性,其它的就是非主属性。
  • 主码(主键)
  • 外码(外键)
  • 全码(ALL-Key):关系模式的所有属性组是这个关系的候选码。【所有属性当作一个码】
  • 简单属性复合属性派生属性多值属性

数据库性能优化

三、关系代数

  结果为二者元组之和去除重复行

  结果为二者重复行

  结果去除两者重复行

笛卡尔积

  结果的属性列数为二者属性列数之和,结果的元组行数为二者元素数乘积

投影

  对属性列的选择列出。

选择

  对属性列的选择列出。

自然连接

  结果列数为二者属性列数之和减去重复列行数为二者同名属性列其值相同的结果元组

四、规范化理论

非规范化存在的问题

  问题:数据余、更新异常、插入异常、删除异常。

相关概念

函数依赖

部分函数依赖

传递函数依赖

Amstrong公理

  对关系模式R<U,F>来说有以下的推理规则:

  • 自反律:Y ⊆ X ⊆ U,则X -> Y成立。
  • 增广律:Z ⊆ U且X -> Y,则XZ -> YZ成立。
  • 传递律:X -> Y且Y -> Z,则X -> Z成立。

  根据A1,A2,A3这三条推理规则可以得到下面三条推理规则:

  • 合并规则:X -> Y,X -> Z,有X -> YZ。(A2,A3)
  • 伪传递规则:X -> Y,WY -> Z,有XW -> Z。(A2,A3)
  • 分解规则:X -> Y及Z ⊆ Y,有X -> Z。(A1,A3)

候选键

  主属性与非主属性:组成候选码的属性就是主属性,其它的就是非主属性。

  将关系模式的函数依赖关系用“有向图”的方式表示。

  找到入度为0的属性,并以该属性集合为起点,尝试遍历有向图,若能正常遍历图中所有结点,则该属性集即为关系模式的候选键。

  若入度为0的属性集不能遍历图中所有结点,则需要尝试性的将一些中间结点(既有入度,也有出度的结点)并入入度为0的属性集中,直至该集合能遍历所有结点,集合为候选键。

范式

反规范化

  反规范化手段:

  • 增加派生性冗余列:已有单价和数量列,增加“总价”列
  • 增加冗余列:已有学号列,增加“姓名”列
  • 重新组表:把拆分的表重新组表
  • 分割表:表数据分区、分表

  优点:连接操作少,检索快,统计快,需要查的表减少,检索容易。

  缺点:

  • 数据冗余,需要更大存储空间:无解
  • 插入、更新、删除操作开销更大:无解
  • 数据不一致可能产生添加、修改、删除异常:触发器或应用程序数据同步
  • 更新和插入代码更难写:无解

五、数据控制

数据控制的功能

  • 安全性
  • 完整性
  • 并发控制
  • 故障恢复 

安全性保障措施

  • 用户标识和鉴定:最外层的安全保护措施,可以使用用户账户、口令及随机数检验等方式。
  • 存取控制:对用户进行授权,包括操作类型(如查找、插入、删除、修改等动作)和数据对象(主要是数据范围)的权限。
  • 密码存储和传输:对远程终端信息用密码传输。
  • 视图的保护:对视图进行授权。
  • 审计:使用一个专用文件或数据库,自动将用户对数据库的所有操作记录下来。

事务的特性【ACID】

  • 原子性【A】
  • 一致性【C】
  • 隔离性【I】
  • 持久性【D】

并发请求数据库产生的问题

封锁技术

  排他型封锁(简称X锁,也称为写锁):如果事务T对数据A(可以是数据项、记录、数据集、乃至整个数据库)实现了X封锁,那么只允许事务T读取和修改数据A,其他事务不能对其加锁和操作。

  共享型封锁(简称S锁,也称为读锁):如果事务T对数据A实现了S封锁,那么只允许事务T读取数据A,不能修改数据A,其他事务可以读取数据A,并且可以对数据A加S锁,但不能加X锁。

故障恢复

  • (1)冷备份【静态备份】:是将数据库正常关闭,在停止状态下,将数据库的文件全部备份 (复制)下来。
  • (2)热备份【动态备份】:是利用备份软件,在数据库正常运行的状态下,将数据库中的数据文件备份出来。
  • (3)完全备份备份所有数据。
  • (4)差量备份仅备份上一次完全备份之后变化的数据。
  • (5)增量备份备份上一次备份之后变化的数据。
  • (6)日志文件事务日志是针对数据库改变所做的记录,它可以记录针对数据库的任何操作,并将记录结果保存在独立的文件中。

数据库故障与恢复

六、NoSQL

  定义:不仅仅只是 SQL,泛指非关系型的数据库。

NoSQL与关系数据库对比

数据库分类

  • 键值对数据库:键值对存储。常见缓存数据库(Redis)
  • 列存储数据库:以列簇式存储,同一列数据存到一起。常见分布式文件系统(HBase)
  • 文档型数据库:与键值对存储类似,但其值为结构化数据。常见web应用类数据库(MongoDB)
  • 图形数据库:利用图结构相关算法,构建关系图谱。常见社交网络,推荐系统等(Neo4J)
 

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

如若内容造成侵权/违法违规/事实不符,请联系连锁易网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

传递函数变换到状态空间

1. 分子为1的传递函数 例: \[G(s)=\frac{1}{s^3+a_2s^2+a_1s+a_0} \]首先写成输入输出关系: \[(s^3+a_2s^2+a_1s+a_0)Y(s)=U(s) \]对应的微分方程: \[\dddot{y}(t)+a_2\ddot y(t)+a_1\dot y(t)+a_0y(t)=u(t)\\ \dddot{y}(t)=-a_2\ddot y(t)-a_1\dot y(t)-a_0y(t)+u(t)\\ \]令…

-bash: ifconfig: 未找到命令

#abao { background-color: rgba(245, 245, 245, 1); padding: 10px; text-align: center; width: 800px } 命令: yum -y install ifconfig如果返回为:没有可用软件包 ifconfig。错误:无须任何处理则输入:yum search ifconfig返回:==================== 匹配:ifconfig ==…

SOC芯片架构技术分析(三)

SOC芯片架构技术分析(三) 3.1 汽车:汽车平台未来需要高算力 1)汽车半导体涵盖了汽车芯片、功率器件、传感器等重要电子零部件。汽车的计算芯片包括传统的MCU芯片和SoC芯片。 MCU芯片一般包含CPU一个处理器单元;而汽车SoC一般包含多个处理单元。 2)ECU(Electronic Contro…

python文件操作

在python,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件 open(文件路径,访问模式)f = open(test.txt, w)读文件:f1 = open(test1.txt,r)content = f1.read()print(content)readLines返回一个列表,可以遍历 f1 = open(test1.txt,r)content = f1.readlines(…

MySQL索引的认识

MySQL表的所有记录,是存储在磁盘中的。 当根据非索引字段进行查询时,MySQL 通常需要执行全表扫描,以查找满足查询条件的记录。全表扫描意味着 MySQL 必须逐一检查表中的每一行,以确定哪些行符合查询条件。 全表扫描会导致磁盘 I/O 次数增加,因为 MySQL 需要读取整个表的数…

Java集合框架(部分)

类图List:有序可重复集合 特点 1.元素允许重复 2.元素有序(元素的顺序就是插入时的顺序) 3.元素可以通过索引来访问或者设置 { ArrayLIst:底层为数组,查询速度快,增删慢 LinkedList:底层是链表,查询速度慢,增删快 两者的优缺点,:效率高,线程不安全 } Set:无序不可…

Go每日一库之172:go-prompt

简介 受python提示工具包的启发,在Go中构建强大的交互式提示 一、代码示例 package mainimport ("fmt""github.com/c-bata/go-prompt" )func completer(d prompt.Document) []prompt.Suggest {s := []prompt.Suggest{{Text: "users", Descripti…

SpringCloud

目录Springcloud介绍注册中心(Eureka)背景注册中心案例总结负载均衡(Ribbon)测试使用负载均衡RibbonRibbon负载均衡流程Ribbon的IRule常见负载均衡策略Ribbon的使用方法远程调用(Open Feign)Feign使用连接池注册中心(Nacos)测试配置集群命名空间Nacos非临时实例配置中心(Nacos)…

RedisInsight安装及使用

前言 RedisInsight 是一个直观高效的 Redis GUI 管理工具,它可以对 Redis 的内存、连接数、命中率以及正常运行时间进行监控,并且可以在界面上使用 CLI 和连接的 Redis 进行交互(RedisInsight 内置对 Redis 模块支持)。 RedisInsight 提供的功能:唯一支持 Redis Cluster 的…

函数基础和函数参数

第一部分:函数基础 函数的作用意义:1.为了更好地管理代码,可能对应的代码块需要重复多次使用,所以通过一个函数封装起来,便于下次直接调用2.方法实际上是通过函数实现的 例1:# type() # 内置函数 def lis():li=[1,2,3]li.append(4)li.pop(2) # 指定删除# print(li) # …

06. 系统滴答定时器

一、SysTick定时器简介SysTick,即系统滴答定时器,是属于 CM3 内核中的一个外设,内嵌在 NVIC 中。系统定时器是一个 24bit 的向下递减的计数器,SysTick 的时钟源自 HCLK。当计数值减到 0 时,将从 RELOAD 寄存器中自动重装载定时初值,开始新一轮计数。只要不把它在 SysTick…

【Qt6】列表模型——树形列表

QStandardItemModel 类作为标准模型,主打“类型通用”,前一篇水文中,老周还没提到树形结构的列表,本篇咱们就好好探讨一下这货。 还是老办法,咱们先做示例,然后再聊知识点。下面这个例子,使用 QTreeView 组件来显示数据,使用的列表模型比较简单,只有一列。#include &l…

QT QPixmap QImage内存泄漏

无论是在代码中还是在UI中设置icon都会产生内存泄漏 大概看了下,好像是QPixmap的data_ptr的引用计数,到不了1/0(查看引用计数,释放后,理论上应回到1) 试了下,仅以下两种方式不会产生内存泄漏: 1、从 XPM加载: img = QPixmap(result); //result为 static const cha…

抽象CurrentUser适配Http和Job场景

前言 获取当前请求用户的基础信息是很常见的,诸如当前用户Id,角色,有无访问权限等。通常我们可以直接使用HttpContext.User来拿到当前经过认证后的请求人信息。但是这样对于分层应用不太友好,需要安装AspNetCore.Http.Abstractions的包,这样对于这层(非Web层)来讲也有所侵…

使用 AI 编程助手 CodeWhisperer,开发如有神助

前段时间体验了chatGPT,听说它可以写代码,结果发现更多的只是一个对答写小作文的百度助手,虽然也能写代码,但不是我想要的,可以在 idea 中可以快速生成代码块的。一个偶然的机会,从微信群里了解到,由亚马逊云科技推出的 CodeWishPerer 开发插件,可以在多个开发环境中使…

向日葵安装教程

1、官网下载 2、执行安装1、官网下载 向日葵远程桌面连接,监控,维护,管理,客服支持解决方案-贝锐向日葵远程控制管理软件 (oray.com) 2、执行安装 安装后界面 完美。

读高性能MySQL(第4版)笔记17_复制(下)

复制1. 复制切换 1.1. 复制是高可用性的基础 1.1.1. 总是保留一份持续更新的副本数据,会让灾难恢复更简单 1.2. “切换副本”(promoting a replica)和“故障切换”(failing over)是同义词 1.2.1. 意味着源服务器不再接收写入,并将副本提升为新的源服务器 1.3. 计划内切换…

SOC芯片架构技术分析(二)

SOC芯片架构技术分析(二) 2.1 SoC产业链概况2.2 产业链上游概况:设计工具寡头竞争2.2 产业链上游概况:IP核行业行业集中度高1)行业集中度高,国内厂商市占率较低。 2)全球IP核供应商以国外厂商为主,行业集中度相对 较高:国内集成电路设计企业所需的IP核大多来自 境外供…

npm install 报-4048错误

报错原因:有缓存 权限不够 有三种解决方法: 第一种:找到.npmrc文件并删除 在 C:\Users\自己用户的文件夹\ 下找到 .npmrc 文件并删除 注意:这个文件是隐藏的,需要显示隐藏才能看见 第二种方法:直接用命令清理 在控制台上输出 npm cache clean --force 一样可以删除 第三…
推荐文章