目录

​​一、数据仓库概述​​

​​1、什么是数据库?​​

​​2、什么是数据集市?​​

​​3、什么是数据仓库?​​

​​4、数据仓库特点​​

​​4.1 数据仓库是面向主题的​​

​​4.2 数据仓库是集成的​​

​​4.3 数据仓库的数据是稳定的​​

​​4.4 数据仓库中的数据是随时间变化而变化的​​

​​二、数据仓库分层​​

​​1、数据仓库为什么要分层,分层的优势。​​

​​三、数仓核心理论​​

​​1、范式理论​​

​​1.1 范式概念​​

​​2、数据仓库建模:关系建模与维度建模​​

​​2.1 关系建模​​

​​2.2 维度建模​​

​​2.3 模型选择​​


一、数据仓库概述

首先,我们先来看下数据库、数据集市以及数据仓库的概念

1、什么是数据库?

数据库(Database)是按照一定格式和数据结构在计算机保存数据的软件,属于物理层。

2、什么是数据集市?

数据集市是一种微型的数据仓库,它通常是有更少的数据,更少的主题区域,以及更少的历史数据,如果数据仓库是企业级的,那数据集市就是部门级的,一般数据集市只能为某个局部范围内的管理人员服务。

3、什么是数据仓库?

数据仓库(Data Warehouse),可简写为DW或DWH。它是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合。它是单个数据存储,出于分析性报告和决策支持目的而创建。为需要业务智能的企业,提供指导业务流程改进、监视时间、成本、质量以及控制。 

数据仓库存在的意义在于对企业的所有数据进行汇总,为企业各个部门提供统一的, 规范的数据出口。

4、数据仓库特点

4.1 数据仓库是面向主题的

数据仓库中的数据是按照一定的主题域进行组织的,每一个主题对应一个宏观的分析领域。数据仓库排除对于决策无用的数据,提供特定主题的简明视图。

举个例子:

比如说一个公司会有很多的部门,不同的部门都会去数据仓库拿数据,做自己要做的报表,我们把这一个部门或是某一个业务,也就是独立从我们数据仓库中获取数据的单元,把它称作为主题,也可以理解为一个主题就是一个部门。这个部门作为一个主题会从数据仓库总去获取数据,用于完成需要的报表。

4.2 数据仓库是集成的

数据仓库中的数据不是一开始就是在里面的,而是从各个分散的数据库中抽取出来的。但是有一个问题,就是这些来自不同数据库的数据会有重复和不一样的地方,如字段的同名异议、异名同义、单位不统一,字长不统一等。所以在集成的过程中,还要对数据进行清洗、规划、去敏等操作。

一句话就是,数据仓库是对企业内不同业务部门数据完整集合,而且还是处理过的数据。

4.3 数据仓库的数据是稳定的

数据仓库中的数据主要是为了给企业做决策时分析使用,涉及的主要是对数据的查询,一般情况下不会对数据进行修改,如果数据仓库中的历史数据超过存储期限,则会直接删除。

因为数据仓库涉及的操作主要是查询,所以它的系统要比数据库简单很多,但是数据仓库涉及到查询的数据量一般都很大,所以在数据查询就有更高的要求。

一句话记忆,数仓里不存在数据的更新和删除(不是指数据到期的删除)操作。

4.4 数据仓库中的数据是随时间变化而变化的

数据仓库中的数据不可更新是针对应用来说的,也就是说,数据仓库的用户进行分析处理是不进行数据更新操作的。但并不是说,在从数据集成输入数据仓库开始到最后被删除的整个生存周期中,所有的数据仓库数据都是永远不变的。

数据仓库的数据是随着时间变化而变化的主要表现如下:

1)数据仓库随着时间变化不断增加新的数据内容。数据仓库系统必须不断捕捉OLTP数据库中变化的数据,追加到数据仓库当中去,也就是要不断的生成OLTP数据库的快照,经统一集成增加到数据仓库中去;但对于确实不在变化的数据库快照,如果捕捉到新的变化数据,则只生成一个新的数据库快照增加进去,而不会对原有的数据库快照进行修改。

2)数据库随着时间变化不断删去旧的数据内容 。数据仓库内的数据也有存储期限,一旦过了这一期限,过期数据就要被删除。

3)数据仓库中包含有大量的综合数据,这些综合数据中很多跟时间有关,如数据经常按照时间段进行综合,或隔一定的时间片进行抽样等等。这些数据要随着时间的变化不断地进行从新综合。因此数据仓库的数据特征都包含时间项,以标明数据的历史时期。

一句话理解,数仓里会完整的记录某个对象在一段时期内的变化情况。

二、数据仓库分层

1、数据仓库为什么要分层,分层的优势。

1)把复杂问题简单化

将复杂的问题分解成多层来完成,每一次只处理简单的任务,方便定位问题。

2)减少重复开发

规范数据分层,通过的中间层数据,能够减少极大的重复计算,增加一次计算结果的复用性。

3)隔离原始数据

不论是数据的异常还是数据敏感度,使真实数据与统计数据解耦开。

数据仓库基础分层主要是分为四层,如下图所示

数据仓库面试&学习总结_建模

如上图所示,一个公司可能有多个业务系统,而数据仓库就是将所有的业务系统按照某种组织架构整合起来,形成一个仓储平台,也就是数仓。

第一层:

ODS——原始数据层:存放原始数据

第二层:

DWD——数据明细层:对ODS层数据进行清洗、维度退化、脱敏等。

第三层:

DWS——数据汇总层: 对DWD层数据进行一个轻度的汇总。

第四层:

DM——数据集市层:为各种统计报表提供数据。

注意:面试问到数仓分层,可以回答是四层,但是也一定要说是会根据企业实际情况来决定的。

三、数仓核心理论

1、范式理论

1.1 范式概念

1)定义

范式可以理解为设计一张数据表的表结构,符合的标准级别,也就是规范和要求。

2)优点

关系型数据库设计时,遵照一定的规范要求,目的在于降低数据的冗余性

3)缺点

范式的缺点是获取数据时,需要通过Join拼接出最后的数据。

4)分类

目前业界范式有:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)、第五范式(5NF)。

主要是1NF、2NF和3NF。

2、数据仓库建模:关系建模与维度建模

数据仓库建模的目标是通过建模的方法更好的组织、存储数据,以便在性能、成本、效率和数据质量之间找到最佳平衡点。

现在数据处理大致可以分为两大类:

操作型处理,叫联机事务处理 OLTP(On-Line Transaction Processing),也可以称面向交易的处理系统,它是针对具体业务在数据库联机的日常操作,通常对少数记录进行查询、修改。用户较为关心操作的响应时间、数据的安全性、完整性和并发支持的用户数等问题。传统的数据库系统作为数据管理的主要手段,主要用于操作型处理。

分析型处理,叫联机分析处理 OLAP(On-Line Analytical Processing)一般针对某些主题的历史数据进行分析,支持管理决策。

OLTP与OLAP的主要异同如下表:

数据仓库面试&学习总结_建模_02

2.1 关系建模

数据仓库面试&学习总结_数据仓库_03

关系模型如图所示,严格遵循第三范式,从图中可以看出,较为松散、零碎,物理表数量多,而数据冗余程度低。由于数据分布于众多的表中,这些数据可以更为灵活地被应用,功能性较强。关系模型主要应用与OLTP系统中,为了保证数据的一致性以及避免冗余,所以大部分业务系统的表都是遵循第三范式的

2.2 维度建模

数据仓库面试&学习总结_建模_04

维度模型如图所示,主要应用于OLAP系统中,通常以某一个事实表为中心进行表的组织,主要面向业务,特征是可能存在数据的冗余,但是能方便的得到数据。

关系模型虽然冗余少,但是在大规模数据,跨表分析统计查询过程中,会造成多表关联,这会大大降低执行效率。所以一般都会采用维度模型建模,把相关各种表整理成两种:事实表和维度表两种。

在维度建模的基础上又可分为三种模型:星型模型、雪花模型、星座模型。

1)星型模型

数据仓库面试&学习总结_数据_05

星型模式是维度模型中最简单的形式,也是数据仓库以及数据集市开发中使用最广泛的形式。星型模式由事实表和维度表组成,一个星型模式中可以有一个或多个事实表,每个事实表引用任意数量的维度表。

星型模型与雪花模型的区别主要在于维度的层级,标准的星型模型维度只有一层,而雪花模型可能会涉及多层。

2)雪花模型

数据仓库面试&学习总结_大数据_06

雪花模式是一种多维模型中表的逻辑布局,与星型模式相同,雪花模式也是由事实表和维度表所组成。所谓的“雪花化”就是将星型模型中的维度表进行规范化处理。当所有的维度表完成规范化后,就形成了以事实表为中心的雪花型结构,即雪花模式。

3)星座模型

数据仓库面试&学习总结_大数据_07

数据仓库由多个主题构成,包含多个事实表,而维表是公共的,可以共享(例如两张事实表共用一些维度表时,就叫做星型模型),这种模式可以看做星型模式的汇集,因而称作星系模式或者事实星座模式。

2.3 模型选择

在数据仓库建模时,会涉及到模式的选择,我们要根据不同模式的特点选择适合具体业务的模式。

星型还是雪花,取决于性能优先,还是灵活更优先。

在实际开发中,不会绝对选择一种,根据情况灵活组合,甚至并存(一层维度和多层维度都保存)。但是整体看来,更倾向于维度更少的星型模型。