新兴数据仓库设计与实践手册:从分层架构到实际应用(三)

本手册将分为三部分发布,以帮助读者逐步深入理解数据仓库的设计与实践。

  • 第一部分介绍数据仓库的整体架构概述;
  • 第二部分深入讨论ETL在数仓中的应用理论,ODS层的具体实现与应用;
  • 第三部分将围绕DW数据仓库层、ADS层和数据仓库的整体趋势展开;

通过这样的结构,您可以系统地学习每一层次的内容和设计原则。

前情提要: 《新兴数据仓库设计与实践手册:从分层架构到实际应用(一)》https://mp.weixin.qq.com/s/_iYSM0sT_NOysducbxEJhg

《新兴数据仓库设计与实践手册:从分层架构到实际应用(二)》:http://mp.weixin.qq.com/s?__biz=MzkyODg0MzA1MQ==&mid=2247489134&idx=1&sn=47d09334fecb43ac2ee1beeb111c6abe&chksm=c37528ab9804979fefcb56f45551c409fd97d22453af0ae3b1df36de1026c42a3a61203c5a02#rd

技术方案设计

概念介绍

缓冲层(也称接口层或Stage层)用于存储每天的增量和变更数据。该层暂存从源系统采集的原始数据,以便后续数据处理和ETL流程的使用。

数据仓库

数据生成方式

数据通常通过Kafka直接接入缓冲层,对于包含updatedeleteinsert操作的业务表,会每日生成变更日志;而仅有insert操作的业务表,则直接将数据进入明细层。

建议方案: 使用Apache SeaTunnel或WhaleTunnel生成的CDC日志直接进入缓冲层。如果业务涉及拉链数据,同样将其存放于缓冲层,以确保数据变更的准确记录。

日志存储方式

缓冲层的日志数据以Impala外部表形式存储,采用Parquet文件格式。这种方式不仅提高了存储效率,还便于MapReduce等处理引擎对数据的快速访问和处理。

日志清理策略

对于日志数据,通常只保留最近几天的数据以节省存储空间。

建议方案:考虑长期存储重要日志数据,以便于历史数据回溯和审计。

表的Schema和分区策略

通常按天分区数据,以partitioned by时间字段进行存储。这样不仅简化了数据管理,还能提升查询效率。表的Schema设计遵循源系统的结构,以确保数据的一致性和完整性。

库和表的命名规范
  • 库名:ods,表示数据的贴源层。

  • 表名:格式建议为ods_日期_业务表名,例如ods_2024_10_sales,便于管理和查询。

Hive表类型

在缓冲层中使用Hive的外部表管理数据,外部表的文件可以存储在非默认的HDFS路径中,这样当删除表定义时,实际存储文件不会被删除,保障数据安全。

业务表使用Hive的内部表,当删除表定义时,关联的HDFS文件也会被删除。此方式适合临时或不重要的数据存储,避免重要数据的误删。

DW数据仓库层

数据仓库层(DW层)是数据仓库设计的核心层,负责对来自贴源层(ODS层)的数据进行主题化建模,以支持高效的业务分析和决策。

DW层根据业务主题划分领域,为各主题构建清晰的数据视图,过滤掉无关决策的数据,专注于支持企业关键分析。

在该层,通常会存储业务系统的所有历史数据,例如保存10年以上的数据,为BI系统提供全面的历史数据支持。

数据分层模型设计

DW层采用维度建模,将维度表和事实表建立外键关联关系,以减少数据冗余、提高数据的组织效率。

维度模型不仅简化了业务分析的复杂性,还提升了DW层的数据易用性。在汇总数据层中,通过宽表设计将不同统计维度关联,建立高度复用的公共指标数据层,从而减少下游数据开发的重复劳动。

数据内容和结构

在DW层中,主要存储三类数据:

  1. 明细事实数据:基于ODS层的原始数据加工而成,包含业务过程中的细节信息。

  2. 维表数据:描述性数据(如客户信息、产品分类等),同样从ODS层加工生成。

  3. 公共指标汇总数据:基于维表和明细数据汇总而成,为业务分析提供标准化的核心指标。

DW层的细分

DW层通常进一步划分为三个子层:维度层(DIM)、明细数据层(DWD)和汇总数据层(DWS),并使用维度建模方法为数据设计结构,以确保高效的数据管理和访问:

维度层(DIM,Dimension)

维度层以业务维度为建模核心,根据每个维度的业务语义,定义维度属性和关联关系,形成标准化的数据分析维表。此

层通过为各维度添加属性、定义关联关系等,明确计算逻辑,实现一致性的数据描述。为了避免在维度模型中出现冗余数据,维度表通常采用雪花模型结构,通过拆分属性表来减少数据重复,实现更加规范的维度建模。

明细数据层(DWD,Data Warehouse Detail)

明细数据层以具体的业务过程为核心进行建模,旨在捕捉业务活动的最细粒度信息,构建详细的事实表。这些事实表保留了业务过程的每一个细节,确保数据的完整性和精准性。

在实际设计中,对于一些关键的属性字段,可以适当进行冗余处理,即采用宽表化设计,以提升查询效率,减少多表关联带来的性能开销。这种做法在确保数据精细化的同时,兼顾了系统的易用性和高效性。

汇总数据层(DWS,Data Warehouse Summary)

汇总数据层(DWS)以分析主题为核心进行建模,围绕业务指标需求,构建标准化的汇总表,为上层应用提供一致的公共指标。

这一层基于宽表设计,将统计逻辑物理化,确保数据的命名规范和口径一致,从而支持高效的分析查询。汇总数据层包含多种主题的宽表和明细事实表,为业务提供统一的统计视角。

  • 主题域:以业务过程为视角,将业务活动进行抽象和分类。例如,下单、支付、退款等事件可归类为不同的业务主题域,主要针对公共明细层(DWD)进行主题划分。

  • 数据域:以分析需求为导向,将业务过程和维度进一步抽象,形成数据域。数据域划分在公共汇总层(DWS)中进行,用于满足各类业务分析需求。

层次结构与数据处理

  • DWD(Data Warehouse Details,数据明细层):以业务过程为驱动,主要从ODS数据层抽取原始数据并进行清洗和规范化处理,确保数据的完整性和一致性。清洗内容包括去除空值、转换脏数据、枚举值统一、以及异常值过滤等。

  • DWS(Data Warehouse Base,数据基础层):该层存储客观数据,主要作为中间层,为DWS层提供基础指标支持。可以视为大量中间指标的存储区,聚焦客观的业务事实。

  • DWS(Data Warehouse Summary数据服务层):基于DWB中的基

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DolphinScheduler社区

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值