第16章 案例特训专题【数据库篇】

目录

[16.1 课程内容提要:](#16.1 课程内容提要:)

[16.2 规范化-数据库设计过程:](#16.2 规范化-数据库设计过程:)

[16.3 规范化-范式:](#16.3 规范化-范式:)

[16.4 反规范化:](#16.4 反规范化:)

[16.5 数据库索引:](#16.5 数据库索引:)

[16.6 数据库视图:](#16.6 数据库视图:)

[16.7 数据库-分区分表分库:](#16.7 数据库-分区分表分库:)

[16.8 分布式数据库系统:](#16.8 分布式数据库系统:)

[16.9 NoSQL:](#16.9 NoSQL:)

[16.10 联邦数据库系统:](#16.10 联邦数据库系统:)

[16.11 数据库性能优化:](#16.11 数据库性能优化:)

[16.12 大数据:](#16.12 大数据:)


16.1 课程内容提要:

数据库设计关注的问题

性能、数据一致性、安全

16.2 规范化-数据库设计过程:

数据库设计主要分为6个阶段:

用户需求分析:分析用户活动、收集数据确定系统边界。

概念结构设计 :将应用对象抽象成不依赖于数据库管理系统DBMS的数据模型,即概念模型。描述概念模型的较理想的工具是**++实体-关系(E-R)图++**。

逻辑结构设计 :将抽象的概念模型转化为与选用的DBMS产品所支持的数据模型相符合的逻辑模型,即**++关系模式++**。

物理结构设计:为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法),即在物理设备上的实现方案。

…数据库实施阶段:根据前两个阶段的结果建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。

†数据库运行和维护阶段:在数据库系统正式投入运行后,对其进行长期的评价、调整与修改。

16.3 规范化-范式:

思考:范式级别提升带来了什么负面影响?

16.4 反规范化:


2021.11案例分析题

反规范化设计可提高查询的性能,但必然会带来数据的不一致性问题。在反规范化设计中,解决数据不一致性问题的三种常见方法。

(1)++应用程序同步++:指的是通过应用程序在更新数据的同时,同步更新对应的冗余数据,这两个操作会放到同一个事务中,从而保证两个操作的原子性。

(2)++触发器同步++:触发器是与表事件相关的特殊存储过程,它由执行事件来触发,由数据库管理系统在后台自动执行。常见的方法是在更新数据的表上增加相应事件的触发器,在触发器内容同步更新冗余数据。

(3)++批处理同步++:这种方法一般应用在对数据一致性要求不高的场景下。当更新数据操作执行了一段时间后,根据更新数据进行批量的同步操作,使得冗余数据和更新数据保持一致。

根据题干的要求,该系统适合采用应用程序同步或触发器同步。

反规范化的优点:连接操作少,检索快、统计快;需要查的表减少,检索容易。

16.5 数据库索引:

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

16.6 数据库视图:

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

视图的优点:

1、视图能简化用户的操作

2、视图机制可以使用户以不同的方式查询同一数据

3、视图对数据库重构提供了一定程度的逻辑独立性

4、视图可以对机密的数据提供安全保护

物化视图:将视图的内容物理存储起来,其数据随原始表变化,同步更新。

16.7 数据库-分区分表分库:

分区的常见方式:

分区的优点:

1、相对于单个文件系统或是硬盘,分区可以存储更多的数据。

2、数据管理比较方便,比如要清理或废弃某年的数据,就可以直接删除该日期的分区数据即可。

3、精准定位分区查询数据,不需要全表扫描查询,大大提高数据检索效率。

4、可跨多个分区磁盘查询,来提高查询的吞吐量。

5、在涉及聚合函数查询时,可以很容易进行数据的合并。

16.8 分布式数据库系统:

全局外模式:是全局应用程序的用户视图,是全局概念模式的子集,该层直接与用户(或应用程序)交互

全局概念模式 :定义分布式数据库中数据的整体逻辑结构,数据就如同根本没有分布一样,可用于传统的集中式数据库中所采用的方法进行定义。

分片模式:将一个关系模式分解成几个数据片

分布模式:分布式数据库的本质特性就是数据分布在不同的物理位置。分布模式的主要职责是定义数据片段(即分片模式的处理结果)的存放节点。

局部概念模式 :就是局部数据库的概念模式(基本表)

局部内模式 :局部数据库的内模式(物理结构和存储方式的描述,索引、文件组织方式)。

分布透明性

分片透明性:分不分片,用户感受不到

位置透明性:数据存放在哪里,用户不用管

局部数据模型透明性(逻辑透明):用户不用关系局部数据模型

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

(1)LDBMS

(2)GDBMS

(3)全局数据字典

(4)通信管理(CM)

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

(1)全局控制集中的DDBMS

(2)全局控制分散的DDBMS

(3)全局控制部分分散的DDBMS

分布式数据库优化技术:

CAP理论:

BASE理论:

16.9 NoSQL

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

16.10 联邦数据库系统:

联邦数据库系统(FDBS)是一个彼此协作却又相互独立的成员数据库(CDBS)的集合,它将成员数据库系统按不同程度进行集成对该系统整体提供控制和协同操作的软件叫做联邦数据库管理系统(FDBMS)

联邦数据库特征

(1)分布性

(2)异构性

(3)自治性

(4)透明性

联邦数据库分类

(1)紧耦合

(2)松耦合

16.11 数据库性能优化:

16.12 大数据:

大数据处理系统应该具有的重要特征

(1)高度可扩展性

(2)高性能

(3)高度容错

(4)支持异构环境

(5)较短的分析延迟

(6)易用且开放的接口

(7)较低成本

(8)向下兼容性

Stomm之父Nathan Marz提出了他认为大数据系统应该具有的属性,包括:鲁棒性和容错性、低延迟读取和更新能力、横向扩容、通用性、延展性、即席查询能力、最少维护能力、可调试性。

典型的大数据架构:

大数据架构设计理论与实践

  1. Lambda 架构分为批处理层(存储原始数据) 、 加速层(处理实时数据) 、服务层(合并结果响应请求)

  2. Kappa 架构优化 Lambda 架构, 删除批处理层, 以消息队列替代数据通道, 分为实时层和服务层, 统一离线和实时处理代码。

1. Lambda 架构

Lambda架构是一种用于同时处理离线和实时数据的、可容错的、可扩展的分布式系统。

Lambda架构分为以下3层:

(1)批处理层 。该层核心功能是存储主数据集,主数据集数据具有原始、不可变、真实的特征。批处理层周期性地将增量数据转储至主数据集,并在主数据集上执行批处理,生成批视图。架构实现方面可以使用Hadoop HDFS或HBase存储主数据集,再利用Spark或MapReduce执行周期批处理,之后使用MapReduce 创建批视图。

(2)加速层 。该层的核心功能是处理增量实时数据,生成实时视图,快速执行即席查询。架

构实现方面可以使用HadoopHDFS或HBas存储实时数据,利用Spark或Storm实现实时数据处理和实时视图。

(3)服务层。 该层的核心功能是响应用户请求,合并批视图和实时视图中的结果数据集得到

**最终数据集。**具体来说就是接收用户请求,通过索引加速访问批视图,直接访问实时视图,然后合并两个视图的结果数据集生成最终数据集,响应用户请求。架构实现方面可以使用HBase或Cassandra作为服务层,通过Hive 创建可查询的视图。

Lambda架构优缺点:

Lambda架构的优点:容错性好,查询灵活度高,弹性伸缩,易于扩展

Lambda架构的缺点:编码量大,持续处理成本高,重新部署和迁移成本高

与Lambda架构相似的模式有事件溯源模式、命令查询职责分离模式。

2. Kappa架构

Kappa架构是在Lambda架构的基础上进行了优化,删除了Batch Layer的架构,将数据通道

以消息队列进行替代。

Kappa架构分为如下2层:

(1)实时层。该层核心功能是处理输入数据,生成实时视图。具体来说是采用流式处理引擎逐条处理输入数据,生成实时视图。架构实现方式是采用Apache Kafka回访数据,然后采用Flink或 Spark Streaming 进行处理。

(2)服务层。该层核心功能是使用实时视图中的结果数据集响应用户请求。实践中使用数据

湖中的存储作为服务层。

因此Kappa架构本质上是通过改进Lambda架构中的加速层,使它既能够进行实时数据处理,

同时也有能力在业务逻辑更新的情况下重新处理以前处理过的历史数据.

Kappa架构的优点是将离线和实时处理代码进行了统一,方便维护。缺点是消息中间件有性能瓶颈、数据关联时处理开销大、抛弃了离线计算的可靠性

3. Lambda 架构与Kappa架构的对比

对于两种架构设计的选择可以从以下4个方面考虑,

相关推荐
NCIN EXPE1 天前
redis 使用
数据库·redis·缓存
MongoDB 数据平台1 天前
为编码代理引入 MongoDB 代理技能和插件
数据库·mongodb
极客on之路1 天前
mysql explain type 各个字段解释
数据库·mysql
代码雕刻家1 天前
MySQL与SQL Server的基本指令
数据库·mysql·sqlserver
lThE ANDE1 天前
开启mysql的binlog日志
数据库·mysql
yejqvow121 天前
CSS如何控制placeholder文字的颜色_使用--placeholder伪元素
jvm·数据库·python
oLLI PILO1 天前
nacos2.3.0 接入pgsql或其他数据库
数据库
m0_743623921 天前
HTML怎么创建多语言切换器_HTML语言选择下拉结构【指南】
jvm·数据库·python
pele1 天前
Angular 表单中基于下拉选择动态启用字段必填校验的完整实现
jvm·数据库·python