数据仓库概要
什么是数据仓库?
数据仓库是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策。
核心特征
1. 面向主题
数据仓库围绕核心业务主题(如客户、产品、销售、财务)来组织数据,而不是围绕具体的业务流程或应用系统。这与操作型数据库 (如订单处理系统)不同,后者是面向事务 的。
2. 集成
数据仓库中的数据来源于多个分散的操作型系统(如ERP、CRM、日志文件等)。这些数据在进入数据仓库之前,会经过清洗、转换、整合,消除不一致性,形成统一的命名、编码和格式。
3. 相对稳定
数据仓库一旦存入数据,通常不会被修改或删除,主要是进行数据的查询和分析。这反映了读多写少的特性。操作型数据库则需要频繁地进行增删改查。
4. 反映历史变化
数据仓库会长期保留历史数据(例如5-10年),以便进行趋势分析、预测未来。而操作型数据库通常只保留当前或近期的数据。
核心架构与组成
1. 数据源
如:业务数据库(MySQL, Oracle)、日志文件、API接口、外部数据等。
2. 数据抽取、转换、加载
- 抽取 Extract:从数据源获取数据。
- 转换 Transform:清洗无效数据、转换格式、统一标准、进行业务计算(这是最复杂的一步)。
- 加载 Load:将转换后的数据加载到数据仓库的目标表中。
3. 数据存储与管理
- 这里存储着细节数据、轻度汇总数据和高度汇总数据。
- 通常采用维度建模,构建星型模型或雪花模型,核心是事实表和维度表。
-
- 事实表:存储业务过程的度量值(如销售金额、销售数量),主要是数值型数据。
-
- 维度表:存储描述事实的业务上下文(如时间、地点、产品、客户),主要是文本型数据。
4. 数据服务/应用层
工具包括:BI工具(如 Tableau, FineBI, Power BI)、即席查询工具、报表系统等。
相关概念与技术
ETL vs. ELT
- ETL 抽取 -> 转换 -> 加载:传统方式,在加载到仓库前进行转换。适合结构化数据和对数据质量要求极高的场景。
- ELT 抽取 -> 加载 -> 转换:现代方式,先加载到仓库,然后利用仓库的强大计算能力进行转换。更适合处理海量、多结构的原始数据
OLTP vs. OLAP
- OLTP (Online Transactional Processing) 联机事务处理:支持日常业务操作(增删改查),是数据的生产者,是业务数据的源头;代表系统 MySQL, PostgreSQL, Oracle
- OLAP (Online Analytical Processing) 联机分析处理:支持复杂数据分析与决策;是数据的消费者,数据来自多个OLTP系统;Snowflake, BigQuery, Amazon Redshift, Apache Druid
数据集市
数据仓库的一个子集,通常为某个特定部门或特定业务领域(如财务、销售部)构建的微型数据仓库。它从数据仓库中获取数据,规模更小、主题更聚焦、访问更快。
现代数据栈:
- 新一代的数据平台,通常基于云原生技术,组件更加解耦(增加独立性,降低依赖关系)和专业化。
典型组成:Fivetran (Extract and Load) -> Snowflake/BigQuery (Storage/Compute) -> dbt (Transform) -> Tableau/Mode (BI)。