数据仓库分层(数据仓库分层的好处)
本篇文章给大家谈谈数据仓库分层,以及数据仓库分层的好处对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
2020-08-12:数据仓库是怎么分层的?
说点个人理解,书上的东西永远是怎么把你绕晕怎么写。(不然怎么显示他牛X)
(1)颗粒度(现在只要是建立数据仓库,基本上都会这么说,但实际上就不好说了):数据库一般就是按照这个进行分层的,所谓颗粒度就是数据的细化程度。
一般我们认为最初进来的数据是颗粒度最小的。因为这部分数据基本上是没办法继续拆分的,当然如果最初进来的数据可以继续拆分,那就说明你数据仓库的数据传输接口有问题,数据仓库是一个理论上可以做任何相关查询的数据结构,如果不能做到这一点,那这个数据渣亮滑仓库没有任何意义。
然后这部分数据经过一定的组合,排列、计算等等组成了一个一个的更大颗粒度的数据(下面会举例说明),然后更大颗粒度的数据继续组合,一直循环,并最终展示出来。
用我们的手机通话时间(这里只考虑某号码的通话时间长短,不考虑其他,仅为举例,勿带入如腊现实)举例:某号码每次通话时间(最小颗粒度,也是入库的内容)--某号码每天通话时间(一天可能通话3次,每天的的通话时间就是这三次的和)--每月通话时间(更大颗粒度,一个月的)--每年通话时间--通话总时间
注意:再提醒一下,我给的颗粒度一定不对,仅为说明,不要带入现实应用。
当然中间可能还有每周,每季度等等,然后可以通过这些内容去进行分析,比如一个人每月通话都在12小时以上,突然开始减少或者一直在下跌,那么就说明可能出现什么问题等等。这就需要经营分析,建立数据模型去分析了,这也是数据仓库最大的作用。
(2)人为分层(类似于所谓的拍脑袋决定),虽然上面的颗粒度也算是人为分层,但是好在每个层级的颗粒度都是一样的,当然,并不是每级只放一个颗粒度,某些颗粒度是放在一个级别的,但是还算有一个规则。这种人为分层则是没有规则,大部分是键亩以数据“有用没用”来分层,“有用”的层级就高,“没用的”层级就低,然后没用的数据有用了,或者有用的数据没用了,就再折腾。看起来似乎很灵活,但是整个数据仓库会变得杂乱无章。当然,所谓的数据仓库也是数据库,最终落到一张一张的table上,看起来似乎没什么问题,但是管理起来是真的累啊。
其实还有一些分层方法,比如按流程、按“公司层级”等等,不过这些基本都不怎么主流,上面两种最多,如果碰到真的是第一种的,那就比较正规,如果是第二种,就自求多福吧。
[img]为什么要给数据库分层?
(1)为什么要分层
作为一名数据的规划者,我们肯定希望自己的数据能够有秩序地流转,数据的整个生命周期能够清晰明确被设计者和使用者感知到。直观来讲就是如图这般层次清晰、依赖关系直观。
但是,大多数情况下,我们完成的数据体系却是依赖复杂、层级混乱的。如下图,在不知不觉的情况下,我们可能会做出一套表依赖结构混宏锋运乱,甚至出现循环依赖的数据体系。
因此,我们需要一套行之有效的数据组织和管理方法来让我们的数据体系更有序,这就是谈到的数据分层。数据分层并不能解决所有的数据问题,但是,数据分层却可以给我们带来如下的好处:
1)清晰数据结构: 每一个数据分层都有它的作用域和职责,在使用表的时候能更方便地定位和理解;
2)减少重复开发: 规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算;
3)统蔽梁一数据口径: 通过数据分层,提供统一的数据出口,统一对外输出的数据口径;
4 )复杂问题简单化: 将一个复杂的任务分解成多个步骤来完成,每一层解决特定的问题。
为了满足前面提到好处,通常将数据模型分为三层:数据运营层( ODS )、数据仓库层(DW)和数据应用层(APP)。简单来讲,我们可以理解为:ODS层存放的是接入的原始数据,DW层是存放我们要重点设计的数据仓库中间层数据,APP是面向业务定制的应用数据。下面详细介绍这三层的设计。
(2)数据模型的分层
1)源数据层(ODS)
此层数据无任何更改,直接沿用外围系统数据结构和数据,不对外开放;为临时存储层,是接口数据的临时存储区域,为后一步的数据处理做准备。
2)数据仓库层(DW)
也称为细节层,DW 层的数据应该是一致的、准确的、干净的数据,即对源系统数据进行了清洗(去除了杂质)后的数据。
此层可以细分为三层:
明细层DWD(Data Warehouse Detail) :存储明细数据,此数据是最细粒度的事实数据。该层一般保持和ODS层一样的数据粒度,并且提供一定的数据质量保证。同时,为了提高数据明细层的易用性,该层会采用一些维度退化手法,将维度退化至事实表中,减少事实表和维表的关联。
中间层DWM(Data WareHouse Middle) :存储中间数据,为数据统计需要创建的中间表数据,此数据一般是对多个维度的聚合数据,此层数据通常来源于DWD层的数据。
业务层DWS(Data WareHouse Service) :存储宽表数据,此层数据是针对某个业务领域的聚合数据,业务层的数据通常来源与此层,为什么叫宽表,主要是为了业务层的需要在这一层将业务相关的所有数据统一汇集起来进行存储,方便业务层获取。此层数据通常来源与DWD和DWM层的数据。
在实际计算中,如果直接从DWD或者ODS计算出宽表的统计指标,会存在计算量基轿太大并且维度太少的问题,因此一般的做法是,在DWM层先计算出多个小的中间表,然后再拼接成一张DWS的宽表。由于宽和窄的界限不易界定,也可以去掉DWM这一层,只留DWS层,将所有的数据在放在DWS亦可。
3)数据应用层(DA 或 APP)
前端应用直接读取的数据源;根据报表、专题分析的需求而计算生成的数据。
4)维表层(Dimension)
最后补充一个维表层,维表层主要包含两部分数据:
A)高基数维度数据:一般是用户资料表、商品资料表类似的资料表。数据量可能是千万级或者上亿级别。
B)低基数维度数据:一般是配置表,比如枚举值对应的中文含义,或者日期维表。数据量可能是个位数或者几千几万。
(3)问题扩展
数据仓库系统架构
上图系统各部分的执行流程是:
1)确定分析所依赖的源数据。
2)通过ETL将源数据采集到数据仓库。
3)数据按照数据仓库提供的主题结构进行存储。
4)根据各部门的业务分析要求创建数据集市(数据仓库的子集)。
5)决策分析、报表等应用系统从数据仓库查询数据、分析数据。
6)用户通过应用系统查询分析结果、报表。
(4)结合项目中使用
电商网站的数据体系设计,这里针对用户访问日志这一部分数据进行举例说明:
在ODS层中,由于各端的开发团队不同或者各种其它问题,用户的访问日志被分成了好几张表上报到了我们的ODS层。
为了方便大家的使用,我们在DWD层做了一张用户访问行为天表,在这里,我们将PC网页、H5、小程序和原生APP访问日志汇聚到一张表里面,统一字段名,提升数据质量,这样就有了一张可供大家方便使用的明细表了。
在DWM层,我们会从DWD层中选取业务关注的核心维度来做聚合操作,比如只保留人、商品、设备和页面区域维度。类似的,我们这样做很多个DWM的中间表。
然后在DWS层,我们将一个人在整个网站中的行为数据放到一张表中,这就是我们的宽表了,有了这张表,就可以快速满足大部分的通用型业务需求了。
最后,在APP应用层,根据需求从DWS层的一张或者多张表取出数据拼接成一张应用表即可。
数据仓库分层架构深度讲解
分层的主要原因是在管理数据的时候,能对数据有一个更加清晰的掌控,详细来讲,主要有下面几个原因返带弯:
清晰数据结构:
每一个数据分层都有它的作用域,这样我们在使用表的时候能更方便地定位和理解。
方便数据血缘追踪:
简单来说,我们最终给业务呈现的是一个能直接使用业务表,但是它的来源有很多,如果有一张来源表出问题了,我们希望能够快速准确地定位到问题,并清楚它的危害范围。
减少重复开发:
规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算。
把复杂问题简单化:
将一个复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤 ,比较简单和容易理解。而且便于维护数据的准确性,当数据出现问题之后,可以不用修复所有的数据,只需要从有问题的步骤开始修复。
屏蔽原始数据的异常:
屏蔽业务的影响,不必改一次业务就需要重新接入数据
数据分层每个企业根据自己的业务需求可以分成不同的层次,但是最基础的分层思想,理论上 数据分为三个层 , 数据运营层 、 数据仓库层 和 数据服务层 。基于这个基础分层之上添加新的层次,来满足不同的业务需求。
数据运营层(ODS)
Operate data store(操作数据-存储),是最接近数据源中数据的一层,数据源中的数据,经过抽取、洗净、传输,也就说传说中的ETL之后,装入ODS层 。本层的数据,总体上大多是按照源头业务系统的分类方式而分类的。例如:MySQL里面的一张表可以通过sqoop之间抽取到ODS层ODS层数据的来源方式:
数据仓库层(DW)
Data warehouse(数据仓库) 。在这里, 从ODS层中获得的数据按照主题建立各种数据模型 。例如 以研究人的旅游消费为主题的数据集中 ,便可以结合航空公司的登机出行信息,以及银联系统的刷卡记录,进行结合分析,产生数据集。在这里,我们需要了解四个概念:维(dimension)、事实(Fact)、指标(Index)和粒度( Granularity)。
数据服务层/应用层(ADS):
Application Data Service(应用数据服务)。该层主要是提供数据产品和数据分析使用 的数据,一般会存放在ES、MySQL等系统中供线上系统使用,也可能会存在Hive或者Druid中供数据分析和数据挖掘使用。例如:我们经常说的报表数据,或者说那种大宽表,一般就放在这里。
ODS 数据准备层
功能:
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
根据DW层经过聚合汇总统计后的粗粒度事实表
建模方式及原则:
本篇文章主要讲解数仓项目中为什么分层,比如 我们在完成一个需要的需求的时候也许只需要一个复杂的SQL语句就可以完成。但一个复杂的SQL语句方便后面维护吗?当出现了问题方便追踪吗? 这时候就体现出分层的好处。顺便给大家分享阿里的数仓模型是什么样的。信自己,努力和汗水总会能得到回报的。我是大数据老哥,我们下期见~~~
数据仓库为什么要分层
1.一种用于在将数据项存储到数据库的基础上确保数据相容性的方法,该慧燃卜数据项具有段首一个标识符,用于将该数据项链接到目的文件,借此,将用于目的文件的标识符和定位器与数据项一起存储在数前穗据库中,其特征在于该方法包括以下步骤:检查标识符和定位器的当前组合是否已经存储在数据库中(步骤11),如果是,则将存储的组合用于数据项(步骤12),在该标识符和定位器的当前组合并未存储在数据库中的情况下,检查该标识符或者该定位器是否已经存储在数据库中(步骤13,15),如果是,则用单义的组合替换标识符和定位器的当前组合(步骤14,16),并且将该单义的组合与该数据项一起存储(步骤17),以及将标识符和定位器的当前组合连同其它的数据项一起存储(步骤17)。
数据化过程中数据如何实现分层_集
把数据仓库分为下面三个层,即:数据运营层、数据仓库层和数据产品层。
1.“面向主题的”,数据运营层,也叫ODS层,是最接近数据源中数樱逗据的一层,数据源中的数据,经过抽取、洗净、传输,也就说传说中的ETL之后,装入本层。本层的数据脊启卖,总体上大多是按照源头业务系统的分类方式而分类的。
2.数据仓库层(DW),是数据仓库的主体,在旁竖这里,从ODS层中获得的数据按照主题建立各种数据模型。例如以研究人的旅游消费为主题的数据集中,便可以结合航空公司的登机出行信息,以及银联系统的刷卡记录,进行结合分析,产生数据集。
3.数据产品层(APP),这一层是提供为数据产品使用的结果数据,主要是提供给数据产品和数据分析使用的数据,一般会存放在es、mysql等系统中供线上系统使用,也可能会存在Hive或者Druid中供数据分析和数据挖掘使用。
关于数据仓库分层和数据仓库分层的好处的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。