数据仓库建模分层设计

概述

  • 数据仓库 (DataWarehouse)是一个面向主题的(Subject Oriented)、集成的(Integrate)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合, 用于支持管理决策.
  • 将所有的业务数据经汇总处理, 构成数据仓库(DW)

趋势

  • 数据仓库是伴随着企业信息化发展起来的, 在企业信息化的过程中, 随着信息化工具的升级和新工具的应用, 数据量变的越来越大, 数据格式越来越多, 决策要求越来越苛刻, 数据仓库技术也在不停的发展.
  1. 实时数据仓库以满足实时化&自动化决策需求.
  2. 大数据&数据湖以支持大量&复杂数据类型(文本、图像、视频、音频).

数据库VS仓库

  • 存储:
    • 数据库面向业务存储, 采用关系建模, 组织规范
    • 仓库面向主题(较高层次上对分析对象数据的一个完整并且一致的描述)存储, 采用维度建模, 可能冗余, 相对变化大, 数据量大
  • 场景:
    • 数据库针对应用(OLTP)
    • 仓库针对分析(OLAP)

关系建模VS维度建模

  • 关系模型:
    • 主要应用与 OLTP 系统中,为了保证数据的一致性以及避免 冗余,所以大部分业务系统的表都是遵循第三范式的.
  • 维度模型:
    • 关系模型虽然冗余少,但是在大规模数据,跨表分析统计查询过程中,会造成多表关联,这会大大降低执行效率。所以通常我们采用维度模型建模,把相关各种表整理成两种: 事实表和维度表两种.

维度建模模型

  • 在维度建模的基础上又分为三种模型:
    • 星型模型
    • 雪花模型
    • 星座模型

维度设计过程

  1. 选择业务过程: 对应企业数据仓库总线矩阵的一行.
  2. 声明粒度: 粒度用于确定某一事实表中的行为表示什么, 建议从原子级别的粒度开始设计.
  3. 确认维度: 包含应用所需要的用于过滤及分类事实的描述型属性.
  4. 确认事实: 所有事实只允许与声明的粒度保持一致.

维度表VS事实表

维度表

  • 一般是对事实的描述信息. 每一张维表对应现实世界中的一个对象或者概念. 例如:用户、商品、日期、地区等.
  • 可以简单地理解维度表包含了事实表中指定属性的相关详细信息. 比如商品维度表和用户维度表.
  • 特点:
    • 维度表的范围很宽 (具有多个属性, 列比较多)
    • 与事实表相比, 行数相对较小
    • 内容相对固定: 编码表

事实表

  • 事实表中的每行数据代表一个业务事件 (下单、支付、退款、评价等).
  • 事实这个术语表示的是业务事件的度量值 (可统计次数、个数、件数、金额等),例如,订单事件中的下单金额.
  • 每一个事实表的行包括:
    • 具有可加性的数值型的度量值
    • 与维表相连接的外键
    • 通常具有两个和两个以上的外键
    • 外键之间表示维表之间多对多的关系
  • 特点:
    • 非常大
    • 内容相对窄, 列数少
    • 经常发生变化, 每天会新增很多

数据仓库建设方法论

分层设计

  • 数据分层是数据仓库设计中十分重要的一个环节, 优秀的分层设计能够让整个数据体系更易理解和使用.
  • 一般根据具体的业务进行合理的分层设计
  • 通常采用四层划分方式: ODS原始数据层, DWD明细数据层, DWM数据中间层 (包括DWS数据服务层和DWT数据主题层) 和ADS数据应用层

ODS (Operation Data Store) 原始数据层

  • 保持数据原貌不做任何修改,起到备份数据的作用。
  • 数据采用压缩 (如LZO压缩),减少磁盘存储空间(例如:原始数据 100G,可以压缩到 10G 左右)
  • 创建分区表,防止后续的全表扫描

DWD (Data Warehouse Detail) 明细数据层

  • 对ODS层数据进行提取、清洗 (去除空值, 脏数据, 异常值)、降维、解密脱敏等. 粒度是一行信息代表一次行为.
  • 需构建维度模型,一般采用星型模型,呈现的状态一般为星座模型.
  • 该层的数据应该是一致的、准确的、干净的数据,即对源系统数据进行了清洗(去除了杂质)后的数据

DWM (Data Warehouse Middle) 数据中间层

  • 数据中间层, 包括DWS和DWT层.
DWS (Data Warehouse Service) 数据服务层
  • 以DWD为基础, 按天进行轻度汇总. 粒度是一行信息代表一天的行为.
DWT (Data Warehouse Topic) 数据主题层
  • 以DWS为基础, 按主题进行汇总. 粒度是一行信息代表积累的行为.

ADS (Application Data Store) 数据应用层

  • 应用层, 为各种统计报表提供数据.

面向主题

  • 从具体的业务出发, 是分析的宏观领域, 比如供应商主题、商品主题、客户主题和仓库主题.

反范式数据模型

  • 以事实表和维度表组成的星型/雪花/星座数据模型.

为多维数据分析服务

  • 数据报表
  • 数据立方体,上卷、下钻、切片、旋转等分析功能.

命名规范

表命名规范

  • ODS层命名: ods_表名
  • DWD层命名: dwd_dim/fact_表名
  • DWS层命名: dws_表名
  • DWT层命名: dwt_表名
  • ADS层命名: ads_表名
  • 临时表命名: xxx_tmp

字段命名规范

  • 同名同义

参考