数据仓库是由外部多个数据源汇总集成的,“集成”这个词代表并不是简单的堆积,而是需要进行一些逻辑处理,数仓的集成就是这样,因为外部数据源都是异构的,所以需要做很多工作才可以进行集成,这些工作包括但不限于:字段的意义统一,轻度统计等。
抽取数据
有如下策略:
- 时间戳判断
- 扫描增量文件
- 日志文件,审计文件扫描
- 修改应用程序(很少使用)
- 映像文件扫描(很少使用)
另外,抽取的数据需要增加时间戳(必须的),存储到介质里面需要进行压缩。
数据模型
高层模型,实体关系图(Entity Relationship Diagram,ERD),主要目的是识别实体
中间层模型(DIS),识别实体中字段
物理模型,基于技术选型,做一些基于物理层配置;大多数情况下中间层和物理层模型一致,这个其实和DB Designer里面的三种模式向对应:高层,业务层以及物理层(高层我记不清叫什么名字了)。
元数据
包括不限于:
- 程序员所知道的DataSource相关内容;
- DSS分析人员所知道的DataSource相关内容;
- 数据进入到仓库的转换
- 数据模型
- 数据模型和数据仓库的关系
- 抽取数据的历史记录
时间间隔
并非越快越好,给数据一些修改的机会,一旦进了DW之后如果再想修改就难了。
关于ETL和ELT
这个话题比较有趣,很多大牛讲忽略他们的区别,但是他们区别还是比较大,关键就是在于T,即Transformation,数据的(变形)处理,比如数据类型的统一;ETL,这个数据处理是在进入到DW之前就做完了,使用的ETL的资源来做这件事情;ELT,则是在进入到DW之后,利用其它数据库工具来做数据处理(比如spark);所以他们的区别就是使用的资源节点不同。(下图参考“ETL与ELT的区别与联系”)

DW记录的触发
一个是业务活动,一个是时间,如果是前者一般将会实时触发,后者则是定时跑批
DW的一条记录(快照)是有如下部分组成:
- 时间
- 关键字
- 主要非关键字
- 二级数据
DW的有一种记录称之为概要记录,是一种粗粒度数据,会丢失一些细节,但是这些细节对于DSS人员而言并不重要;为了避免细节丢失,可以将这些细节放置到廉价的存储介质中,以备未来某个场景需要
星型结构
只适合于数据集市,所谓星型结构是指事实表作为中心表,事实表中每个字段都可以关联到一张维度表,之所以称之为维度表,是因为事实表中每个字段都是“一个维度”,描述一类信息的关键字,可以通过事实表中的维度辐射到具体维度的信息。
但是有一个一个问题:为什么星型结构只适合数据集市,而不是数据仓库呢?因为星型结构本身就是针对具体的业务来构建起来的,而数据仓库的结构不是为某个部门,某个业务,而是全局性的数据服务,所以星型结构并不适合数据仓库。
ODS
ODS,Operational Data Store,操作性数据存储,里面存储的都是概要性数据。ODS中数据有来自于操作型环境,还有来自于数据仓库分析的结果。
Zachman框架构建
zachman是构建数据仓库的架构