## 标题简述数仓的分层架构及其作用
数据仓库的分层架构主要是为了提高数据管理的可维护性、稳定性和可扩展性,同时确保数据的清晰流动和高效查询。常见的数据仓库分层架构通常包括以下几层:
- 数据源层(ODS,Operational Data Store)
作用:
存储原始数据,通常是从业务系统直接抽取的数据,不做或仅做少量清洗。 作为数据仓库的入口,主要用于短期存储,支持历史回溯。
特点:
数据格式多样(如 MySQL、PostgreSQL、Kafka、日志数据等)。
可能包含数据冗余,避免影响业务系统。
- 数据基础层(DWD,Data Warehouse Detail)
作用:
对原始数据进行清洗、标准化和结构化处理,构建标准的明细数据表。 保持数据的最大颗粒度,避免数据丢失,为后续数据分析提供支持。
特点:
采用标准化的数据模型(宽表、星型、雪花模型)。 一般按照时间、用户、业务等维度存储。 作为数仓的核心基础层,保证数据一致性和高可用性。
- 数据汇总层(DWM,Data Warehouse Middle)
作用:
对 DWD 层数据进行聚合,计算业务指标,减少计算开销,提高查询效率。 适用于大部分业务分析和报表需求。
特点:
通常按照业务需求进行数据建模,如用户行为分析、营销数据统计等。 可能按天、周、月等周期存储数据,减少重复计算。
- 数据应用层(ADS,Application Data Store)
作用:
提供面向特定业务场景的汇总数据,支持 BI 报表、数据分析、数据 API 供下游使用。 以高效查询和快速响应为目标,优化数据存储结构。
特点:
面向业务应用,数据结构优化为宽表,方便查询。 可能存储在 OLAP 数据库(如 ClickHouse、Druid)或 KV 存储(如 Redis)中,提升查询效率。
数仓分层的作用
- 解耦业务系统与分析系统:避免对业务数据库的直接查询影响生产环境。
- 提高数据质量:通过层层清洗和标准化,确保数据准确性、一致性、完整性。
- 提升查询效率:数据逐层加工和聚合,减少重复计算,提高查询响应速度。
- 便于管理和扩展:分层架构使得数据结构清晰,方便后续维护和优化。
这种分层架构能够很好地支持企业的数据分析、数据治理和业务决策需求,是现代数据仓库建设的重要基础。
数仓建模中,事实表和维度表有何区别?
在数据仓库建模中,事实表(Fact Table) 和 维度表(Dimension Table) 是核心组件,它们的主要区别如下:
1. 定义
- 事实表:存储业务事件(事务)的度量值(数值型数据),通常包含可以被聚合(如求和、平均、计数等)的指标。
- 维度表:存储业务事件的描述信息(文本或分类数据),提供业务分析的维度(如时间、地点、产品等)。
2. 数据特点
类别 | 事实表(Fact Table) | 维度表(Dimension Table) |
---|---|---|
数据类型 | 数值型(度量数据) | 字符型(描述数据) |
数据粒度 | 细粒度,记录业务发生的事实 | 粗粒度,描述业务的属性 |
数据量 | 通常较大,数据不断增长 | 通常较小,数据相对稳定 |
主键 | 由多个外键组成的复合主键 | 业务主键(如用户ID、产品ID) |
3. 作用
事实表: