[系统架构设计师]数据库设计基础知识(六)
[系统架构设计师]数据库设计基础知识(六)
一.数据库基础概念
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集群方式
集群切片方式:客户端分片,代理分片,服务端分片