大数据学习---数据仓库概述2

1 表的分类

维度建模中的表类型

事实表
维度表
事务事实表
周期快照事实表
累计快照事实表

1.1事实表

一般是指一个现实存在的业务对象,比如用户,商品,商家,销售员等
在这里插入图片描述

1.2维度表

一般是指对应一些业务状态,代码的解释表。也可以称为码表
通常使用维度对事实表中的数据进行统计、聚合运算
在这里插入图片描述

1.3事务事实表

随着业务不断产生的数据,一旦产生不会再变化,如交易流水、操作日志、出库入库记录
![在这里插入图片描述](https://img-blog.csdnimg.cn/b092ed9c1a314d579b5dc7243fd9cafe.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbm93b3JsZGxpbmc=,size_20,color_FFFFFF,t_70,g_se,x_16

1.4周期快照事实表

随着业务周期型的推进而变化,完成间隔周期内的度量统计,如年、季度累计
使用周期+状态度量的组合,如年累计订单数,年是周期,订单总数是量度
在这里插入图片描述

1.5累计快照事实表

记录不确定周期的度量统计,完全覆盖一个事实的生命周期,如订单状态表
通常有多个时间字段,用于记录生命周期中的关键时间点
只有一条记录,针对此记录不断更新
在这里插入图片描述
累计快照事实表的实现:
方案1:
使用日期分区表,全量数据记录,每天的分区存储昨天全量数据与当天增量数据合并的结果
数据量大会导致全量表膨胀,存储大量永远不更新的冷数据,对性能影响比较大
适用于数据量少的情况

方案2:
使用日期分区表,推测数据最长生命周期,存储周期内数据;周期外的冷数据存储到归档表
需要保留多天的分区数据,存储消耗依然很大

方案3:
使用日期分区表,以业务实体的结束时间分区,每天的分区存放当天结束的数据;设计一个时间非常大的分区,如9999-12-31,存放截止当前未结束的数据
已结束的数据存放到相应分区,存放未结束数据的分区,数据量也不会很大,ETL性能好
无存储浪费,数据全局唯一
业务系统可能无法标识业务实体的结束时间,可以使用其他相关业务系统的结束标志作为此业务系统的结束,也可以使用最长生命周期时间或前端系统的数据归档时间

1.6拉链表

拉链表记录每条信息的生命周期,用于保留数据的所有历史状态
拉链表将表数据的随机修改方式,变为顺序追加

在这里插入图片描述

2 ETL策略

2.1 全量同步

数据初始化装载一定使用全量同步的方式
因为业务、技术原因,使用全量同步的方式做周期数据更新,直接覆盖原有数据即可

2.2 增量同步

传统数据整合方案中,大多采用merge方式(update+insert)
主流大数据平台不支持update操作,可采用全外连接+数据全量覆盖方式
——如果担心数据更新出错,可以采用分区方式,每天保存最新的全量版本,保留较短周期。
在这里插入图片描述

3 任务调度

3.1为什么需要任务调度?

解决任务单元间的依赖关系
自动化完成任务的定时执行

3.2常见任务类型

Shell 用于启动数据仓库的一些组件 如采集组件
Java程序、MapReduce程序 用于数据清洗的一些任务
SQL脚本 用于数据处理的一些任务
在这里插入图片描述

3.3常见调度工具

Azkaban
Oozie
在这里插入图片描述
相较于Oozie,Azkaban的功能比较强大,易用性好,在企业中应用较多。

猜你喜欢

转载自blog.csdn.net/weixin_46002001/article/details/124386751