作家
登录

【漫谈数据仓库】 如何优雅地设计数据分层

作者: 来源: 2017-10-20 15:02:45 阅读 我要评论

沙龙晃荡 | 去哪儿、陌陌、ThoughtWorks在主动化运维中的实践!10.28不见不散!


一、文┞仿主题

本文重要讲解数据仓库的一个重要环节:若何设计数据分层!其它关于数据仓库的内容可参考之前的文┞仿。

本文对数据分层的评论辩论合适下面一些场景,跨越该范围场景 or 数据仓库经验丰富的大年夜神就不必浪费时光看了。

  • 数据扶植刚起步,大年夜部分的数据经由粗暴的数据接入后就直接对接营业。
  • 数据扶植成长到必定阶段,发明数据的应用混乱无章,各类营业都是大年夜原始数据直接计算而得。
  • 各类反复计算,严重浪费了计算资本,须要优化机能。

二、文┞仿构造

最初在做数据仓库的时刻碰到了很多坑,因为自身资本竽暌剐限,接触数据仓库的时刻,感到在互联网行业琅绫擎的数据仓库成功经验很少,网上很难找到实践性比较强的材料。而那几本经典书本琅绫擎又过于理论,折腾起来真是生不如逝世。还好如今以前了那个坎,是以多花一些时光┞符理本身的思路,赞助其他的小伙伴少踩一些坑。文┞仿的构造如下:

  • 为什么要分层?这个问题被好几个同窗质疑过。是以分层的价值照样要说清跋扈的。
  • 分享一下经典的数据分层模型,以及每一层的数据的感化和若何加工得来。
  • 分享两个数据分层的设计,经由过程这两个实际的例子来解释每一层该怎么存数据。
  • 给出一些建议,不是最好的,然则可以做参考。

0x01 为什么要分层

我们对数据进行分层的一个重要原因就是欲望在治理数据的时刻,能对数据有一个加倍清楚的┞菲控,具体来讲,重要有下面几个原因:

  • 清楚数据构造:每一个数据分层都有它的感化域,如许我们在应用表的时刻能更便利地定位和懂得。
  • 数据血缘追踪:简单来讲可以如许懂得,我们最终给营业诚信的是一能直接应用的┞放营业表,然则它的来源竽暌剐很多,如不雅有一张来源表出问题了,我们欲望可以或许快速精确地定位到问题,并清跋扈它的伤害范围。
  • 削减反复开辟:规范数据分层,开辟一些通用的中心层数据,可以或许削减极大年夜的反复计算。
  • 把复杂问题简单化。讲一个复杂的义务分化成多个步调来完成,每一层只处理单一的步调,比较简单和轻易懂得。并且便于保护数据的精确性,当数据出现问题之后,可以不消修复所有的数据,只须要大年夜有问题的步调开端修复。
  • 樊篱原始数据的异常。
  • 樊篱营业的影响,不必改一次营业就须要从新房入数据。

数据体系中的各个表的依附就像是电线的流向一样,我们都欲望它是规整、流向清楚、便于治理的,如下图:

【座谈数据仓库】 若何优雅地设计数据分层

然则,最终的结不雅大年夜多倒是依附复杂、层级纷乱,想梳理清跋扈一张表的声称门路会比较艰苦,如下图:

【座谈数据仓库】 若何优雅地设计数据分层

0x02 如何分层

一、理论

我们大年夜理论上来做一个抽象,可以把数据仓库分为下面庞个层,即:数据运营层、数据仓库层和数据产品层。

【座谈数据仓库】 若何优雅地设计数据分层

  • ODS 全称是 Operational Data Store,操作数据存储.“面向主题的”,数据运营层,也叫ODS层,是最接近数据源中数据的一层,数据源中的数据,经由采取、洗净、传输,也就说传说中的 ETL 之后,装入本层。本层的数据,总体上大年夜多是按照泉源营业体系的分类方法而分类的。然则,这一层面的数据却不等同于原始数据。在源数据装入这一层时,要进行诸如去噪(例如有一条数据中人的年纪是 300 岁,这种属于异常数据,就须要提前做一些处理)、去重(例如在小我材料表中,同一 ID 却竽暌剐两条反复数据,在接入的时刻须要做一步去重)、字段定名规范等一系列操作。
  • 数据仓库层(DW),是数据仓库的主体.在这里,大年夜 ODS 层中获得的数据按照主题建立各类数据模型。这一层和维度建模会有比较深的接洽,可以多参考一下前面的几篇文┞仿。
  • 数据产品层(APP),这一层是供给为数据产品应用的结不雅数据

在这里,主如果供给给数据产品和数据分析应用的数据,一般会存放在 ES、Mysql 等体系中供线上体系应用,也可能会存在 Hive 或者 Druid 中供数据分析和数据发掘应用。

如我们经常说的报表数据,或者说那种大年夜宽表,一般就放在这里。

二、技巧实践

这三层技巧划分,相对来说比较粗粒度,后面我们会专门细分一下。在此之前,先聊一下每一层的数据一般都是怎么流向的。这里仅仅简单介绍几个常用的对象,侧重中开源界主流。

1. 数据来源层→ ODS层

营业库,这里经常会应用 Sqoop 来采取,比如我们天天准时采取一次。在及时方面,可以推敲用 Canal 监听 Mysql 的 Binlog,及时接入即可。

答:dws 会做汇总,dwd 和 ods 的粒度雷同,这两层之间也没有依附的关系

问:对呀,那如许 dws 琅绫擎的汇总没有经由数据质量和完全度的处理,或者零丁做了这种质量相干的处理,为什么不在 dwd 之上再做汇总呢?我的疑问其实就是,dws的轻度汇总数据结不雅,有没有做数据质量的处理?

 1/4    1 2 3 4 下一页 尾页

  推荐阅读

  程序员漫画,数据库注入式攻击

沙龙晃荡 | 去哪儿、陌陌、ThoughtWorks在主动化运维中的实践!10.28不见不散! 今天我们看一幅数据库注入式进击的漫画。记得上安闲那会儿,我们的师长教师还让我们用一条语句直接在黉舍官>>>详细阅读


本文标题:【漫谈数据仓库】 如何优雅地设计数据分层

地址:http://www.17bianji.com/lsqh/38085.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)