数据仓库【4】:最佳实践

数据仓库【4】:最佳实践

1、表的分类

维度建模中的表类型

  • 事实表
  • 维度表
  • 事务事实表
  • 周期快照事实表
  • 累积快照事实表
  • 拉链表

1.1、事实表

  • 一般是指一个现实存在的业务对象,比如用户,商品,商家,销售员等等

1.2、维度表

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

1.3、事务事实表

  • 随着业务不断产生的数据,一旦产生不会再变化,如交易流水、操作日志、出库入库记录

1.4、周期快照事实表

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

1.5、累积快照事实表

  • 记录不确定周期的度量统计,完全覆盖一个事实的生命周期,如订单状态表
  • 通常有多个时间字段,用于记录生命周期中的关键时间点
  • 只有一条记录,针对此记录不断更新

1.6、拉链表

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

实现方式一

  • 使用日期分区表,全量数据记录,每天的分区存储昨天全量数据与当天增量数据合并的结果
  • 数据量大会导致全量表膨胀,存储大量永远不更新的冷数据,对性能影响较大
  • 适用于数据量少的情况
    实现方式二
  • 使用日期分区表,推测数据最长生命周期,存储周期内数据;周期外的冷数据存储到归档表
  • 需要保留多天的分区数据,存储消耗依然很大
    实现方式三
  • 使用日期分区表,以业务实体的结束时间分区,每天的分区存放当天结束的数据;设计一个
    时间非常大的分区,如9999-12-31,存放截止当前未结束的数据
  • 已结束的数据存放到相应分区,存放未结束数据的分区,数据量也不会很大,ETL性能好
  • 无存储浪费,数据全局唯一
  • 业务系统可能无法标识业务实体的结束时间,可以使用其它相关业务系统的结束标志作为此
    业务系统的结束,也可以使用最长生命周期时间或前端系统的数据归档时间

2、ETL策略

2.1、全量同步

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

2.2、增量同步

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

3、任务调度

3.1、为什么需要任务调度?

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

3.2、常见任务类型

  • Shell
  • Java程序
  • Mapreduce程序
  • SQL脚本

3.3、常见调度工具

  • Azkaban
  • Oozie
相关推荐
地球资源数据云15 小时前
1951-2025年中国逐年1千米逐月总降水量区域统计数据集_年表_县
大数据·数据结构·数据库·数据仓库·人工智能
SelectDB技术团队21 小时前
Apache Doris 4.1:面向 AI & Search 的统一数据存储与检索底座
数据库·数据仓库·实时分析·selectdb
juniperhan1 天前
Flink 系列第16篇:Flink 核心数据类型类详解(POJO、Row、Tuple)
java·大数据·数据仓库·分布式·flink
RestCloud2 天前
TiDB 混合负载场景下的 ETL 与 CDC 实践
数据仓库·tidb·etl·cdc·数据同步·数据库传输
AllData公司负责人3 天前
AllData数据中台通过开源项目RustFS建设现代数据湖存储,接入工业, 医疗, 物联网数据,包括文件/图像/音频/视频数据!
数据库·数据仓库·物联网·开源·数据存储·数据接入·rustfs
juniperhan3 天前
Flink 系列第14篇:Flink Metrics 监控指标详解(生产环境版)
大数据·数据仓库·分布式·flink
菜鸟小码3 天前
深入理解 Hive 数据模型
数据仓库·hive·hadoop
菜鸟小码3 天前
Hive环境搭建与配置优化
数据仓库·hive·hadoop
xiaogai_gai4 天前
金蝶云星空API接口的ETL转换与数据写入方案
数据仓库·etl
菜鸟小码4 天前
Hive数据类型全解析:从基础到复杂类型实战指南
数据仓库·hive·hadoop