数据分层的理解

前言

最近在学习大数据的课程,并且自己也有一些数据开发的经验。因此将自己对数据分层的一些理解写下来作为笔记,供后续参考。#博学谷IT学习技术支持#

数据仓库分层的目的

初次在项目中接触数据分层,架构师告诉我们说分层是为了解耦,并且数据只能引用上一层的数据(ods->cdm->ads),绝对不允许跨层引用。当时表示不解,这不是多此一举吗,直到我参加项目才理解了一二。
要知道为什么分层,首先得了解有哪些层,一般大的层有这三个:ODS\CDM\ADS,在这些层里又分为很多的更细粒度的层。

在这里插入图片描述

ODS层

ODS层是接入数据层,有两种设计的方式:
1.自底向上的设计方式
就是完整地拷贝业务来源系统的所有数据结构,数据,这种方式好处就是一旦cdm数据分析的场景变化,我们只需要去ods捞取数据即可,因为所有数据都在ods;缺点是这种设计需要业务系统的深度参与,每个业务系统都要梳理好完整的业务模型并且录入模型管理系统中,一般外企、银行等公司才能做的起来。
2.自上而下的设计方式
这种方式从需求出发,比如当前分析某个业务域的某个指标,梳理出指标,然后反推到ods层需要哪些数据,再去探查业务系统,将这些数据录入进来。这种方式比较灵活,成本低;缺点是运维难,一旦分析场景变化就要去找业务系统要数据模型。

我觉得第一种方式更加正规,更能从全局去把握数据仓库的设计。可是这是个长期的过程。

CDM层

书上老说CDM层是根据主题建立的,其实CDM层更加要做到的是标准和统一。我觉得有三个方面要做到:1.无论数据清洗是在ods做还是进入cdm层时候做,要保证cdm中的数据都是干净的、格式准确的,这里需要数据仓库的开发规范约束;2.cdm中的每个表、每个字段都要有明确的业务解释,某个字段是什么意思就一定能直接使用,这里可能需要主数据等等的约束或者模型的评审;3.cdm中的模型一定是唯一统一的,不同业务域、主题下面的模型一定是唯一的,不能出现我需要一个模型在两个主题下都能找到,这样不利于使用和维护。

ADS层

ADS就是项目使用者自己设计的地方了,只要能满足业务需求的同时兼顾查询性能即可。

总结

我觉得数据仓库中重点应该在ODS和CDM层。如果是刚刚起步做数据中台的公司,可能更应该将重点放在ODS层,因为这些公司往往业务系统逻辑不清楚、模型不清楚,所以需要跟数据治理一起进行建设。然后CDM层是在ODS基础上建好的,这里更加看重业务的理解,因为维度建模比较简单,只要对业务比较熟悉,很多模型设计就呼之欲出了。
知道了每一层的作用,其实数据分层就知道为什么了,因为前辈们整理不管你怎么做数据开发,一定能抽象成这三个大步骤。自己也会有所体会,例如你不做ods清洗,会发现在开发的时候写sql,不是一堆空值关联不上就是数据莫名炸开,或者string类型去排序出现问题。还有ads去写业务分析指标时候,一个字段写了一堆case when,因为这个字段的业务含义不明确,或者两个业务域的结果算的不一样,因为cdm层就没有统一。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值