数据仓库(二):数据仓库为什么要分层

本文详细阐述了数据仓库的分层架构,包括ODS、MID、DW、DM及OLAP层的功能与作用,解释了分层的重要性和价值,如提高数据访问效率、简化复杂问题、增强业务适应性及保障数据历史记录。

一、如何分层

结合Inmon和Kimball的集线器式和总线式的数据仓库的优点,分层为ODS【-MID】-DW-DM-OLAP/OLAM/app
ODS层是将OLTP数据通过ETL同步到数据仓库来作为数据仓库最基础的数据来源。在这个过程中,数据经过了一定的清洗,比如字段的统一,脏数据的去除等,但是数据的粒度是不会变化的。ODS层的数据可以只保留一定的时间。
MID中间层是采用Inmon集线器架构的方式,使用范式建模(贴源)的方法。这一层主要是做规范化的事情,比如应用库表非规范化,字段格式复杂(json格式)需做一些处理。这一层不是必须有的。也不会对外开放使用。范式建模保证了数据一致性、唯一性、正确性。
DW-DM层是采用Kimball的总线式的数据仓库架构,针对部门(比如财务部门)或者某一主题(比如商户、用户),通过维度建模(推荐星型模型),构建一致性维度,原子粒度的数据是DW层,按照实体或者主题经过一定的汇总,建设数据集市模型。数据集市可以为OLAP提供服务。

二、为什么要分层

1、空间换时间。
通过建设多层次的数据模型供用户使用,避免用户直接使用操作型数据,可以更高效的访问数据。
把复杂问题简单化。讲一个复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤,比较简单和容易理解。而且便于维护数据的准确性,当数据出现问题之后,可以不用修复所有的数据,只需要从有问题的步骤开始修复。
便于处理业务的变化。随着业务的变化,只需要调整底层的数据,对应用层对业务的调整零感知.
2、分层的价值
1)高效的数据组织形式【易维护】
面向主题的特性决定了数据仓库拥有业务数据库所无法拥有的高效的数据组织形式,更加完整的数据体系,清晰的数据分类和分层机制。因为所有数据在进入数据仓库之前都经过清洗和过滤,使原始数据不再杂乱无章,基于优化查询的组织形式,有效提高数据获取、统计和分析的效率。
2)时间价值【高性能】
数据仓库的构建将大大缩短获取信息的时间,数据仓库作为数据的集合,所有的信息都可以从数据仓库直接获取,数据仓库的最大优势在于一旦底层从各类数据源到数据仓库的ETL流程构建成型,那么每天就会有来自各方面的信息通过自动任务调度的形式流入数据仓库,从而使一切基于这些底层信息的数据获取的效率达到迅速提升。
从应用来看,使用数据仓库可以大大提高数据的查询效率,尤其对于海量数据的关联查询和复杂查询,所以数据仓库有利于实现复杂的统计需求,提高数据统计的效率。
3)集成价值【简单化】
数据仓库是所有数据的集合,包括日志信息、数据库数据、文本数据、外部数据等都集成在数据仓库中,对于应用来说,实现各种不同数据的关联并使多维分析更加方便,为从多角度多层次地数据分析和决策制定提供的可能。
4)历史数据【历史性】
记录历史是数据仓库的特性之一,数据仓库能够还原历史时间点上的产品状态、用户状态、用户行为等,以便于能更好的回溯历史,分析历史,跟踪用户的历史行为,更好地比较历史和总结历史,同时根据历史预测未来。

<think>我们正在讨论数据仓库分层的原因和目的。根据引用内容,数据仓库分层是一种组织和管理数据仓库的结构化方法,它将数据仓库划分为不同的次或级别,每个次具有特定的功能和目的。分层有助于管理数据流程、数据处理和数据访问,并提供清晰的结构来支持数据管理和分析需求。 数据仓库分层的主要原因和目的包括: 1. **清晰的数据管理**:通过分层,可以将不同处理阶段的数据划分到不同的次中,使得数据管理更加清晰有条理。例如,原始数据、清洗、汇总等,各职责明确。 2. **数据血缘追踪**:分层设计有助于追踪数据的来源和转换过程,即数据血缘(Data Lineage)。当数据出现问题,可以快速定位到问题发生的次和步骤。 3. **降低重复开发**:通过中间的设计,可以避免重复的ETL(Extract, Transform, Load)工作。上的数据可以复用下的数据,减少重复计算。 4. **提高数据一致性**:分层设计可以确保数据的口径一致。在汇总,可以定义统一的指标,避免不同报表或分析中同一指标的不同定义。 5. **隔离原始数据和应用**:分层可以将原始数据与应用(如报表、分析)隔离开,保护原始数据不被破坏,同时也使得应用的变化不会影响到原始数据。 6. **优化性能**:通过分层构建汇总数据,可以将复杂的计算提前完成,提高应用的查询性能。例如,应用可以直接查询汇总的数据,而不需要每次从原始数据开始计算。 7. **适应业务变化**:分层架构使得数据仓库更加灵活,当业务发生变化时,只需要调整相应的次,而不会影响整个数据仓库的结构。 根据引用[4],数据仓库的标准分层只是一个建议性质的标准,实际实施时需要根据实际情况确定分层。常见的分层包括: - **ODS(Operational Data Store)**:操作数据存储,存放原始数据,与业务系统结构基本一致。 - **DWD(Data Warehouse Detail)**:数据仓库明细,对ODS的数据进行清洗、转换、集成等,形成规范化的明细数据。 - **DWS(Data Warehouse Summary)**:数据仓库汇总,对DWD的数据进行汇总,形成面向主题的汇总数据。 - **ADS(Application Data Store)**或**APP**:应用数据,为具体的应用或报表提供高度汇总的数据。 通过这样的分层数据仓库能够更好地支持企业的决策制定过程,提供所有类型的数据支持[^3]。 因此,数据仓库分层的主要目的是为了构建一个结构清晰、易于管理、高效可靠的数据体系,以支持企业决策和业务分析。 下面生成相关问题。 </think>### 数据仓库分层的原因和目的 数据仓库分层是数据架构设计的核心策略,其核心原因和目的主要体现在以下方面: #### 一、分层的主要原因 1. **解耦数据处理流程** 将原始数据到应用数据的转换过程拆分为多个独立次(如ODS→DWD→DWS→ADS),避免数据处理逻辑耦合在单一系统中,提升系统可维护性[^2]。 2. **保证数据质量** 分层设计使数据清洗、验证、补全等操作集中在特定级(如DWD),防止脏数据污染上分析结果[^1]。 3. **应对业务复杂度** 企业数据源多样(交易日志、用户行为、第三方数据等),分层可隔离不同业务域的数据处理逻辑[^3]。 #### 、核心目的 1. **提升数据可用性** - **底ODS/DWD)**:保留明细数据,支持回溯分析 - **上(DWS/ADS)**:提供聚合指标,满足即席查询需求[^4] 例如: - ODS存储原始订单流水 - DWS生成每日销售额汇总指标 2. **优化性能与成本** - 通过分层预计算减少重复加工,降低查询延迟 - 冷热数据分离存储(如ODS用廉价存储,ADS用内存数据库) 3. **支持决策智能化** 分层结构为不同角色提供适配数据: - 运营人员:APP可视化报表 - 数据分析师:DWD明细数据挖掘 - 算法工程师:DWS特征工程[^1] #### 三、分层示例(实际应用场景) ```mermaid graph LR A[业务系统] --> B[ODS:原始数据] B --> C[DWD:清洗整合] C --> D[DWS:主题汇总] D --> E[ADS:应用] ``` - **ODS**:直接同步业务数据库,保留历史快照 - **DWD**:完成数据去重、维度关联(如用户ID与产品ID关联) - **DWS**:按主题聚合(如用户购买力分层) - **ADS**:生成报表API或BI数据集[^4] > **关键价值**:分层设计使数据仓库从"数据沼泽"转变为**可复用、易扩展的数据资产体系**,满足从实时监控到长期战略分析的多场景需求[^3]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值