[系统架构设计师]数据库设计基础知识(六)

发布于:2025-08-19 ⋅ 阅读:(17) ⋅ 点赞:(0)

[系统架构设计师]数据库设计基础知识(六)

一.数据库基础概念

1.数据库管理系统(DBMS)

分类:关系数据库系统(RDBS),面向对象的数据库系统(OODBS),对象关系数据库系统(ORDBS)

数据库系统体系结构:

在这里插入图片描述

两级映像:概念模式/内模式映像,外模式/概念模式映像 保证较高逻辑独立性和物理独立性

数据库三级模式:

在这里插入图片描述

数据库两级映像:

在这里插入图片描述

2.关系数据库

1.集合运算符和专门的关系运算符的含义及解释

在这里插入图片描述

2.外连接运算符

在这里插入图片描述

3.关系数据库设计基本理论

函数依赖,非平凡函数依赖,平凡的函数依赖,完全函数依赖,部分函数依赖,传递依赖,函数依赖的公理系统

4.推理规则

A1自反律,A2增广律,A3传递律

合并规则,伪传递规则,分解规则

5.关系数据库的规范化

第一范式(1NF)

第二范式(2NF)

第三范式(3NF)

BC范式(BCNF)

6.事务

原子性,一致性,隔离性,持久性

7.备份

静态备份,动态备份,海量备份,增量备份

二.数据库设计

1.设计基本步骤

用户需求分析,概念结构设计,逻辑结构设计,物理结构设计,应用程序设计,运行维护

传统数据库与数据仓库比较:

在这里插入图片描述

OLTP与OLAP区别:

在这里插入图片描述

三.应用程序与数据库的交互

交互方式:库函数,嵌入式SQL,通用数据接口标准,对象关系映射

通用数据接口标准:数据库访问对象(DAO),远程数据库对象(RDO),ActiveX对象(ADO),Java数据库连接(JDBC)

1.NoSQL数据库

列式存储数据库,键值对存储数据库,文档型数据库,图数据库

特征:易扩展,大数据量,高性能,灵活的数据模型,高可用

框架:数据持久层,数据分布层,数据逻辑模型层,接口层

2.分布式数据库

体系结构:全局试图,全局概念模式,分片模式,分配模式,局部概念模式,局部内模式

分布式数据库体系结构:

在这里插入图片描述

分布式数据库特点:共享性,自治性,可用性,分不性

分布式透明性:分片透明性,位置透明性,局部数据模型透明性

3.数据库优化技术

集中式数据库性能优化:增加冗余列,增加派生列,重新组表,水平分割表,垂直分割表

4.分布式数据库优化技术

分布式数据库性能优化:主从复制,读写分离,分表,分库

MySQL主从复制过程:

在这里插入图片描述

分表的方式:

在这里插入图片描述

5.分布式缓存技术Redis

1.数据类型: string类型,hash类型,set类型,list类型,zset类型,pub/sub类型

2.访问方式:读数据,写数据

3.过期策略:定期删除,惰性删除

4.淘汰机制:volatile-lru(最近最少使用),volatile-lfu(最不经常使用),volatile-random(随机淘汰算法),volatile-ttl(生存时间淘汰),allkeys-lru(所有key中选择最近最少使用的进行淘汰),allkeys-lfu(所有key中选择最不经常使用的进行淘汰),allkeys-random(所有key中随机选择key进行淘汰)

5.redis持久化方式:

在这里插入图片描述

6.缓存穿透:大量key在Redis里不存在,导致直接访问数据库,数据库压力增大

7.缓存穿透可能原因:恶意攻击,大量请求访问数据库里有但Redis没有的key

8.恶意攻击解决方案:

(1)针对比较少的请求资源ip。主动限制访问次数,或者拉入黑名单

(2)应用程序来检查key的合法性,提前拒绝不合法的请求

(3)使用布隆过滤器

9.Redis没有key解决方案:

(1)预热Redis,运行一个批处理脚本,将可能会大量访问的数据预先加载到Redis,业务再"开张"

(2)在最前端进行流量控制,逐步把请求释放出来。给出一段时间,让Redis逐步加载热数据

(3)如果是在数据库里也没有的key,也需要在Redis中设置key,使其值为null或空

10.缓存雪崩:大量请求访问缓存中的key,这些key是存在的,但同时到了过期时间,从而导致请求直接访问数据库,数据库压力增大。

11.缓存雪崩原因:Redis故障,大量的key采用了相同的过期时间,

12.Redis故障解决方案:

(1)使用主从复制提高可用性,使用cluster集群方案降低故障时影响范围

(2)如果出现故障,则可以采用服务降级,熔断,限流等措施

13.采用相同过期时间解决方案:

(1)过期时间加上一个随机值 ,使得众多key均匀过期

14.缓存击穿:少量热点的key缓存时间失效了,使得请求直接访问数据库

可能原因:热点的key设置了太短的过期时间

解决方案:(1)将key设置较长的过期时间。对于非常重要的key,则设置永久有效。但需要解决好与数据库中的key一致性问题(2)使用分布式锁。如果热点key失效了,要控制好访问后端数据库的流量。只允许一个请求访问数据库,取出最新的key,存放到Redis,其他请求则必须等待。

15.Redsi集群:主从复制集群,哨兵集群,Cl’uster集群方式

将key设置较长的过期时间。对于非常重要的key,则设置永久有效。但需要解决好与数据库中的key一致性问题(2)使用分布式锁。如果热点key失效了,要控制好访问后端数据库的流量。只允许一个请求访问数据库,取出最新的key,存放到Redis,其他请求则必须等待。

15.Redsi集群:主从复制集群,哨兵集群,Cl’uster集群方式

集群切片方式:客户端分片,代理分片,服务端分片


网站公告

今日签到

点亮在社区的每一天
去签到