Loading......

文章背景图

数据仓库 概念 架构 学习重点

2025-10-20
20
-
- 分钟

📚 数据仓库学习笔记(Data Warehouse Learning Notes)


一、数据仓库基本概念

(一)核心定义

数据仓库(Data Warehouse,DW / DWH) 是为 数据分析与决策支持 而设计的企业级数据管理系统。
它不仅仅是“存储数据的地方”,而是一个面向分析的完整系统。

核心特征:

特征

说明

🧩 系统独立性

数据仓库是一个独立运行的软件系统(区别于仅提供功能框架的组件)。

🎯 核心目标

服务于企业的 经营分析与战略决策,而非日常业务操作。

🔗 多源整合

汇聚来自业务数据库(MySQL)、日志、第三方接口、爬虫等多种数据源。

🕓 历史积累

长期沉淀海量历史数据,用于趋势分析、预测与回溯。

💡 总结:数仓的“仓库”只是比喻,本质是 数据分析与决策支持系统


(二)核心价值与应用场景

应用方向

说明

示例

📈 企业决策支撑

基于全链路数据分析企业经营情况

分析“产品区域销量”,指导下季度库存策略

🤝 跨部门数据协同

统一口径、打破数据孤岛

财务与运营共用“用户消费数据”

历史数据回溯

支持同比、环比、趋势预测

对比近三年“双十一”增长曲线,预测下年效果


(三)与传统数据库的区别

对比维度

数据仓库

传统数据库(如 MySQL)

🎯 核心目标

分析决策(离线统计、趋势预测)

实时交易(业务支撑)

💾 数据特性

多源、海量、历史数据

单源、结构化、实时数据

🔍 查询场景

复杂分析(多表聚合、OLAP 查询)

简单查询(CRUD 操作)

🔁 更新频率

低频(如 T+1 更新)

高频(实时写入)


二、数据仓库整体架构

数据仓库的核心理念是 “分层设计” —— 让数据从“原始 → 清洗 → 汇总 → 应用”逐步演变,形成可复用的数据体系。


(一)经典五层架构

分层名称

英文缩写

核心作用

数据处理方式

应用场景

原始数据层

ODS(Operational Data Store)

存储原始未加工数据

数据接入(不做清洗)

原始备份、问题回溯

明细数据层

DWD(Data Warehouse Detail)

清洗与结构化

数据脱敏、字段规范化

标准化明细数据

汇总数据层

DWS(Data Warehouse Summary)

按主题汇总(轻聚合)

GROUP BY 聚合

主题分析(如用户日活)

数据集市层

DM(Data Mart)

按部门 / 业务线定制化加工

二次聚合、业务特化

部门专用分析模型

应用数据层

ADS(Application Data Store)

输出分析结果

报表结构化输出

BI 展示、系统调用


(二)关键系统组件

📥 数据采集层(入口)
  • 作用:负责外部数据接入 ODS。

  • 常用工具:Flink(实时)、DataX(离线)、Logstash(日志)。

  • 示例:每日凌晨通过 DataX 同步 MySQL “订单表” 至 ODS。

⚙️ 任务调度层(引擎)
  • 作用:管理各层任务执行顺序与依赖。

  • 常用工具:Airflow、DolphinScheduler。

  • 逻辑

    • 确保 ODS → DWD → DWS 的依赖顺序。

    • 异常自动重试与告警。

📊 可视化层(出口)
  • 作用:将 ADS 层结果展示为图表。

  • 常用工具:Tableau、PowerBI、FineBI。

  • 示例:用 Tableau 展示“月度区域销量对比图”。


(三)离线数仓 vs 实时数仓

类型

数据延迟

特点

典型场景

离线数仓

T+1(每日更新)

架构简单、稳定、维护低

月报、年报、战略分析

实时数仓

秒级 / 分钟级

架构复杂、需实时流处理(Flink/Kafka)

实时监控、电商大促分析


三、数据仓库学习重点

📘 数仓学习三大核心:建表建模 → SQL 开发 → 任务调度
优先级:建模 > 调度 > SQL


(一)重点 1:建表建模 —— 数仓的“骨架”

🎯 核心目标

通过合理建模,提升数据复用性与查询性能。

🚫 反例

直接在 ODS 上做复杂 SQL,导致性能差、字段不规范、维护困难。

✅ 正例

在 DWD 清洗字段 → DWS 汇总主题 → ADS 提供分析结果,实现层层复用。

🔍 关键知识点

知识点

内容

建模方法

星型模型(事实表 + 维度表)为主,雪花模型用于复杂分析。

字段设计

类型规范(DATE 优于 VARCHAR)、命名规范(user_id)、合理分区(如 dt=20251020)。

分层原则

高内聚、低耦合:每层只做一类加工。

学习建议

通过业务场景(如“电商订单”)练习从需求到表结构的设计流程。


(二)重点 2:SQL 开发 —— 数仓的“工具”

⚙️ 核心定位

SQL 是数仓加工的主要语言,用于数据清洗、聚合、计算。

🧩 常见场景

层级

典型 SQL 操作

DWD

过滤、脱敏、字段标准化

DWS

聚合(SUM、COUNT)、分组汇总

DM/ADS

指标计算、统计报表

📈 学习要点

  • 性能优化

    • 使用分区查询(WHERE dt='2025-10-20')。

    • 减少无关 JOIN。

    • 充分利用索引。

  • 业务逻辑转化
    将自然语言需求转化为 SQL:

    SELECT province, COUNT(DISTINCT user_id) AS new_users
    FROM user_register
    WHERE dt BETWEEN date_sub(current_date, 7) AND current_date
    GROUP BY province;
    
  • 学习策略
    每天练习 1-2 个业务分析题(如“用户复购率”“商品销量 TOP10”)。


(三)重点 3:任务调度 —— 数仓的“引擎”

🧠 核心作用

保证各层任务按依赖顺序定时执行,是数仓落地的关键。

🏗️ 学习重点

方向

说明

工具使用

熟悉 DolphinScheduler / Airflow 的任务配置、依赖设置、日志查看。

任务依赖逻辑

设计任务依赖树:如多个 DWD 任务并行,全部完成后执行 DWS。

实战建议

本地部署调度工具,模拟 ODS→DWD→DWS→ADS 全流程任务流。


四、学习路径与进阶方向

🪜 学习顺序

  1. 理解概念与架构 → 建立整体认知

  2. 掌握建模设计 → 打牢数仓核心

  3. 熟练 SQL 开发 → 具备数据加工能力

  4. 学习任务调度 → 实现生产落地


🚀 进阶方向

方向

技术栈

学习目标

实时数仓

Flink + Kafka

实时计算与流式分析

云数仓

MaxCompute / Redshift / BigQuery

云端数仓架构与优化

数据质量与监控

数据校验、告警系统

提升数据可靠性与可维护性


评论交流