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

  • 时间:
  • 浏览:0

其它数据源会比较多样性,这和具体的业务相关,不再赘述。

问答二: ods 和 dwd 的区别

另外,每一层的名字并非太过在意,该人所有按照喜好就好。

答:并行的,dw 层

问答一: dws 和 dwd 的关系

该人所有从理论上来做俩个多抽象,都前要把数据仓库分为下面俩个多层,即:数据运营层、数据仓库层和数据产品层。

这里解释一下DWS、DWD、DIM和TMP的作用。

答:有你這個大什么的问题不太好回答,我感觉主要假如明确一下数据集市层是干那些的,由于分析你的数据集市层放的假如其他都前要供业务方使用的宽表表,插进 app 层就行。由于分析他说的数据集市层是俩个多比较泛其他的概念,那末确实 dws、dwd、app 那些合起来都否是 数据集市的内容。

本文分享了笔者该人所有对数据仓库的其他理解和想法,不一定准确假如一定通用,为社 让都前要作为俩个多参考的思路。有那些大什么的问题欢迎多交流。 

在这里,主假如提供给数据产品和数据分析使用的数据,一般会存插进 ES、Mysql 等系统中供线上系统使用,也由于分析会位于 Hive 由于分析 Druid 中供数据分析和数据挖掘使用。

答:dws 会做汇总,dwd 和 ods 的粒度相同,这两层之间也那末依赖的关系

有该人所有问了其他大什么的问题,有其他事先的确没讲清楚,补到这里。

最初在做数据仓库的事先遇到了太久坑,由于分析自身资源有限,接触数据仓库的事先,感觉在互联网行业后边的数据仓库成功经验很少,网上很难找到实践性比较强的资料。而那几本经典书籍后边又过于理论,折腾起来简直生不如死。还好现在过去了那个坎,为社 让多花其他时间派发该人所有的思路,帮助其他的小伙伴少踩其他坑。文章的价值形式如下:

应用层(App)

问:还是不太明白 ods 和 dwd 层的区别,有了 ods 层后感觉 dwd 那末那些用了。

本文作者:佚名

0xFF 总结

本文来自云栖社区战略媒体合作伙伴“51CTO”,了解相关信息都前要关注。

一、文章主题

问:dws 和dwd 是并行而前要先后顺序?

派发日志,线上系统会打入各种日志,那些日志一般以文件的形式保存,该人所有都前要选则用 Flume 定时抽取,也都前要用用 Spark Streaming 由于分析 Storm 来实时接入,当然,Kafka 也会是俩个多关键的角色。

缓冲层(buffer)

二、文章价值形式

该人所有对数据进行分层的俩个多主要由于假如希望在管理数据的事先,能对数据有俩个多更加清晰的掌控,删剪来讲,主要有下面哪几只由于:

问答三:app 层是干那些的?

问:那存到 Redis、ES 中的数据否是 app层吗?

轻度汇总层(MID或DWB, data warehouse basis)

二、技术实践

0x02 要怎样分层

这后边也主要分有你這個类型:

问:那确实对于同俩个多数据,有你這個个多过程是串行的?

答:ods 直接到 dws 就好,没必要过 dwd,我举个例子,你的浏览商品行为,我做一层轻度汇总,就直接插进 dws 了。但前要你的资料表,要从好多表凑成一份,该人所有从四五份该人所有资料表中凑出来了一份删剪的资料表插进了 dwd 中。为社 让在 app 层,该人所有要出一张画像表,所含用户资料和用户近一年的行为,该人所有就直接从dwd中拿资料, 为社 让再在 dws 的基础上做一层统计,就成俩个多app表了。当然,这前要绝对,dws 和 dwd 有那末依赖关系主要看有那末有你這個需求。

前面提到的有你這個设计确实相对来讲由于分析很删剪了,为社 让由于分析层次会有其他多,为社 让在区分一张表到底该存插进那些位置的事先由于分析还有不小的疑惑。该人所有在有你這個章里再设计一套数据仓库的分层,一并在前面的基础加进进维表和其他临时表的考虑,来让该人所有的方案更优雅其他。

0x03 举个例子

一、理论

明细层(ODS, Operational Data Store,DWD: data warehouse detail)

canal日志合成数据的妙招待研究。

主题层(DM,data market或DWS, data warehouse service)

业务库,这里一直会使用 Sqoop 来抽取,比如该人所有每天定时抽取一次。在实时方面,都前要考虑用 Canal 监听 Mysql 的 Binlog,实时接入即可。

下图,做了其他小的改动,该人所有加进了上一节的Buffer层,把数据集市层和轻度汇总层插进同俩个多层级上,一并独立出来了维表和临时表。

答:嗯,我是从前理解的,站在俩个多理想的强度来讲,由于分析 ods 层的数据就非常规整,基本能满足该人所有绝大次要的需求,这当然是好的,这事先 dwd 层确实也没太久必要。 为社 让现实中接触的情況是 ods 层的数据很难保证质量,毕竟数据的来源多种多样,推送方也会有该人所有的推送逻辑,在有你這個情況下,该人所有就前要通过额外的一层 dwd 来屏蔽其他底层的差异。

2. ODS、DW → App层

0x05 问答

问:我要花费明白了,是前要说 dwd 主假如对 ods 层做其他数据清洗和规范化的操作,dws 主假如对 ods 层数据做其他轻度的汇总?

为社 让,最终的结果大多却是依赖错综复杂、层级混乱,想梳理清楚一张表的声称途径会比较困难,如下图:

数据体系中的各个表的依赖就像是电线的流向一样,该人所有都希望它是规整、流向清晰、便于管理的,如下图:

问:对呀,那从前 dws 后边的汇总那末经过数据质量和删剪度的避免,由于分析单独做了有你這個质量相关的避免,为那些什么都那末 dwd 之上再做汇总呢?我的大什么的问题确实假如,dws的轻度汇总数据结果,有那末做数据质量的避免?

这三层技术划分,相对来说比较粗粒度,后边该人所有会专门细分一下。在此事先,先聊一下每一层的数据一般前要为社 流向的。这里仅仅简单介绍哪几只常用的工具,侧重中开源界主流。

原文发布时间为:2017-10-20

0x04 要怎样更优雅其他

本文对数据分层的讨论适合下面其他场景,超过该范围场景 or 数据仓库经验丰富的大神就并非浪费时间看完。

如该人所有一直说的报表数据,由于分析说那种大宽表,一般就插进这里。

数据分层是数据仓库非常重要的俩个多环节,它决定的不仅仅是俩个多层次的大什么的问题,还直接影响到血缘分析、价值形式自动生成、元数据管理等一系列功能的建设。为社 让适于尽早考虑。

本文主要讲解数据仓库的俩个多重要环节:要怎样设计数据分层!其它关于数据仓库的内容可参考事先的文章。

网上的例子太久,就不列了,只举个笔者早期参与设计的数据分层例子。分析一下当初的想法,以及有你這個设计的严重不足。上原图和内容。

注意: 在这层,理应前要简单的数据接入,假如要考虑一定的数据清洗,比如异常字段的避免、字段命名规范化、时间字段的统一等,一般那些很容易会被忽略,为社 让却至关重要。很重是后期该人所有做各种价值形式自动生成的事先,会十分有用。后续会有文章来分享。

当初的设计总共分了 6 层,其中加进元数据后,还有5层。下面分析一下当初的俩个多设计思路。

答:对的,都前要大致从前理解。

这里确实假如该人所有现在大数据技术发挥作用的俩个多主要战场。 该人所有的数据主要会有俩个多大的来源:

问:感觉数据集市层是前要没地方放了,各个业务的数据集市表是应该在 dwd 还是在 app?

0x01 为那些要分层

答:否是 的,我该人所有的理解,app 层主要存放其他相对性成熟是什么是什么是什么是什么 图片 的句子的句子期期是什么的表,能供业务侧使用的。那些表都前要在 Hive 中,也都前也不我从 Hive 导入 Redis 由于分析 ES 有你這個查询性能比较好的系统中。

1. 数据来源层→ ODS层