首页 > 编程知识 正文

数据仓库ods层和dw层的区别,ODS和数据仓库的区别

时间:2023-05-03 22:13:13 阅读:230340 作者:3042

在第一节内容,提到了数据仓库和数据库的区别,数据仓库作主要面向分析场景的数据库,又进行了“分层”的设计,因此出现了ods层、edw、dm层的设计(也有的公司会使用超过3层的设计模式),其核心都是为了让数据仓库在应对分析场景、业务应用场景时更高效。

进入正文:

为什么要分层?

用一个例子来解释下这事儿:kydjy家里有个大鱼塘,里面有各种品种的鱼,每天鱼塘中都新增有一万斤鱼可以售卖(不卖的话,他们既不会长大,反而会和其他未成熟的鱼抢占资源),最开始,kydjy用最原始的方式卖鱼:卖家每天早上都集中在鱼塘边,等着收网后,从活蹦乱跳的鱼堆里挑走自己想要的鱼(品种、大小),然后还要到统一到称磅处进行结算。

后来kydjy发现这样不对劲,人工挑选效率不高,最后统一到kydjy这里磅秤收银又是一条长队,kydjy数钱数到手抽筋,但是这1万斤鱼最后被卖出去的只有一半,另外一半因为来不及被合适的买家挑走,死在了岸上。。。

于是,kydjy想了一个办法,在鱼塘边建了一个仓库,每天一早,你和工人们把鱼先打上来,把里面的小鱼小虾和各种不明生物都剔除掉,然后放到仓库里有水的大ttdc里。客人直接到鱼市仓库里挑鱼,效率高了不少。后来kydjy又把鱼分了类,草鱼、黑鱼、章鱼、金枪鱼,按照不同的重量等级放在不同的区域,不同的ttdc里。而且因为有了鱼,不用担心鱼很快死掉,客人不用都挤在早上来买鱼,kydjy可以一整天都一直在数钱了,很开心。

再后来,kydjy的一个大客户说,我每天要的鱼:种类、大小、总重都是固定的,能不能把这些鱼处理好放在单独箱子里,把价格计算好,这样我就不用挤在人堆里挑鱼,来了直接就把鱼拉走了。能搞定吗?我加5毛钱!kydjy拍了下大腿,这5毛钱必须挣啊, 于是按照客户要求,把鱼给整理好放在单独的仓库里,等着客户来即拿即走。这样的体验对客户当然好,越来越多的客户选择多交5毛钱获得整理好的鱼,kydjy的生意越来越好,大家都说卖鱼的kydjy比隔壁kydjy好多了。

这个例子解释了为什么要做数据仓库内的分层。

每天成熟的1万斤鱼,相当于从数据库定期同步过来的原始数据,一般会把它存在DWD层(Data Warehouse Detail,有时也称ODS层)。直接从DWD层的原始数据读取,清洗、筛选的工作会浪费大量资源,最后导致这些数据没有充分利用(一半的鱼没有卖出去)。

为了提高效率,可以从DWD层对数据做了初步筛选(把小鱼小虾和不明生物剔除,把鱼按品种、大小放到ttdc里),放入数据中间层,一般称为EDW层(Enterprise Data Warehouse),能够一定程度提高数据应用效率。

一些需求明确,且应用场景广泛的数据需求(大客户),可以从DWD层或者EDW层基础上进行数据清洗、抽取,和计算(给大客户定制的单独鱼箱),能够进一步提高效率。而且这种固定化的数据处理,可以安排在机器资源空闲,如凌晨时间进行计算,能有效缓解ssdcc时的压力(客人不用挤在早上买鱼)。

这里有几点内容,希望你留意:

1. 数据仓库的分层,只是一个概念上、处理方式上的分层,在计算机处理中,大多还是在一个数据库中、通过建不同的数据表来实现的,并不存在严格的物理区隔;

2. 不要在意分层的命名,你乐意的话,把它叫做:1、2、3层,但为了与别人的理解保持一致,还是需要跟各自公司的数据开发同事沟通清楚,明确各层的数据含义;

3. 有些公司的实践中,会在数据仓库中分3层以上,比如会将EDW层分解为两层,分别为轻度汇总层、中度汇总层。这是跟着业务需要走了,理解分层的目的即可;

4. DM层并不一定从EDW层中获取,有依赖关系的字段,在没有被提取到EDW层之前,仍然需要从ODS层获取;

5. 同理:数据应用也并不一定要从EDW层或者DM层中获取,临时类需求,从ODS层反而更快(临时来鱼塘边买鱼的散客);

6. 在数据处理能力不足够,应用场景不明确时,并不是数据越多越好,不能被有效利用的数据反而会占据存储空间(鱼塘每天新成熟的1万斤鱼,没有卖掉的能力,就会浪费掉)。

在整个数据仓库分层建设的过程中,数据产品需要做什么呢?

1. 数据库的数据并不是默认一定都会进数据仓库,所以需要在开发任务中,明确标记要从业务数据库同步到数据仓库的数据表有哪些,以及同步的周期、频率;

2. 从ODS-EDW-DM层,向上逐步建表分层的核心是为了提高数据应用效率,需要数据产品经理深入业务应用场景,从中抽象出数据应用的流程,并结合当前的数据表建设情况,提出好的数据分层需求(应当对数仓表结构比较清晰,能说清楚需要从哪些依赖表获取哪些字段的数据)。一个良好设计的数据表,应当能长期地、被多个应用段调用;

3. 持续维护优化数据仓库的表结构,这也意味着数据产品要保持对业务理解的敏感度。

总结一下:

1. 数据仓库分层的核心:提高数据应用的效率、效果;

2. 分层的定义:

3. 数据仓库在底层和应用层的位置:

文章列表:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。