知识点整理:数据仓库

文章目录

  • 1. 数据库的三大范式
  • 2. 数据仓库建模方法
    • 2.1 ER 模型
    • 2.2 维度建模
  • 3. OLAP 和 OLTP 的区别
  • 4. 数据仓库的基本架构
  • 5. 数据库和数据仓库有什么区别?
  • 6. 数据仓库的分层
    • 6.1 ODS 层
    • 6.2 DW 层
    • 6.3 ADS 层
  • 7. 数据仓库为什么要进行分层?
  • 8. 星型模型和雪花模型的区别

1. 数据库的三大范式

推荐阅读:数据库设计三大范式

  1. 第一范式:确保数据库表中的所有字段都是不可分解的原子值

  2. 第二范式:在第一范式的基础上更进一层,需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(如联合主键)。也就是说,一个表中只能保存一种数据,不可以把多种数据保存在同一张表中

  3. 第三范式确保数据表中每一列数据都和主键直接相关,而不能间接相关。比如在设计一个订单数据表的时候,可以将客户编号作为一个外键和订单表建立相应的关系。而不可以在订单表中添加关于客户其它信息(比如姓名、所属公司等)的字段。
    知识点整理:数据仓库_第1张图片

2. 数据仓库建模方法

有四种模型:ER 模型、维度模型、Data Vault 模型、Anchor 模型。用的较多的是维度模型和 ER 模型。

2.1 ER 模型

用实体关系描述业务,满足数据库的第三范式。

2.2 维度建模

维度建模按照 事实表 和 维度表 来构建数仓。

① 事实表

事实表是指存储有事实记录的表,比如系统日志、销售记录等。事实表的记录在不断地动态增长,所以它的体积通常远大于其他表。

事实表作为数据仓库建模的核心,需要根据业务过程来设计,一般包括 引用的维度 和 业务过程有关的度量。

② 维度表

维度表保存了维度的属性值,可以跟事实表做关联。相当于把事实表上经常重复出现的属性抽取、规范出来用一张表进行管理

常见的维度表有:日期表(存储与日期对应的周、月、季度等属性)、地点表(包含国家、省、市等属性)。维度是维度建模的基础和灵魂。

使用维度表的优势:

  • 缩小了事实表的大小
  • 便于维度的管理和维护,当更新维度属性的时候,不必对事实表进行改动
  • 维度表可以被多个事实表重用,减少重复工作

事实表和维度表的关系:

知识点整理:数据仓库_第2张图片


3. OLAP 和 OLTP 的区别

OLAP(On-Line Analysis Processing),联机分析处理,即从数据仓库中抽取数据进行分析。

OLTP(On-Line Transaction Processing),联机事务处理,即执行基本的、日常的事务处理,比如数据库的增删改查。

知识点整理:数据仓库_第3张图片


4. 数据仓库的基本架构

数据源 -> ETL -> 数据仓库存储与管理 -> OLAP -> BI 工具

数据源:主要包括存放于 RDBMS 中的各种业务处理数据和各类文档数据

BI 工具:即前端工具,基于数仓的分析工具


5. 数据库和数据仓库有什么区别?

  • 数据库是面向事务的,数据是由日常的业务产生的,经常更新;数据仓库是面向主题的,数据来源于数据库或者文件,经过一定的规则转换得到,用来分析的
  • 数据库一般用来存储实时的数据;数据仓库一般用来存储历史数据
  • 数据库适合小数据的实时查询;数据仓库适合大数据的历史查询
  • 数据库的设计一般是满足第三范式的,有利于数据的更新;数据仓库的设计一般是星型的,有利于查询

6. 数据仓库的分层

6.1 ODS 层

ODS(Operation Data Store)存储的是面向业务系统的数据,也是最接近数据源的一层。数据源的数据经过 ETL 后,首先会装入本层。

为了考虑后续可能追溯数据,因此这一层不用做过多的数据清洗工作,原封不动接入元数据即可,至于数据的去噪、去重、异常处理等过程可以放在后面的 DW 层


6.2 DW 层

DW(Data Warehouse)是数据仓库的核心,从 ODS 层中获得的数据按照主题建立各种数据模型。DW 又细分为:

① 数据明细层:DWD(Data Warehouse Detail)

该层一般保持和 ODS 层一样的数据粒度,并且进行数据清洗,将数据进行规范化处理

同时为了提高数据明细层的易用性,该层会采用一些维度退化手法,将维度退化到事实表中,减少事实表和维度表的关联。另外在该层也会做一部分的数据聚合,将相同主题的数据汇集到一张表中,提高数据的可用性

② 数据中间层:DWM(Data Warehouse Middle)

在 DWD 层的数据基础上,对数据做轻度的聚合操作,生成一系列的 中间表 提升公共指标的复用性,减少重复加工。直观来说,就是对通用的核心维度进行聚合操作,算出相应的统计指标

③ 数据服务层:DWS(Data Warehouse Service)

按照业务划分,例如流量、订单、用户等,生成字段比较多的宽表,用于后续的业务查询、OLAP 分析等。


6.3 ADS 层

ADS(Application Data Service)数据应用层,面向业务定制的应用数据。

比如理清业务方的需求后,盘点现有的数仓表是否可以支持,看以前有没有类似的需求。


7. 数据仓库为什么要进行分层?

数据仓库的分层其实是为了更好地去组织、管理和维护数据。

我们使用表的时候可以更方便地定位到某一层,然后去使用这一层表的数据。

并且由于规范了数据分层,开发了一些通用的中间层数据,能够减少极大地重复计算。


8. 星型模型和雪花模型的区别

星型模型:所有的维度表全都直接连到事实表上。

星型架构有一定的冗余,例如在 Adveertiser_dimension 表中,存在(id A ,name B ,address C) 以及(id A ,name B ,address D )两条记录,那么 id A 和 name B 的信息分别存储了两次,即存在冗余。当根据 id A 查询 name 的时候,会发现有多条数据,且 name 都是 B。

知识点整理:数据仓库_第4张图片

雪花模型:当有若干个维表没有直接连接到事实表上,而是通过其他维表连接到事实表上。

知识点整理:数据仓库_第5张图片

区别:

  • 效率:星型模型由于数据的冗余,很多查询不需要连接,所以一般效率比雪花模型高
  • 实现难度:星型模型实现难度比雪花模型更简单

你可能感兴趣的:(面经整理)