一文解读数据仓库的分层逻辑和原理
一、数据仓库为什么要分层?
数据仓库采用以空间换时间的策略,借助大量预处理操作提升应用系统的用户体验与效率,这使得数据仓库中存在不少冗余数据。若数据仓库未进行分层,一旦源业务系统的业务规则出现变动,整个数据清洗流程都会受到影响,导致工作量剧增。而数据分层能够简化数据清洗流程,其原理是将原本一步到位的工作分解为多个步骤,如同把一项复杂任务拆解成若干简单任务,把一个难以洞悉内部逻辑的大模块转化为多个逻辑明晰的小模块。每一层的数据处理逻辑相对简易且易于理解,如此一来,更易于确保各步骤的准确性。当数据产生错误时,通常仅需针对局部特定步骤做出调整即可。
数据仓库之父 Bill Inmon对数据仓库的定义是:面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策。从定义上来看,就能够明白为什么需要分层。因为数据仓库关键词是面向主题、集成、稳定、反映历史变化、支持管理决策,为实现这些要点那数据就需要做分层架构。
对于数据仓库而言,一个好的分层架构,有以下好处:
1、清晰数据结构:每一个数据分层都有对应的作用域,在使用数据的时候能更方便的定位和理解。
2、数据血缘追踪:提供给业务人员或下游系统的数据服务时都是目标数据,目标数据的数据来源一般都来自于多张表数据。若出现目标数据异常时,清晰的血缘关系可以快速定位问题所在。而且,血缘管理也是元数据管理重要的一部分。
3、减少重复开发:数据的逐层加工原则,下层包含了上层数据加工所需要的全量数据,这样的加工方式避免了每个数据开发人员都重新从源系统抽取数据进行加工。
3、数据关系条理化:源系统间存在复杂的数据关系,比如客户信息同时存在于核心系统、信贷系统、理财系统、资金系统,取数时该如何决策呢?数据仓库会对相同主题的数据进行统一建模,把复杂的数据关系梳理成条理清晰的数据模型,使用时就可避免上述问题了。
4、屏蔽原始数据的影响:数据的逐层加工原则,上层的数据都由下一层的数据加工获取,不允许跳级取数。而原始数据位于数仓的最底层,离应用层数据还有多层的数据加工,所以加工应用层数据的过程中就会把原始数据的变更消除掉,保持应用层的稳定性。
二、数仓分几层?
数据分层方式眼花缭乱,但是首先必须明确一点:不能为了分层而分层。对数据仓库进行分层是以解决当前业务快速的数据支撑为目的,为未来抽象出共性的框架并能够赋能给其他业务线,同时为业务发展提供稳定、准确的数据支撑,并能够按照已有的模型为新业务发展提供方向,也就是数据驱动和赋能。
没有最好的,只有适合的。数仓分层要结合公司业务进行,并且需要清晰明确各层职责,要保证数据层的稳定又要屏蔽对下游影响,一般采用如下分层结构:
分层逻辑
1、ODS(操作数据层,Operational Data Store)
数据来源:主要来源于各种业务系统的原始数据,如数据库的事务日志、文件系统中的业务文件等。这些数据几乎是未经处理的,保留了业务系统产生数据时的原始状态。
数据内容:包括结构化数据(如订单表、用户表中的数据)、半结构化数据(如 XML 或 JSON 格式的配置文件、日志文件)以及非结构化数据(如图片、音频等,但在实际的 ODS 层可能较少涉及非结构化数据的存储,主要是结构化和半结构化数据)。
功能特点:ODS 层的主要功能是对业务数据进行抽取(Extract),实现数据的初步集成,即将不同来源、不同格式的数据进行汇聚,为后续的数据处理提供一个统一的数据基础。它就像是一个数据的 “中转站”,对数据进行简单的清洗(如去除明显错误的数据格式)和转换(如统一日期格式),但不会进行复杂的业务逻辑处理。
2、DWD(明细数据层,Data Warehouse Detail)
数据来源:以 ODS 层为基础,通过对 ODS 层数据进行清洗(Clean)、转换(Transform)和加载(Load)得到。
数据内容:这一层的数据是按照主题域进行组织的明细数据。例如,在电商业务中,会有用户主题、商品主题、订单主题等。以订单主题为例,DWD 层会详细记录每一笔订单的信息,包括订单编号、用户 ID、商品 ID、购买数量、下单时间、支付金额等详细字段,并且这些数据经过了清洗,去除了非法字符、空值等不符合要求的数据。
功能特点:DWD 层主要是为了构建企业级的数据一致性视图,将 ODS 层的数据按照业务主题进行整合和细化。它遵循企业的数据标准和规范,对数据进行更深入的清洗和转换,确保数据的准确性和完整性。这一层的数据是后续数据处理和分析的基础,能够支持简单的数据分析需求,如查询某个用户的历史订单明细。
3、DWS(汇总数据层,Data Warehouse Summary)
数据来源:以 DWD 层的数据为基础,根据业务需求进行汇总(Summarize)和聚合(Aggregate)操作得到。
数据内容:存储的是轻度汇总的数据。例如,对于电商业务,在 DWS 层可能会按照天、周、月等时间维度对订单金额进行汇总,或者按照地区、用户类别等维度对用户购买数量进行汇总。数据的形式可能是每个维度下的汇总统计值,如 “某地区本周的订单总金额”“某类用户本月的购买总次数” 等。
功能特点:DWD 层主要是对明细数据进行粗加工,提供给数据分析人员一些常用的、相对简单的汇总数据,用于快速了解业务的宏观情况。这一层的数据可以支持一些中级复杂度的数据分析,如分析不同时间段内的销售趋势、不同地区的销售差异等,减少了数据查询和计算的复杂度,提高了分析效率。
4、ADS(应用数据层,Application Data Store)
数据来源:主要来源于 DWS 层,也可能会直接从 DWD 层获取部分数据,根据具体的应用场景和业务需求进行定制化处理。
数据内容:这一层的数据是完全为了满足特定的应用需求而准备的,例如为了生成某个业务报表而准备的数据,或者为某个数据挖掘模型提供的训练数据。数据的形式和内容高度依赖于应用场景,可能是经过复杂计算和处理后的结果,如预测的销售额、用户流失概率等。
功能特点:ADS 层是数据仓库分层的最顶层,直接面向数据应用。它将数据处理的结果以最适合应用的方式呈现出来,为企业的决策支持、业务运营等提供数据依据。这一层的数据能够支持高级别的数据分析和应用,如企业战略决策、精准营销活动策划等。
在数据仓库的建设中,分层结构的采用不仅是一种普遍的实践,更是一项关键的战略决策。通过逐层划分,我们能够在复杂的数据体系中保持清晰的组织,提高数据管理的效率和可维护性。分层的架构使得数据仓库更加灵活,能够适应不同层次的用户需求,从而实现数据的广泛共享与高效利用。
FineDataLink——中国领先的低代码/高时效数据集成产品,能够为企业提供一站式的数据服务,通过快速连接、高时效融合多种数据,提供低代码Data API敏捷发布平台,帮助企业解决数据孤岛难题,有效提升企业数据价值。
了解更多数据仓库与数据集成关干货内容请关注>>>FineDataLink官网
免费试用、获取更多信息,点击了解更多>>>体验FDL功能