缓慢变化维
- 重写维度
- 插入新的维度(一般是有效时间)
- 添加维度列
数据库 三范式
- 如果每列都是不可再分的最小数据单元(也称为 最小的原子单元),则满足第一范式(1NF)
- 如果一个关系满足第一范式(1NF)的同时,并且除了主键以外的其他列,都依赖与该主键,则满足第二范式(2NF)。并且我们要求每张表只描述一件事情
- 如果一个关系满足第二范式(2NF),并且除了主键以外的其他列 都不传递依赖于主键列,则满足第三范式(3NF)
数据库和数据仓库有什么区别?
关系型数据库理论是大数据领域建模的基础
- 关系型数据库是面向事务的,数据是由日常的业务产生的,常更新;数据仓库是面向主题的,数据来源于数据库或文件,经过一定的规则转换得到,用来分析的。
- 关系型数据库一般是用来存储当前数据,数据仓库存储一般存储的是历史数据。
- 数据库的设计一般是符合三范式的,有最大的精确度和最小的冗余度,有利于数据的增删改查; 数据仓库的设计一般是星型的,有利于查询。
数据仓库范式建模与维度建模:
范式建模:
设计思路自上而下,适合上游基础数据存储,同一份数据只存储一份,没有数据冗余,方便解耦,易维护,缺点是开发周期一般比较长,维护成本高
维度建模:
设计思路是自下而上,适合下游应用数据存储,适合统计多层次维度的汇总,开发周期短,缺点是维护成本高
范式建模
Inmon提出的集线器的自上而下(EDW-DM)的数据仓库架构。操作型或事务型系统的数据源,通过ETL抽取转换和加载到数据仓库的ODS层,然后通过ODS的数据建设原子数据的数据仓库EDW,EDW不是多维格式的,不方便上层应用做数据分析,所以需要通过汇总建设成多维格式的数据集市层。优势:易于维护,高度集成;劣势:结构死板,部署周期较长
范式建模应用在dwd明细层
一个符合第三范式的关系必须具有以下三个条件:
- 每个属性的值唯一,不具有多义性;
- 每个非主属性必须完全依赖于整个主键,而非主键的一部分;
- 每个非主属性不能依赖于其他关系中的属性,因为这样的话,这种属性应该归到其他关系中去。
但是由于EDW的数据是原子粒度的,数据量比较大,完全规范的3范式在数据的交互的时候效率比较低下,所以通常会根据实际情况在事实表上做一些冗余,减少过多的数据交互。
维度建模
Kimball提出的总线式的自下而上(DM-DW)的数据仓库架构。同样的,操作型或事务型系统的数据源,通过ETL抽取转换和加载到数据仓库的ODS层,然后通过ODS的数据,利用维度建模方法建设一致维度的数据集市。通过一致性维度可以将数据集市联系在一起,由所有的数据集市组成数据仓库。优势:构建迅速,最快的看到投资回报率,敏捷灵活;劣势:作为企业资源不太好维护,结构复杂,数据集市集成困难。
星型模型(推荐)和雪花模型


在复合式的数据仓库架构中,操作型或事务型系统的数据源,通过ETL抽取转换和加载到数据仓库的ODS层,然后通过ODS的数据,利用范式建模方法,建设原子数据的数据仓库EDW,然后基于EDW,利用维度建模方法建设数据集市。
业界内常用的模型实施过程
kimball
Kimball 的模型是自底向上的,即从数据集市-> 数据仓库 -> 分散异构的数据源。
1)Kimball 的模型的数据源往往是给定的若干个数据库表,数据较为稳定但是数据之间的关联关系比较复杂,需要从这些OLTP中产生的事务型数据结构抽取出分析型数据结构。Kimball 是以最终任务为导向,将数据按照目标拆分出不同的表需求,通过ETL导入数据集市层
2)Kimball模型将分散异构的数据源经ETL转化为事实表和维度表导入数据集市,数据集市由若干个事实表和维度表组成
3)在数据集市将事实表和维度表根据分析主题组合后导入数据仓库中,用于数据分析
Inmon
Inmon 的模型从流程上看是自顶向下的,即从分散异构的数据源 -> 数据仓库 -> 数据集市。
1)操作型系统的数据和体系外数据需要经过ETL过程,加载到企业数据仓库中
2)企业数据仓库是企业信息化工厂的枢纽,是原子数据的集成仓库,其目的是将附加的数据存储用于各类分析型系统;在数据仓库中会对数据进行清洗,并抽取实体-关系。
3)数据集市是针对不同主题的聚集区域
数据调研
业务调研:了解各个业务域/业务线的业务有什么共同点和不同点,以及各个业务线可以细分为那几个业务模块,每个业务模块具体的业务流程是怎样的。
需求调研:根据与分析师/业务运营人员的沟通;对报表系统中现有报表进行研究分析
架构设计
数据域划分/主题域划分
构建总线矩阵,明确每个数据域下面有哪些业务过程,业务过程与哪些维度相关,并定义每个数据域下的业务过程和维度。
规范定义
规范定义主要定义指标体系,包括原子指标/修饰词/时间周期/派生指标
模型设计
维表/明细事实表/汇总事实表