数据仓库概念总结

数据仓库(Data Warehouse)建模

ODS(备份)

  1. 保持数据原貌不做任何修改, 起到备份数据的作用。
  2. 数据采用压缩, 减少磁盘存储空间( 例如: 原始数据 100G, 可以压缩到 10G 左右)
  3. 创建分区表, 防止后续的全表扫描(一般按日期)
  4. 创建外部表。 在企业开发中, 除了自己用的临时表, 创建内部表外, 绝大多数场景都是创建外部表
  • 构建步骤
    1. 用户行为数据(事件&启动),(json to string) hive单行保存
    2. 业务数据,hdfs to hive

DWD(清洗)

  • 构建步骤
    1. 对用户行为数据解析
    2. 对核心数据进行判空过滤
    3. 对业务数据采用维度模型重新建模, 即维度退化
  • DWD 层需构建维度模型, 一般采用星型模型, 呈现的状态一般为星座模型
  • 维度建模一般按照以下四个步骤:
    1. 选择业务过程
    2. 声明粒度
    3. 确认维度(维度表)
      • 原则是: 后续需求中是否要分析相关维度的指标
      • 维度表: 需要根据维度建模中的星型模型原则进行维度退化
    4. 确认事实(事实表)
      • 事实指的是业务中的度量值(次数、 个数、 件数、 金额, 可以进行累加)
  • DWS 层、 DWT 层和 ADS 层都是以需求为驱动, 和维度建模已经没有关系了
  • DWS 和 DWT 都是建宽表, 按照主题去建表。 主题相当于观察问题的角度。 对应着维度表

DWS(按天聚合)

  • DWS 层统计各个主题对象的当天行为, 服务于 DWT 层的主题宽表
  • 需要建哪些表: 以维度为基准, 去关联对应多个事实表
  • 宽表里面的字段: 是站在不同维度的角度去看事实表, 重点关注事实表聚合后的度量值
    20200927173303.jpg

DWT(全量聚合统计)

  • DWT 层统计各个主题对象的累积行为
    1. 需要建哪些表: 和 DWS 层一样。 以维度为基准, 去关联对应多个事实表
    2. 宽表里面的字段: 我们站在维度表的角度去看事实表, 重点关注事实表度量值的累积值、 事实表行为的首次和末次时间(订单事实表至今的累积下单次数、 累积下单金额和某时间段内的累积次数、 累积金额, 以及关注下单行为的首次时间和末次时间)

ADS(指标)

  • 对系统各大主题指标分别进行分析

数仓命名规范

  • 表命名
    • ODS层命名为ods_表名
    • DWD层命名为dwd_dim/fact_表名
    • DWS层命名为dws_表名
    • DWT层命名为dwt_表名
    • ADS层命名为ads_表名
    • 临时表命名为xxx_tmp
    • 用户行为表, 以log为后缀
  • 脚本命名
    • 数据源_to_目标_db/log.sh
    • 用户行为脚本以log为后缀; 业务数据脚本以db为后缀

表分类

  • 日志表
    • 启动日志表
    • 事件日志表(根据事件类型区分)
  • 业务表
    • 维度表
      • 全量表
      • 特殊表
    • 事实表
      • 周期型快照事实表
        • 每日快照,全量导入
        • 周期型快照事实表存储的数据比较讲究时效性, 时间太久了的意义不大, 可以删除以前的数据
      • 事务型快照事实表
        • 一旦产生不会变化,只需导增量
      • 累计型快照事实表(!!难点,动态分区,sql复杂)
        • 用事件开始的时间作为分区
        • 用于跟踪业务事实的变化
      • 拉链表(!!)
        • 用户维度表
          • 修改频率不高,属于缓慢变化维度

维度表和事实表

  • 维度表
    • 一般是对事实的描述信息。 每一张维表对应现实世界中的一个对象或者概念
    • 维表的特征
      • 维度表的范围很宽(具有多个属性、 列比较多)
      • 跟事实表相比, 行数相对较小: 通常< 10 万条
      • 内容相对固定: 编码表
  • 事实表
    • 事实表中的每行数据代表一个业务事件( 下单、 支付、 退款、 评价等) 。 “事实” 这个术语表示的是业务事件的度量值( 可统计次数、 个数、 件数、 金额等) , 例如, 订单事件中的下单金额
    • 每一个事实表的行包括: 具有可加性的数值型的度量值、 与维表相连接的外键、 通常具有两个和两个以上的外键、 外键之间表示维表之间多对多的关系(外键+度量值)
    • 事实表的特征:
      • 非常的大
      • 内容相对的窄: 列数较少
      • 经常发生变化, 每天会新增加很多

关系建模和维度建模

  • 数据处理分类
    • 联机事务处理 OLTP( on-line transactionprocessing)
      • 保证数据一致性,避免冗余
    • 联机分析处理 OLAP( On-Line Analytical Processing)
对比属性 OLTP OLAP
读特性 每次查询只返回少量记录 对大量记录进行汇总
写特性 随机、 低延时写入用户的输入 批量导入
使用场景 用户, Java EE 项目 内部分析师, 为决策提供支持
数据表征 最新数据状态 随时间变化的历史状态
数据规模 GB TB 到 PB
  • 维度建模
    • 星型模型
      • 标准星形只有单层级
      • 性能优先
      • 减少维度就是减少join、减少shuffle
    • 雪花模型
      • 多层
      • 灵活优先
    • 星座模型

同步策略

  • 全量表: 存储完整的数据。
  • 增量表: 存储新增加的数据。
  • 新增及变化表: 存储新增加的数据和变化的数据。
  • 特殊表: 只需要存储一次

即席查询

  • OLAP(Online Analytical Processing)多维分析
  • ROLAP(Relational OLAP)
    • 基于关系型数据库
  • MOLAP(Multidimensional OLAP)
    • 需要预计算
    • 基于多维数据集(一个多维数据集成为OLAP Cube(立方体))
    • Cuboid(长方体)
  • Star Schema(星型模型)
  • Dimension(维度)
  • Measure(度量)
-------------The End-------------
坚持原创技术分享,您的支持将鼓励我继续创作!