数据仓库分层架构深度讲解

前言

          咱们在数仓项目的时候每每是须要将它分层的,可是为何分层你真正的了解过吗,那它分层的好处又是什么呢。好咱们今天就针对这个话题进行讲解。若是你还不了解数仓中的模型能够去看这篇(数仓模型设计详细讲解),编写不易请给个一键三连。0f8f7a06f767ab238cff5a95c66bb201.jpg前端

1、为何要分层

         分层的主要缘由是在管理数据的时候,能对数据有一个更加清晰的掌控,详细来说,主要有下面几个缘由:mysql

清晰数据结构:git

         每个数据分层都有它的做用域,这样咱们在使用表的时候能更方便地定位和理解。程序员

方便数据血缘追踪:github

          简单来讲,咱们最终给业务呈现的是一个能直接使用业务表,可是它的来源有不少,若是有一张来源表出问题了,咱们但愿可以快速准确地定位到问题,并清楚它的危害范围。面试

减小重复开发:sql

          规范数据分层,开发一些通用的中间层数据,可以减小极大的重复计算。数据库

把复杂问题简单化:数据结构

         将一个复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤,比较简单和容易理解。并且便于维护数据的准确性,当数据出现问题以后,能够不用修复全部的数据,只须要从有问题的步骤开始修复。架构

屏蔽原始数据的异常:

         屏蔽业务的影响,没必要改一次业务就须要从新接入数据

2、数仓分层思想

         数据分层每一个企业根据本身的业务需求能够分红不一样的层次,可是最基础的分层思想,理论上数据分为三个层数据运营层数据仓库层数据服务层。基于这个基础分层之上添加新的层次,来知足不一样的业务需求。

数据运营层(ODS)

         Operate data store(操做数据-存储),是最接近数据源中数据的一层,数据源中的数据,通过抽取、洗净、传输,也就说传说中的ETL以后,装入ODS层。本层的数据,整体上大可能是按照源头业务系统的分类方式而分类的。例如:MySQL里面的一张表能够经过sqoop之间抽取到ODS层 ODS层数据的来源方式:

  • 业务库                 常常会使用sqoop来抽取,好比咱们天天定时抽取一次。在实时方面, 能够考虑用canal监听mysql的binlog,实时接入便可。
  • 埋点日志                  线上系统会打入各类日志,这些日志通常以文件的形式保存,咱们能够选择用flume定时抽取,也能够用用spark streaming或者Flink来实时接入,固然,kafka也会是一个关键的角色。
  • 消息队列                 来自ActiveMQ、Kafka的数据等

数据仓库层(DW)

         Data warehouse(数据仓库)。在这里,从ODS层中得到的数据按照主题创建各类数据模型。例如以研究人的旅游消费为主题的数据集中,即可以结合航空公司的登机出行信息,以及银联系统的刷卡记录,进行结合分析,产生数据集。在这里,咱们须要了解四个概念:维(dimension)、事实(Fact)、指标(Index)和粒度( Granularity)。

DW数据分层,由下到上为 DWD,DWB,DWS
DWD:data warehouse detail 细节数据层,是业务层与数据仓库的隔离层。DWB:data warehouse base 基础数据层,存储的是客观数据,通常用做中间层,能够认为是大量指标的数据层。DWS:data warehouse service 服务数据层,基于DWB上的基础数据,整合汇总成分析某一个主题域的服务数据,通常是宽表

数据服务层/应用层(ADS):        

Application Data Service(应用数据服务)。该层主要是提供数据产品和数据分析使用的数据,通常会存放在ES、MySQL等系统中供线上系统使用,也可能会存在Hive或者Druid中供数据分析和数据挖掘使用。例如:咱们常常说的报表数据,或者说那种大宽表,通常就放在这里。

3、阿里数据仓库分层架构

6225d07e75b17a74f88b69aa738236b4.jpgODS 数据准备层

功能:         

        ODS层是数据仓库准备区,为DWD层提供基础原始数据,可减小对业务系统的影响

建模方式及原则:     

       从业务系统增量抽取、保留时间由业务需求决定、可分表进行周期存储、数据不作清洗转换与业务系统数据模型保持一致、按主题逻辑划分

DWD 数据明细层

功能:       

      为DW层提供来源明细数据,提供业务系统细节数据的长期沉淀,为将来分析类需求的扩展提供历史数据支撑

建模方式及原则:       

        数据模型与ODS层一致,不作清洗转换处理、为支持数据重跑可额外增长数据业务日期字段、可按年月日进行分表、用增量ODS层数据和前一天DWD相关表进行merge处理

DW(B/S) 数据汇总层

功能:         

       为DW、ST层提供细粒度数据,细化成DWB和DWS;       

       DWB是根据DWD明细数据进行转换,如维度转代理键、身份证清洗、会员注册来源清晰、字段合并、空值处理、脏数据处理、IP清晰转换、帐号余额清洗、资金来源清洗等;      

        DWS是根据DWB层数据按各个维度ID进行高粒度汇总聚合,如按交易来源,交易类型进行汇合

建模方式及原则:

         聚合、汇总增长派生事实;

         关联其它主题的事实表,DW层可能会跨主题域;

         DWB保持低粒度汇总加工数据,DWS保持高粒度汇总数据;

         数据模型可能采用反范式设计,合并信息等。

Data Market (数据集市)层

功能:        

       能够是一些宽表,是根据DW层数据按照各类维度或多种维度组合把须要查询的一些事实字段进行汇总统计并做为单独的列进行存储;         

        知足一些特定查询、数据挖掘应用         

         应用集市数据存储

建模方式及原则:         

     尽可能减小数据访问时计算(优化检索)         

     维度建模,星型模型;        

     分表存储

ST 数据应用层(ADS层)

功能:        

       ST层面向用户应用和分析需求,包括前端报表、分析图表、KPI、仪表盘、OLAP、专题等分析,面向最终结果用户         

     适合作OLAP、报表模型,如ROLAP,MOLAP

联机事务处理OLTP、联机分析处理OLAP。
OLTP是传统的关系型数据库的主要应用,主要是基本的、平常的事务处理,例如银行交易。
OLAP是数据仓库系统的主要应用,支持复杂的分析操做,侧重决策支持,而且提供直观易懂的查询结果。   
联机分析处理的用户是企业中的专业分析人员及管理决策人员,他们在分析业务经营的数据时,从不一样的角度来审视业务的衡量指标是一种很天然的思考模式。例如分析销售数据,可能会综合时间周期、产品类别、分销渠道、地理分布、客户群类等多种因素来考量。

         根据DW层通过聚合汇总统计后的粗粒度事实表

建模方式及原则:         

保持数据量小;        

维度建模,星形模型;         

  各位维度代理键+度量;        

 增长数据业务日期字段,支持数据重跑;       

 不分表存储

小结

         本篇文章主要讲解数仓项目中为何分层,好比咱们在完成一个须要的需求的时候也许只须要一个复杂的SQL语句就能够完成。但一个复杂的SQL语句方便后面维护吗?当出现了问题方便追踪吗? 这时候就体现出分层的好处。顺便给你们分享阿里的数仓模型是什么样的。信本身,努力和汗水总会能获得回报的。我是大数据老哥,咱们下期见~~~

获取Flink面试题,Spark面试题,程序员必备软件,hive面试题,Hadoop面试题,Docker面试题,简历模板等资源请去GitHub自行下载 https://github.com/lhh2002/Framework-Of-BigData

相关文章
相关标签/搜索