前言我们在数据仓库项目中经常需要分层,但是你真的了解为什么要分层,分层有什么好处吗?好吧,今天我们就来解释一下这个话题。对数据仓库中的模型不了解的可以看这篇文章(数据仓库模型设计详解),写的不好的请给我一键三连。图1.分层分层的主要原因是为了在管理数据时对数据有更清晰的控制。详细来说,主要有以下几个原因:数据结构清晰:每个数据层都是有它的作用域的,这样我们在使用表的时候更方便的定位和理解。方便的数据沿袭追踪:简单的说,我们最终呈现给业务的是一张可以直接使用的业务表,但是它的来源有很多。如果其中一个源表出现问题,我们希望能够快速准确地定位问题,并了解其危害范围。减少重复开发:规范数据分层,开发一些通用的中层数据,可以大大减少重复计算。把复杂的问题简单化:把一个复杂的任务分解成多个步骤来完成,每一层只处理一个步骤,比较简单易懂。而且,便于保持数据的准确性。当数据出现问题时,不需要修复所有数据,只需要从有问题的步骤开始修复即可。屏蔽原始数据的异常:屏蔽业务的影响,不需要更改一次业务,需要重新访问数据2.数据仓库分层思维Datalayering每个企业可以根据不同的层次划分其业务需求,但最基本的理论上,数据分为三层,数据操作层、数据仓库层和数据服务层。在此基础层的基础上增加新的层,以满足不同的业务需求。数据操作层(ODS)操作数据存储(operationaldata-storage),是数据源中最接近数据的层。对数据源中的数据进行抽取、清洗、传输,也就是传说中的ETL之后,LoadODS层。这一层的数据一般按照源业务系统的分类方式进行分类。比如:MySQL中的一张表,可以通过sqoop抽取到ODS层。ODS层数据来源:业务库经常使用sqoop来提取,比如我们每天定时提取。实时性方面,可以考虑使用canal监控mysql的binlog,实时访问。埋点日志在线系统会进入各种日志。这些日志一般以文件的形式保存。我们可以选择使用flume定时抽取,也可以使用sparkstreaming或者Flink实时访问。当然,Kafka也会是一个关键的角色。消息队列来自于ActiveMQ、Kafka等数据仓库层(DW)数据仓库(datawarehouse)。在这里,从ODS层获取的数据按照主题建立各种数据模型。例如,可以将研究者旅游消费为主题的数据集与航空公司的登机和旅游信息、银联系统的刷卡记录进行组合分析,生成一个数据集。在这里,我们需要了解四个概念:维度、事实(Fact)、索引(Index)和粒度(Granularity)。DW数据分层,从下往上是DWD、DWB、DWSDWD:数据仓库明细数据层明细是业务层和数据仓库之间的隔离层。DWB:datawarehousebase基础数据层,存储客观数据,一般用作中间层,可以认为是大量指标的数据层。DWS:datawarehouseservice服务数据层,基于DWB上的基础数据,整合归纳分析某个学科领域的服务数据,一般为宽表数据服务层/应用层(ADS):ApplicationDataService(应用数据服务)。该层主要提供数据产品和用于数据分析的数据。在线系统一般存储在ES、MySQL等系统中,也可能存储在Hive或Druid中用于数据分析和数据挖掘。比如:我们常说的报表数据,或者宽表的那种,一般都放在这里。3、阿里数据仓库分层架构ODS数据准备层功能:ODS层是数据仓库准备区,为DWD层提供基础原始数据,可以减少对业务系统的影响。建模方法及原则:从业务系统中增量抽取,保留时间由业务需求决定,表可分周期存储,数据不清洗转换与业务系统数据模型一致,DWD数据明细层按主题逻辑划分功能:为DW层提供源明细数据,提供业务系统明细数据的长期沉淀,为以后分析需求的扩展提供历史数据支持建模方法和原理:数据模型与ODS层保持一致,无需清洗和转换处理,可以增加一个数据业务日期字段,支持数据重跑,可以年月日分表,使用增量ODS层数据和前一天的DWD相关表进行合并处理DW(B/S)数据汇总层功能:为DW和ST层提供细粒度的数据r,细化为DWB和DWS;DWB是根据DWD明细数据进行转换,如维度转移代理密钥、身份证清洗、会员注册来源清除、字段合并、空值处理、脏数据处理、IP清除转换、账户余额清洗、资金来源清洗等。;DWS是基于DWB层将数据按照交易来源、交易类型等各个维度ID进行高粒度的归纳和聚合。建模方法和原则:聚合和汇总添加派生事实;链接其他主题的事实表,DW层可能会跨主题域;DWB维护低粒度汇总处理数据,DWS维护高粒度汇总数据;数据模型可能采用反范式设计、合并信息等。DataMarket(数据集市)层功能:可以是一些宽表,根据DW层数据按各种维度或多个维度的组合,一些事实字段需要查询的汇总统计为单独的列;满足一些特定的查询、数据挖掘应用、数据存储建模方法和原则:最小化数据访问计算(optimizeretrieval)维度建模、星型模式;分表存储ST数据应用层(ADS层)功能:ST层向用户应用和分析需求,包括前端报表、分析图表、KPI、仪表板、OLAP、专题分析等。对于最终结果用户,它适用于OLAP和报表模型,如ROLAP、MOLAPOLTP、OLAP。OLTP是传统关系型数据库的主要应用,主要用于基础的、日常的事务处理,比如银行交易。OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重于决策支持,提供直观易懂的查询结果。OLAP的使用者是企业中的专业分析人员和管理决策者。他们在分析业务运营的数据时,从不同的角度去看待业务的衡量指标,是一种很自然的思维方式。例如,在分析销售数据时,可能会考虑时间段、产品类别、分销渠道、地域分布和客户群体等多个因素。根据DW层聚合汇总统计后的粗粒度事实表建模方法和原则:保持数据量小;维度建模,明星模型;每个维度代理键+度量;增加数据业务日期字段,支持数据重跑;非表存储总结本文主要讲解数据仓库项目为什么要分层。比如当我们完成一个必填的需求时,可能只需要一个复杂的SQL语句就可以完成。但是复杂的SQL语句以后维护起来容易吗?问题发生时是否易于跟踪?这时候分层的好处就体现出来了。顺便给大家分享一下阿里的数据仓库模型是什么样子的。相信自己,努力和汗水总会得到回报。我是大数据哥,下期见~~~本文转载自微信公众号“大数据哥”,可通过以下二维码关注。转载本文请联系大数据小哥公众号。
