一、数据仓库的架构设计

1、数据结构

架构原则:先水平分层,再垂直分主题域。
数据架构分三层
	源数据落地区(SDF:Source Data File)
	数据仓库层(DW:Data WareHouse)
	数据集市层(DM:Data Market)
数据仓库层进一步细分为三层
	源数据层(DWB)
	细节数据层(DWD)
	汇总数据层(DWS)

数据仓库的构建模式有 数据仓库的构造模式_数据

2、数据仓库水平划分,分层介绍

数据仓库的构建模式有 数据仓库的构造模式_数据_02

3、垂直划分,按主题划分

数据仓库的构建模式有 数据仓库的构造模式_数据_03

二、数据仓库建模

范式建模法

· 范式建模法其实是我们在构建数据模型时常用的方法之一。
	· 主要解决关系型数据库的数据存储,我们在关系型数据库中的建模方法,大部分采用的是三范式建模法。
	· 数据库六大范式说明
		· 第一范式—1NF:原子不可切分,无重复的列,列不可再拆分。
		· 第二范式—2NF:要有主键,属性完全依赖于主键
		· 第三范式—3NF:不要出现依赖传递,属性不依赖于其他非主属性,即属于依赖于主键不能出现传递依赖。
		· 巴斯—科德范式(BCNF),第四范式(4NF),第五范式(5NF,又称完美范式)。
	· 特别说明:
		· 范式建模优点:
			· 从关系型数据库的角度出发,结合了业务系统的数据模型,能够比较方便的实现数据仓库的建模。
		· 范式建模的缺点:
			· 其建模方法限定在关系型数据库上,在有些时候(需要冗余的时候)反而限制了整个数据仓库模型的灵活性,性能等,特别是考虑到数据仓库的底层数据向数据集市的数据进行汇总时,需要灵活调整才能达到要求。
	· 使用建议:当不需要冗余设计提高易用性和计算效率时,可以采用这种模式。(常见的即为web项目开发中)

· 维度建模

· 即按照实事表,维度表来构建数据仓库,即最被人广泛知晓的名字就是星型模型(Start—schema)和雪花模型(Snowflake—schema)。
	· 重要概念说明
		· 事实表:发生在某个时间点上的一个事件,即具体的实体内容。比如以电商订单为例:下单是一个事实,付款是一个事实,退款是一个事实,所有事实的累计形成的表,均为事实表。
		· 维度表:是从事实表中抽离出来的分析粒度。
		· 维度表可以看作是用户来分析数据的窗口(视角),维度表中包含事实数据表中事实记录的特性,有些特性提供描述性信息,有些特性指定如何汇总事实数据表数据,以便为分析者提供有用的信息。

· 星型建模法

· 定义:维度表全部直接关联到事实表中,其形状类似星星,故称之
		· 举例说明(销售类数据仓库构建)
		· 如在地域维度表中,存在国家A省B的城市C,及国家A省B的城市D两条记录,那么国家A和省B的信息分别存储了两次,即存在冗余。

数据仓库的构建模式有 数据仓库的构造模式_数据_04


数据仓库的构建模式有 数据仓库的构造模式_建模_05

· 雪花建模法

· 定义:
		· 维度表并非全部关联到事实表中,存在一个或多个表没有直接关联到事实表中时,其形状类似雪花,故称之。
	· 举例如上:
		· 将地域维表又分解为国家,省份,城市等维表。
		· 优点是通过最大限度地减少数据存储量以及联合较小的维表来改善查询性能。雪花型结构去除了数据冗余。

数据仓库的构建模式有 数据仓库的构造模式_数据_06

· 关于星形和雪花模型进行维度建模的对比说明

· 定义
	· 星形模型:维度表全部直接关联到事实表中,其形状类似星星,故称之。
	· 雪花模型:维度表并非全部关联到事实表中,存在一个或多个没有直接关联到事实表中时,其形状类似雪花,故称之。
· 相同点
	· 雪花模型属于星型模型的扩展,属于星形模型。
	· 都是围绕事实表,维度表展开模型构建,只是层次设计不尽相同。
· 差异点
	· 星型架构的设计由于没有像现实世界中的抽象情况进行层级依赖,所以是一种非正规化的结构,多维数据集的每一个维度都直接与事实表相连接,不存在渐变维度,所以数据有一定的冗余设计。
	· 雪花模型是对星型模型的扩展。他对星型模型的维表进一步层次化,原有的各维表可能被扩展为小的事实表,形成一些局部的“层次”区域,这些被分解的表都连接到主维表而不是事实表。
· 对比总结说明
	· 数据规范性:雪花胜于星型。
	· 性能:雪花的表关联较多,并行性和计算性能上往往会低于星型。
	· ETL开发:雪花关系多则关联多,代码量较复杂一些。而星型数据较集中,关联少,代码量少一些。
	· 实际使用,两者应用的均比较多,但星型略胜一筹。

· 关于维度建模法的总结说明:

· 广泛被使用的原因:在于针对各个维作了大量的预处理,如按照维进行预先的统计,分类,排序等,能够极大的提升数据仓库的处理能力。
· 维度建模优点
	· 由于其可以有必要合理的冗余和其他范式建模的严格限制,相对于针对3NF的建模方法,星型模式在性能上占据明显的优势。
	· 维度建模非常直观,紧紧围绕着业务模型,可以直观的反映出业务模型中的业务问题。不需要经过特别的抽象处理,即可以完成维度建模。
· 维度建模缺点
	· 由于在构建星型模式之前需要进行大量的数据预处理,会带来大量的数据处理工作。
	· 业务发生变化后,往往需要更新维度的预处理。
	· 存储和处理过程中,数据冗余量较大。
	· 依靠维度建模的话,其维度必然会且维护成本增大,不能保证数据来源的一致性和准确性,而且在数据仓库的底层,不是特别适用于维度建模的方法。
	· 使用建议:在数据架构设计中的细节数据层,汇总数据层,数据集市层等需要提升计算性能的时候,均可以使用,也是建模过程中逻辑建模阶段最常用的方法之一。(常用于数据仓库模型设计)