赞
踩
1.为什么分层?
1.空间换时间
2.便于计算
3.逻辑清晰
2.分层划分
业务数据库(mysql,mongdb,oracle数据源)===>也叫src层
ODS(可操作数据层)
DW(数据仓库层)
DWD层 (数据明细层)
负责数据的最细粒度的数据
经过了ODS层清洗(去空),去重,去燥,去除大于或者小于一定阈值的明细数据。
DWM层 (数据中间层)
在DWD层基础上,进行轻度汇总,结合常用维度(时间,地点,组织层级,用户,商品等)
DWS层(数据汇总层)宽表
面向主题的汇总,维度相对来说比较少
高度聚合的指标
电商为例,以人这个主题。人(用户):当前人登录次数,浏览次数,购买次数,访问频度等。
DAS(数据应用服务层)
业务主题,提供业务应用的数据准备。
BDM 层(源数据层):缓冲数据,源数据的直接映射
FDM 层(对 BDM 源数据层的数据进行清洗和预处理):基础数据层,数据拉链处理、分区处理 GDM 层(对 FDM 层数据 进行统计一些指标数据):通用聚合
ADM 层(对 GDM 层指标数据 进行指标数据的业务汇总分析):高度聚合
2.Hive(十)Hive性能调优总结
Hive(十)Hive性能调优总结 - Frankdeng - 博客园
Hive调优(语法与参数层面优化)_吃果冻不吐果冻皮-CSDN博客
3.数据仓库分层实现
4.数仓建模
2.1为什么分层
为什么要分层?
- 清晰数据结构:每一个数据分层都有它的作用域,这样我们在使用表的时候能更方便地定位和理解。
- 数据血缘追踪:简单来讲可以这样理解,我们最终给业务诚信的是一能直接使用的张业务表,但是它的来源有很多,如果有一张来源表出问题了,我们希望能够快速准确地定位到问题,并清楚它的危害范围。
- 减少重复开发:规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算。
- 把复杂问题简单化。讲一个复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤,比较简单和容易理解。而且便于维护数据的准确性,当数据出现问题之后,可以不用修复所有的数据,只需要从有问题的步骤开始修复。
- 屏蔽原始数据的异常。
- 屏蔽业务的影响,不必改一次业务就需要重新接入数据。
ODS层
ODS(Operational Data Store)操作数据存储
是最接近数据源中数据的一层,数据源中的数据,经过抽取、洗净、传输,也就说传说中的ETL之后,装入本层;一般来说ODS层的数据和源系统的数据是同构的,主要目的是简化后续数据加工处理的工作。从数据粒度上来说ODS层的数据粒度是最细的。
ODS层的表通常包括两类,一个用于存储当前需要加载的数据,一个用于存储处理完后的历史数据。
历史数据一般保存3-6个月后需要清除,以节省空间。但不同的项目要区别对待,如果源系统的数据量不大,可以保留更长的时间,甚至全量保存;
数据在装入本层前需要做以下工作:
- 去噪(例如去掉明显偏离正常水平的银行刷卡信息)
- 去重(例如银行账户信息、公安局人口信息中均含有人的姓名,但是只保留一份即可)
- 提脏(例如有的人的银行卡被盗刷,在十分钟内同时有两笔分别在中国和日本的刷卡信息,这便是脏数据)
- 业务提取
- 单位统一
- 砍字段(例如用于支撑前端系统工作,但是在数据挖掘中不需要的字段)
- 业务判别
DW层
数据仓库层(DW),是数据仓库的主体
通常按照主题建立各种数据模型,如:星形或雪花结构等;
有关维度建模的方法及星型、雪花模型等请参考《维度建模法》
在PDW层会保存BI系统中所有的历史数据,例如保存10年的数据。
DM层
数据集市层(DM)date market,又称DWS, data warehouse service或主题层,存放的是轻度聚合的数据。
通常根据业务需求,划分成流量、订单、用户等,生成字段比较多的宽表,用于提供后续的业务查询,OLAP分析,数据分发等。
从数据粒度来说,这层的数据是轻度汇总级的数据,已经不存在明细数据了。从数据的时间跨度来说,通常是DW层的一部分,主要的目的是为了满足用户分析的需求,而从分析的角度来说,用户通常只需要分析近几年(如近三年的数据)的即可。从数据的广度来说,仍然覆盖了所有业务数据。
APP层
数据产品层(APP),这一层是提供为数据产品使用的结果数据。
从数据粒度来说是高度汇总的数据。从数据的广度来说,则并不一定会覆盖所有业务数据。从极端情况来说,可以为每一张报表在APP层构建一个模型来支持,达到以空间换时间的目的。
应用层是根据业务需要,由前面三层数据统计而出的结果,可以直接提供查询展现,或导入至Mysql中使用。
需要一个管理元数据信息的系统 能够提供方便的元数据的操作和查询操作
主要是提供给数据产品和数据分析使用的数据,一般会存放在es、mysql等系统中供线上系统使用,也可能会存在Hive或者Druid中供数据分析和数据挖掘使用
我们经常说的报表数据,或者说那种大宽表,一般就放在这里
数据仓库的标准分层只是一个建议性质的标准,实际实施时需要根据实际情况确定数据仓库的分层,不同类型的数据也可能采取不同的分层方法。
三层模型
Buffer数据缓存层
用于存放接口方提供的原始数据的数据库层,此层的表结构与源数据保持基本一致,数据存放时间根据数据量大小和项目情况而定,如果数据量较大,可以只存近期数据,将历史数据进行备份。此层的目的在于数据的中转和备份。
其它两次与四层模型类似,只是把更多逻辑放在了DW层里
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。