数据仓库是面向主题的,这一特性源于其设计目标和应用场景与传统的操作型数据库(OLTP)存在本质区别。以下是详细的解释:
1. 什么是“面向主题”?
- **主题(Subject-Oriented)**是围绕企业核心业务领域(如销售、客户、产品、供应链等)组织数据的逻辑单元。每个主题对应一个分析视角,而非具体的业务流程或技术实现。
- 例如:在“销售”主题下,数据仓库会整合订单、客户、产品、地区等相关的所有数据,以支持分析销售趋势、客户行为或产品表现。
2.与传统数据库(OLTP的区别
-
操作型数据库(OLTP):
- 操作型数据库是面向业务流程和应用系统去组织数据的,数据库的设计会针对具体的一个业务流程进行设计,结构高度规范化(3NF),如订单系统、库存系统、客户关系系统等,数据按不同的系统存储在不同的数据库中,比如订单数据、库存数据、客户数据是分散存储在不同的系统的数据中的。
-
数据仓库(OLAP):
- 数据仓库面向的是分析需求去组织数据的,比如分析公司的销售情况、客户的购买情况,这些分析需求会从多个维度进行数据的分析,那么一个分析需求下会集合多个业务过程的数据,比如客户购买情况会集合订单系统和客户关系系统的数据。
3. 面向主题的优势
- 高效分析:数据按主题集中存储,避免跨多个系统查询的复杂性。
- 业务友好:直接映射到业务分析需求,便于非技术人员(如管理层)理解和使用。
- 一致性:消除不同系统间的数据定义冲突(如“销售额”在财务和销售系统中的不同口径)。
- 支持决策:通过跨主题关联(如销售与供应链的结合),发现业务洞察。
4. 面向主题的设计方法
- 维度建模(星型模型、雪花模型):
- 事实表(如销售事实)记录业务度量(如销售额、销量),维度表(如时间、产品、客户)提供分析视角。
- 例如:销售主题的星型模型会以“销售事实表”为中心,连接“时间维度”“产品维度”“客户维度”等。
- 数据整合:
- 从多个异构系统(如ERP、CRM、日志系统)抽取数据,按主题重组,解决“数据孤岛”问题。
5. 实际案例:销售主题
- 传统数据库:销售数据分散在订单表(事务处理)、客户表(CRM)、库存表(ERP)中,结构高度规范化。
- 数据仓库:
- 整合所有相关数据,形成“销售事实表”(含销售额、订单量)和“产品维度表”“时间维度表”等。
- 支持直接分析“2023年某产品在各地区的销售趋势”或“高价值客户的购买行为”。
6. 与其他特性的关联
- 集成性:面向主题的前提是数据集成(ETL)。
- 时变性:主题数据按时间维度存储历史变化,支持趋势分析。
- 非易失性:数据稳定存储,避免事务性更新对分析的干扰。
总结
数据仓库的面向主题是由于需求为分析需求决定的,它通过围绕业务核心领域组织数据,解决了传统数据库中数据分散、结构复杂的问题,最终服务于高效的决策支持(如BI、报表、预测分析)。这一设计理念体现了从“技术驱动”到“业务驱动”的转变。