目录

数据仓库面试

介绍一下什么叫维度数据模型

https://www.jianshu.com/p/17baa9f96ca7

面向最终用户。维度数据模型是围绕事实和维度两个维度模型来设计的,事实表示业务数据的度量,而维度是观察数据的角度。

什么是一致性维度

维度模型按照业务流程领域即主题域,例如进货、销售、库存、配送等。不同的主题可能共享某些维度,为了提高数据操作的性能和数据一致性,需要使用一致性维度,几个主题域。

什么叫数据仓库

数据仓库是一个面向主题的(Subject Oriented)、集成的(Integrate)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合,它用于支持企业或组织的决策分析处理。

数据仓库是为了便于多维分析和多角度展现而将数据按特定的模式进行存储所建立起来的关系型数据库,它的数据基于 OLTP 源系统。

  1. 首先,用于支持决策,面向分析型数据处理,它不同于企业现有的操作型数据库
  2. 其次,对多个异构的数据源有效集成,集成后按照主题进行了重组,并包含历史数据,而且存放在数据仓库中的数据一般不再修改

数据仓库的基本架构是什么

数据仓库系统体系结构

1.数据源-> 2.ETL -> 3.数据仓库存储与管理-> 4.OLAP -> 5.BI工具

  1. 数据源: 是数据仓库系统的数据源泉,通常包括企业各类信息,包括存放于 RDBMS 中的各种业务处理数据和各类文档数据;各类法律法规、市场信息和竞争对手的信息等等
  2. 数据的存储与管理: 数据的存储和管理是整个数据仓库的核心,是关键。数据仓库的组织管理方式决定了它有别于传统数据库,同时也决定了其对外部数据的表现形式。从数据仓库的技术特点着手分析,来决定采用什么产品和技术来建立数据仓库,然后针对现有各业务系统的数据,进行抽取、清理,并有效集成,按照主题进行组织。数据仓库按照数据的覆盖范围可以分为企业级数据仓库和部门级数据仓库(通常称为数据集市)
  3. OLAP服务器: 对需要的数据进行有效集成,按多维模型予以组织,以便进行多角度、多层次的分析,并发现趋势。其具体实现可以分为: ROLAP(关系型在线分析处理)、MOLAP(多维在线分析处理)和HOLAP(混合型线上分析处理)。ROLAP基本数据和聚合数据均存放在RDBMS之中;MOLAP基本数据和聚合数据均存放于多维数据库中;HOLAP基本数据存放于RDBMS之中,聚合数据存放于多维数据库中
  4. 前端工具: 主要包括各查询工具、数据分析工具、数据挖掘工具、种报表工具以及各种基于数据仓库或数据集市的应用开发工具
  5. 数据分析工具主要针对 OLAP 服务器。报表工具、数据挖掘工具主要针对数据仓库

数据库和数据仓库有什么区别

  1. 数据库是面向事务的,数据是由日常的业务产生的,常更新;数据仓库是面向主题的,数据来源于数据库或文件,经过一定的规则转换得到,用来分析的
  2. 数据库一般是用来存储当前交易数据,数据仓库存储一般存储的是历史数据
  3. 数据库的设计一般是符合三范式的,有最大的精确度和最小的冗余度,有利于数据的插入
  4. 数据仓库的设计一般是星型的,有利于查询  

构建企业级数据仓库五步法

  1. 确定主题: 即确定数据分析或前端展现的主题(例:某年某月某地区的啤酒销售情况)。主题要体现出某一方面的各分析角度(维度)和统计数值型数据(量度)之间的关系,确定主题时要综合考虑
  2. 确定量度: 确定主题后,需要考虑分析的技术指标(例:年销售额等等)。它们一般为数据值型数据,其中有些度量值不可以汇总;些可以汇总起来,以便为分析者提供有用的信息。量度是要统计的指标,必须事先选择恰当,基于不同的量度可以进行复杂关键性指标(KPI)的设计和计算
  3. 确定事实数据粒度: 确定量度之后,需要考虑该量度的汇总情况和不同维度下量度的聚合情况.例如在业务系统中数据最小记录到秒,而在将来分析需求中,时间只要精确到天就可以了,在ETL处理过程中,按天来汇总数据,些时数据仓库中量度的粒度就是”天”。如果不能确认将来的分析需求中是否要精确的秒,那么,我们要遵循”最小粒度原则”,在数据仓库中的事实表中保留每一秒的数据,从而在后续建立多维分析模型(CUBE)的时候,会对数据提前进行汇总,保障产生分析结果的效率
  4. 确定维度: 维度是分析的各个角度。我们希望按照时间,或者按照地区,或者按照产品进行分析。那么这里的时间,地区,产品就是相应的维度。基于不同的维度,可以看到各个量度汇总的情况,也可以基于所有的维度进行交叉分析。 维度的层次(Hierarchy)和级别(Level)。例:在时间维度上,按照”度-季度-月”形成了一个层次,其中”年” ,”季度” ,”月”成为了这个层次的3个级别。我们可以将“产品大类-产品子类-产品”划为一个层次,其中包含“产品大类”、“产品子类”、“产品”三个级别。 我们可以将3个级别设置成一张数据表中的3个字段,比如时间维度;我们也可以使用三张表,分别保存产品大类,产品子类,产品三部分数据,比如产品维度。 建立维度表时要充分使用代理键.代理键是数据值型的ID号码(每张表的第一个字段),它唯一标识了第一维度成员。在聚合时,数值型字段的匹配和比较,join效率高。同时代理键在缓慢变化维中,起到了对新数据与历史数据的标识作用
  5. 创建事实表: 在确定好事实数据和维度后,将考虑加载事实表。业务系统的的一笔笔生产,交易记录就是将要建立的事实表的原始数据. 我们的做法是将原始表与维度表进行关联,生成事实表。关联时有为空的数据时(数据源脏),需要使用外连接,连接后将各维度的代理键取出放于事实表中,事实表除了各维度代理键外,还有各度量数据,不应该存在描述性信息。 事实表中的记录条数据都比较多,要为其设置复合主键各蛇引,以实现数据的完整性和基于数据仓库的查询性能优化

元数据

描述数据及其环境的数据。两方面用途:

  1. 首先,元数据能提供基于用户的信息,如记录数据项的业务描述信息的元数据能帮助用户使用数据
  2. 其次,元数据能支持系统对数据的管理和维护,如关于数据项存储方法的元数据能支持系统以最有效的方式访问数据

元数据机制主要支持以下五类系统管理功能: (1)描述哪些数据在数据仓库中; (2)定义要进入数据仓库中的数据和从数据仓库中产生的数据; (3)记录根据业务事件发生而随之进行的数据抽取工作时间安排; (4)记录并检测系统数据一致性的要求和执行情况; (5)衡量数据质量。

ODS: Operational Data Store

  1. ODS为企业提供即时的,操作型的,集成的数据集合,具有面向主题性,集成性,动态性,即时性,明细性等特点
  2. ODS作为数据库到数据仓库的一种过渡形式,与数据仓库在物理结构上不同,能提供高性能的响应时间,ODS设计采用混合设计方式
  3. ODS中的数据是"实时值",而数据仓库的数据却是"历史值",一般ODS中储存的数据不超过一个月,而数据仓库为10年或更多

Data Mart 数据集市

为了特定的应用目的或应用范围,而从数据仓库中独立出来的一部分数据,也可称为部门数据或主题数据(subjectarea)。在数据仓库的实施过程中往往可以从一个部门的数据集市着手,以后再用几个数据集市组成一个完整的数据仓库。需要注意的就是在实施不同的数据集市时,同一含义的字段定义一定要相容,这样再以后实施数据仓库时才不会造成大麻烦。

DDS(decision-support system)决策支持系统

用于支持管理决策的系统。通常,DSS包括以启发的方式对大量的数据单元进行的分析,通常不涉及数据更新。

什么叫OLAP?用途是什么?

联机分析处理,On-Line Analysis Processing 即从数据仓库中抽取详细数据的一个子集并经过必要的聚集,存储到OLAP存储器中供前端分析工具读取。

OLAP系统按照数据存储格式可以分为关系OLAP(RelationalOLAP,简称ROLAP)、多维OLAP(MultidimensionalOLAP,简称MOLAP)和混合型OLAP(HybridOLAP,简称HOLAP)三种类型。

  1. ROLAP将分析要用的多维数据存储在关系数据库中,并根据应用的需要有选择的定义一批实视图也存储在关系数据库中
  2. MOLAP将OLAP分析所要用到的多维数据物理上存储为多维数组的形式,形成“立方体”的结构。
  3. HOLAP能把MOLAP和ROLAP两种结构的优点有机的结合起来,能满足用户各种复杂的分析请求。

OLTP 与 OLAP 的区别

特性 OLTP OLAP
用户 操作人员 决策人员
功能 日常操作 分析决策
DB设计 面向应用 面向主题
数据 当前的,最新的,细节的,二维的 历史的,概括的,多维集成的,统一的
存取及规模 读取少 大规模读

事实表

事实表是包含大量数据值的一种结构。事实数据表可能代表某次银行交易,包含一个顾客的来访次数,并且这些数字信息可以汇总,以提供给有关单位作为历史的数据。

每个数据仓库都包含一个或者多个事实数据表。事实数据表只能包含数字度量字段和使事实表与维度表中对应项的相关索引字段,该索引包含作为外键的所有相关性维度表的主键。

事实数据表中的“度量值”有两中:一种是可以累计的度量值,另一种是非累计的度量值。用户可以通过累计度量值获得汇总信息。

维度表

用来描述事实表的某个重要方面,维度表中包含事实表中事实记录的特性:有些特性提供描述性信息,有些特性指定如何汇总事实数据表数据,以便为分析者提供有用的信息,维度表包含帮助汇总数据的特性的层次结构。

缓慢变化维:

在实际情况下,维度的属性并不是静态的,它会随着时间的流失发生缓慢的变化

处理方法:

  1. 新信息直接覆盖旧信息
  2. 保存多条记录,并添加字段加以区分(用y,n;0,1,2或用时间来区别新旧记录)
  3. 保存多条记录,并添加字段加以区分
  4. 另外建表保存历史记录
  5. 混合模式

退化维:

一般来说事实表中的外键都对应一个维表,维的信息主要存放在维表中。但是退化维仅仅是事实表中的一列,这个维的相关信息都在这一列中,没有维表与之相关联。比如:发票号,序列号等等。那么退化维有什么作用呢?

  1. 退化维具有普通维的各种操作,比如: 上卷,切片,切块等(上卷汇总,下钻明细;切片,切块:对二维数据进行切片,三维数据进行切块,可得到所需要的数据)
  2. 如果存在退化维,么在ETL的过程将会变得容易
  3. 它可以让group by等操作变得更快

粒度:(granularity)

是指数据仓库的数据单位中保存数据的细化或综合程度的级别,细化程度越高,粒度就越小。

维度建模(dimensional modeling)

是数据仓库建设中的一种数据建模方法。按照事实表,维表来构建数据仓库,数据集市。这种方法最被人广泛知晓的名字就是星型模式(Star-schema)

什么叫查找表,为什么使用替代键?(其实目的和上面一样,从基础表到缓慢维度表的过程中的一种实现途径)。

替代键(alternate key)可以是数据表内不作为主键的其他任何列,只要该键对该数据表唯一即可。换句话说,在唯一列内不允许出现数据重复的现象。

数据仓库项目最重要或需要注意的是什么,以及如何处理?数据质量,主要是数据源数据质量分析,数据清洗转换,当然也可以定量分析。

数据仓库有两个重要目的,一是数据集成,二是服务BI

数据准确性是数据仓库的基本要求,而效率是项目事实的前提,数据质量、运行效率和扩展性是数据仓库项目设计、实施高明与否的三大标志;

代理键:

在关系型数据库设计中,是在当资料表中的候选键都不适合当主键时,例如资料太长,或是意义层面太多,就会用一个attribute来当代理主键,此主键可能是用流水号,来代替可辨识唯一值的主键。

在数据仓库领域有一个概念叫Surrogate key,中文一般翻译为“代理关键字”。代理关键字一般是指维度表中使用顺序分配的整数值作为主键,也称为“代理键”。代理关键字用于维度表和事实表的连接。可以避免通过主键的值就可以了解一些业务信息。

星型模型和雪花型模型比较

https://blog.csdn.net/nisjlvhudy/article/details/7889422

数仓模式有几种类型

数仓模型包括关系模型,多维模型和 Data Vault 模型。

关系模型和多维模型有什么异同点

https://www.cnblogs.com/lcword/p/5630804.html

数据仓库中广泛采用的数据库设计模型有两种:关系型和多维型。普遍认为在数据仓库的设计方法中关系模型是“Inmon”方法而多维模型是“Kimball”方法。

先来看下关系模型,关系型数据以一种称为“标准化”的形式存在。数据标准化是指数据库设计会使数据分解成非常低的粒度级,标准化数据以一种孤立模式 存在,这种情况下对数据表里的数据关系要求很严格。一般遵循3NF范式。采用关系型设计的数据库一般具有较强的灵活性和多功能性(可以支持数据的多种视 图)。

再来看下多维模型,多维模型一般有星型模式、雪花模式、混杂模式(又叫星系模式)。多维模型设计的最大优点在于访问的高效性。

作为数据仓库设计的基础,星形连接和关系型结构两者之间存在很多不同。最重要的区别是在灵活性和性能方面。关系模型具有高灵活性,但是对用户来说在性能方面却不是很理想的。多维模型在满足用户需求方面是非常高效的,但是灵活性不好。

另一重要区别在于设计的范围不同。必然地,多维设计只能在有限的范围内进行,也就是说,数据库设计只能在一组请求过程下得到最优化。如果所有不同组请求全部加入到设计当中,最优化变得毫无意义。

当使用关系模型时,在性能方面没有特别的优化方法。既然关系模型要求数据以最低粒度级存储,那么就可以无限制地添加新数据。很显然,添加数据到关系 模型永远也不会停止。正因为这样,关系模式适合大范围数据(如一个企业模型),而多维模型适用于小范围数据(如一个部门或甚至一个子部门)。

独立集市和从属集市的区别

独立集市是指直接通过历史应用创建的数据集市。建立独立数据集市不需要有“全局思想”考虑。

与独立数据集市相对应的是从属数据集市。从属数据集市是利用来自数据仓库的数据建立的。它的数据源不依赖与历史数据或操作型数据,只依赖于数据仓库。总之,从属数据集市要求有预先的计划、长期的观察、全局的分析和企业各不同部门对需求分析的合作与协调。

建立多个独立数据集市后,很快用户就会发现数据集市之间的信息不统一,也不同步,而且每增加一个数据集市就会出现不断增长的细节数据冗余的问题,需要大量的资源来建立接口程序,维护这些程序也变成了负担。因此独立数据集市不适合与解决企业中的信息问题

当然,如果企业采用了从属数据集市,并在建立任何数据集市之前先创建了一个数据仓库,那么,独立数据集市固有的哪些体系结构方面的问题就不会出现了。

换句话说,独立数据集市表示的是不需要顾及全局及全景的一个短期的、有限范围的解决方法。另一方面,从属数据集市则要求一个长期和全局的展望。但是独立数据集市不能为企业信息提供一个坚实的基础,而从属数据集市确能为信息决策提供了一个真正的长期基础。

星形模型与雪花模型的区别

  1. 星星的中心是一个大的事实表,发散出来的是维度表,每一个维度表用一个PK-FK连接到事实表,维度表之间彼此并不关联。一个事实表又包括一些度量值和维度。
  2. 雪花模型通过规范维度表来减少冗余度,也就是说,维度表数据已经被分组成一个个的表而不是使用一个大表。例如产品表被分成了产品大类和产品小类两个表。尽管这样做可以节省了空间,但是却增加了维度表的数量和关联的外键的个数。这就导致了更复杂的查询并降低了数据库的效率
警告
本文最后更新于 2017年2月1日,文中内容可能已过时,请谨慎参考。