从ODS到ADS:数据仓库分层架构设计与应用
从ODS到ADS:数据仓库分层架构设计与应用
在当今数据驱动的时代,数据仓库作为企业数据管理与分析的核心,其架构设计对企业决策支持至关重要。数据仓库的架构通常包括STAGE层、ODS层、MDS层、ADS层和DIM层等多个组件,每个组件承担不同的功能和职责。了解这些组件的作用和相互关系,可以帮助我们更好地理解和运用数据仓库,从而提升企业决策的精准性和效率。
数据仓库架构设计的必要性
数据仓库的架构设计并非一蹴而就,而是需要经过深思熟虑的规划和设计。合理的架构设计能够确保数据仓库系统具备良好的扩展性、稳定性和性能,从而更好地满足企业对数据处理和分析的需求。
数据仓库的分层设计是其架构设计的核心。通过将数据仓库划分为多个层次,每个层次承担特定的功能,可以实现数据的有序管理和高效利用。这种分层设计的主要目的包括:
- 清晰的数据结构:每一个分层都有其特定的作用域与职责,使得在使用时更方便理解和定位。
- 统一输出口径:通过数仓分层加工数据共享层、指标层,统一了数据的输出口径,确保数据的一致性和准确性。
- 数据血缘追踪:方便快速定位业务数据问题,并清晰其影响范围,及时反馈给业务,减少损失。
- 数据复用,减少重复开发:开发一些通用的数仓中间层数据,能够极大减少重复计算,实现结果的复用,降低存储和计算成本。
- 把复杂的问题简单化:将复杂的业务问题进行分步骤拆解,每一层只处理单一的步骤,便于理解和维护。
- 空间换取时间:通过充分的数据预处理,满足不同粒度的数据查询需求,节省业务查询数据的流程和时间。
- 屏蔽原始数据的影响:业务系统发生变化时,不必每次都重新接入数据,通过DW层规范和屏蔽所有的业务复杂性,保证下游数据使用的便捷和规范。
数据仓库的分层架构
数据仓库的分层架构通常包括以下几个层次:
ODS层(操作数据存储层):这是数据仓库的最底层,主要用于接收和存储原始数据。ODS层的数据表结构与原始数据系统中的表结构基本一致,是数据仓库的数据准备区。这一层的主要职责是将基础数据同步、存储。一般来说,ODS层的数据和源系统的数据是同构的,主要目的是简化后续数据加工处理的工作。从数据粒度上来说,ODS层的数据粒度是最细的。
DWD层(数据仓库明细层):基于维度建模,对ODS层数据进行清洗(去除空值、脏数据、超过极限范围的数据)、脱敏等处理,保存业务事实明细。这一层的数据已经过初步处理,但仍然保持较高的粒度,一行信息代表一次业务行为,例如一次下单。
DWS层(数据仓库服务层):以DWD为基础,按天进行轻度汇总。构建命名规范、口径一致的统计指标,为上层提供公共指标,建立汇总宽表。一行信息代表一个主题对象一天的汇总行为,例如一个用户一天下单的次数。
DM层(数据集市层):以DWS层为基础,对数据进行累计汇总。一行信息代表一个主题对象的累计行为,例如用户从注册那天开始一共下单的次数。
ADS层(应用数据存储层):以DWS为基础,按主题进行汇总。为各种统计报表提供数据、宽表集市、趋势指标。这一层的数据已经过高度汇总和加工,可以直接用于业务分析和决策支持。
DIM层(维度层):保存维度数据,主要对业务事实的描述信息,例如何时、何地、何人、渠道等。维度数据用于丰富事实数据的上下文信息,帮助更好地理解和分析数据。
案例分析:某泛金融公司数据仓库转型
以某中美合资的泛金融行业公司为例,该公司在业务快速增长的过程中,遇到了一系列数据平台问题:
- 运维成本高:使用开源工具如Sqoop和Oozie,集成性一般,组件的升级和异常排查需要耗费较多人力成本。
- 平台上手门槛高:业务方因上手门槛高,无法直接参与数据开发,导致大量简单需求堆积。
- 开发模式不合规:数据开发环境仅有一套生产环境,任何变更都直接影响线上业务,操作风险高。
- 任务依赖配置繁琐:通过HDFS信号文件通知实现任务依赖,经常出现信号文件缺失或产出超时导致的下游任务失败。
- 代码质量难监控:开发人员水平不一,代码质量问题频发。
- 数据产出延迟排查困难:每天早上的数据产出经常出现延迟,因依赖链路长,难以排查源头。
- 接口管理混乱:API重复开发、越权调用问题频发。
针对这些问题,袋鼠云数栈团队设计了新的产品架构:
- 降低运维成本:所有模块自研且天然集成,有专门的运维与技术支持团队服务。
- 降低上手门槛:设计了5套环境,让数据开发和业务方都可直接使用。
- 规范开发模式:开发环境分为SIT、UAT、pre-PROD、PROD 4套环境,保证开发、测试、预发布和生产环境的隔离。
- 简化任务依赖配置:无须关心信号文件的创建和状态,每个任务仅需配置其直接上游。
- 提升代码质量:上线代码检查功能,平台内置代码检查规则。
- 多批次监控告警:新增多批次监控功能,实现每个批次分别监控分别告警。
- API统一开发和管理:通过数据服务进行API的统一开发和管理,减少重复开发。
通过上述解决方案,该公司不仅有效解决了使用痛点,还提升了数据开发人员的工作效率和业务人员的满意率。
结语
数据仓库的架构设计是企业信息化建设的重要一环,在提升企业决策速度、打破数据孤岛、提高跨部门协作效率等方面发挥着重要作用。通过合理的架构设计,企业能够更好地整合和分析来自不同来源的数据,为企业管理层提供清晰、全面的数据支持,从而做出更明智的战略和战术决策。同时,良好的架构设计还能应对大数据时代的挑战,处理结构化、半结构化和非结构化数据,为企业提供更全面的数据基础。