数据仓库的六层架构是一个经典且经过实践检验的模型,它通过分层设计实现了数据从原始状态到可服务应用的清晰流转、质量控制和职责分离。以下是对这六个层级的详细解析。

数据仓库六层架构详解

层级 核心功能 数据特点与设计要点
STAGE层 (贴源层/缓冲层) 作为数据接入的临时缓冲区,直接从业务系统接入原始数据,屏蔽对业务系统的直接访问和干扰 1. 结构与源一致:表结构和数据定义与业务系统保持完全一致。
2. 存储策略:可全量或增量接入,通常有数据老化机制,不长期保存。
3. 隔离性:数据不对外开放,仅用于后续清洗和转换的过渡。
ODS层 (操作数据存储层) 是数据仓库的基础数据层,存储经过清洗、格式统一、体现历史变化的长期保存数据,是后续所有加工的基石。 1. 数据质量:经过清洗,消除脏数据和不一致问题。
2. 数据粒度:与STAGE层保持一致,通常为最细粒度的事务数据。
3. 历史性:通过拉链表或快照等方式记录数据历史变化。
DIM层 (维度层) 存储整个数据仓库公共的维度数据,解决维度一致性和复用问题,是构建维度模型的核心。 1. 公用性:如日期、地区、产品、客户等维度表,被各层广泛引用。
2. 缓慢变化:需处理维度属性的缓慢变化(如客户地址变更)。
3. 一致性:确保不同主题和分析场景下,同一维度的定义和值一致。
MDS层 (中间数据层/主题层) 业务主题域(如销售、客户、供应链)组织数据,通过关联和轻度汇总形成宽表,直接支持上层分析应用。 1. 主题驱动:数据按主题域组织,打破源系统界限。
2. 宽表模型:通过关联将多个实体数据整合成便于查询的宽表,但不做深度聚合
3. 可老化:可根据数据热度实施老化策略,优化存储。
ADS层 (应用数据层) 直接面向具体业务线或部门的个性化数据需求,存储高度汇总、可直接服务应用的报表和指标数据。 1. 需求导向:按部门(如市场部、财务部)或业务线创建独立数据库或Schema。
2. 高度聚合:数据基于MDS层进一步汇总计算,生成指标、报表、标签等。
3. 服务出口:可直接导出到外部系统(如MySQL、Elasticsearch)供应用调用。
ETL/元数据管理层 (支撑体系) ETL调度系统管理各层间数据流转任务的依赖与定时执行;元数据管理系统管理表结构、血缘、存储位置等“数据的数据”。 1. 任务调度:保障数据从STAGE到ADS的管道有序、可靠运行。
2. 血缘与影响分析:追踪数据从来源到应用的完整链路,便于问题排查和变更管理。
3. 数据发现:提供数据地图,方便用户理解和查找数据资产。

架构设计中的两个关键问题

在实施上述六层架构时,必须重点关注“粒度”和“分区”这两个核心设计问题。

  1. 粒度
    粒度决定了数据的细节程度。低粒度(细节数据)灵活性强但数据量大;高粒度(汇总数据)查询性能好但信息损失。常见的做法是采用双重粒度设计,即同时保存细节数据和轻度汇总数据,以平衡灵活性与性能。

  2. 分区
    分区是将数据物理分散到不同单元的策略。合理的分区(如按时间分区)能极大提升数据管理的效率,具体好处包括:提升数据装载速度优化查询性能(分区裁剪)、简化数据归档与删除便于独立监控和存储管理

应用场景与实例解析

以一个电商公司的用户行为分析场景为例,说明数据流经各层的过程:

  1. 数据接入与缓冲:用户在前端的点击、浏览日志(JSON格式)实时同步到STAGE层的原始日志表,不做任何处理。
  2. 数据标准化:日志数据被清洗(如过滤无效字段、解析JSON)、标准化后,存入ODS层的用户行为事实表,每个行为一条记录。
  3. 维度关联:在加工过程中,会关联DIM层的维度表,如将商品ID关联到商品维度表(包含类目、品牌等信息),将用户ID关联到用户维度表。
  4. 主题宽表构建:在MDS层,围绕“用户行为”主题,将ODS层的行为事实表与多个维度表进行关联,生成一张包含用户属性、商品属性、行为时间、行为类型等字段的宽表。
  5. 应用指标计算:在ADS层,针对“用户增长团队”的需求,基于MDS层的宽表,计算“每日新增用户数”、“用户活跃度分布”等指标,并存入专门的ADS表中,供BI报表直接读取。
  6. 全程管控:整个流程由ETL调度系统(如Airflow)编排任务依赖并定时执行。所有表的定义、血缘关系均由元数据管理系统管理,分析师可通过它快速找到“用户活跃度分布”指标是由哪张ADS表提供的,并追溯其来源。

这种分层架构确保了数据仓库的稳定性(STAGE层隔离源系统)、规范性(ODS和DIM层统一标准)、易用性(MDS和ADS层面向分析优化)和可管理性(支撑体系保障运维),是构建企业级数据平台的坚实蓝图。


参考来源

 

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐