[系统架构设计师]数据库设计案例分析

绫波波 发布于 2024-10-27 1820 次阅读


索引与视图

数据库索引:提升查询效率;降低添加、修改、删除效率;采用B树,B+树等

关系的三种类型

  • 基本关系(通常又称为基本表或基表):实际存在的表,实际存储数据的逻辑表示
  • 查询表:查询结果对应的表
  • 视图表:由基表或其他视图导出的表,本身不独立存储,数据库只存放它的定义,常称为虚表,其内容由查询定义(仅存放SQL查询语句)。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并没有真正的存储这些数据,而是通过查询原始表动态生成所需要的数据。

视图的优点

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

物化视图:将视图的内容物理存储起来,其数据随原始表变化,同步更新。它不是传统意义上的虚拟视图,是实体化视图,其本身会存储数据。同时当原始表中的数据更新时,物化视图也会更新。

分布式数据库

分布式数据库可以分为分区和分表,分区和分表的共性为:
1、都针对数据表
2、都使用了分布式存储
3、都提升了查询效率
4、都降低了数据库的频繁I/O压力值。
但是,分区方法逻辑上还是一张表,分表方法逻辑上已经是多张表
常见的分区方式包括:范围分区、哈希分区和列表分区

分区策略 分区方式 说明
范围分区【Range】 按数据范围值来作分区 例:按用户编号分区,0-99999映射到分区A,100000-199999映射到分区B
散列分区【HASH】 通过key进行hash运算分区 例:可以把数据分配到不同的分区,这类似于取余的操作,余数相同的,放在一个分区上
列表分区【LIST】 根据某字段的某个具体值进行分区 例:长沙用户分成一个区,北京用户分成一个区

分区的优点

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

分布式数据库


分布式数据库管理系统-组成:

  • LDBMS
  • GDBMS
  • 全局数据字典
  • 通信管理(CM)

分布式数据库管理系统-结构:

  • 全局控制集中的DDBMS
  • 全局控制分散的DDBMS
  • 全局控制部分分散的DDBMS

分布透明性

分片方式包括:水平切分:按记录分;垂直切分:按字段分;混合分片

  • 分片透明性:分布分片,用户感受不到(不关系如何分片存储)
  • 位置透明性:数据存放在哪里,用户不用管(用户无需知道数据存放的物理位置)
  • 复制透明:不关心结点的复制情况
  • 局部数据模型透明性(逻辑透明):用户或应用程序无需知道局部场地使用的是哪种数据模型

分布式事务管理

两阶段提交协议2PC
2PC事务提交的两个阶段:
表决阶段:目的是形成一个共同的决定
执行阶段:目的是实现这个协调者的决定

两条全局提交规则:
只要有一个参与者撤销事务,协调这就必须做出全局撤销的决定。
只要所有的参与者都同意提交事务,协调者才能做出全局提交决定

NoSQL

NoSQL(not-only SQL):不仅仅是SQL,泛指非关系型的数据库。

  • alipay_img
  • wechat_img
Talk is cheap, show me the code.
最后更新于 2024-10-27