共计 4663 个字符,预计需要花费 12 分钟才能阅读完成。
@TOC
数据流向
利用示例
何为数仓 DW
Data warehouse(可简写为 DW 或者 DWH)数据仓库,是在数据库曾经大量存在的状况下,它是 一整套包含了 etl、调度、建模在内的残缺的理论体系。
数据仓库的计划建设的目标,是为前端查问和剖析作为根底,次要利用于 OLAP(on-line Analytical Processing),反对简单的剖析操作,偏重决策反对,并且提供直观易懂的查问后果。目前行业比拟风行的有:AWS Redshift,Greenplum,Hive 等。
数据仓库并不是数据的最终目的地,而是为数据最终的目的地做好筹备,这些筹备蕴含:荡涤、本义、分类、重组、合并、拆分、统计等
次要特点
面向主题[附录]
- 操作型数据库组织面向事务处理工作,而数据仓库中的数据是依照肯定的主题域进行组织。
- 主题是指用户应用数据仓库进行决策时所关怀的重点方面,一个主题通过与多个操作型信息系统相干。
集成
- 须要对源数据进行加工与交融,对立与综合
- 在加工的过程中必须打消源数据的不一致性,以保障数据仓库内的信息时对于整个企业的统一的全局信息。(关联关系)
不可批改
- DW 中的数据并不是最新的,而是来源于其余数据源
- 数据仓库次要是为决策分析提供数据,波及的操作次要是数据的查问
与工夫相干
- 处于决策的须要数据仓库中的数据都须要表明工夫属性
与数据库的比照
- DW:专门为数据分析设计的,波及读取大量数据以理解数据之间的关系和趋势
- 数据库:用于捕捉和存储数据
个性 | 数据仓库 | 事务数据库 |
---|---|---|
适宜的工作负载 | 剖析、报告、大数据 | 事务处理 |
数据源 | 从多个起源收集和标准化的数据 | 从单个起源(例如事务零碎)捕捉的数据 |
数据捕捉 | 批量写入操作通过依照预约的批处理打算执行 | 针对间断写入操作进行了优化,因为新数据可能最大水平地进步事务吞吐量 |
数据标准化 | 非标准化 schema,例如星型 Schema 或雪花型 schema | 高度标准化的动态 schema |
数据存储 | 应用列式存储进行了优化,可实现轻松拜访和高速查问性能 | 针对在单行型物理块中执行高吞吐量写入操作进行了优化 |
数据拜访 | 为最小化 I / O 并最大化数据吞吐量进行了优化 | 大量小型读取操作 |
为何要分层
数据仓库中波及到的问题:
- 为什么要做数据仓库?
- 为什么要做数据品质治理?
- 为什么要做元数据管理?
- 数仓分层中每个层的作用是什么?
- ……
在理论的工作中,咱们都心愿本人的数据可能有程序地流转,设计者和使用者可能清晰地晓得数据的整个申明周期,比方上面左图。
然而,理论状况下,咱们所面临的数据情况很有可能是复杂性高、且层级凌乱的,咱们可能会做出一套表依赖构造凌乱,且呈现循环依赖的数据体系,比方上面的右图。
为了解决咱们可能面临的问题,须要一套卓有成效的数据组织、治理和解决办法,来让咱们的数据体系更加有序,这就是 数据分层。数据分层的益处:
- 清晰数据结构:让每个数据层都有本人的作用和职责,在应用和保护的时候可能更不便和了解
- 简单问题简化:将一个简单的工作拆解成多个步骤来分步骤实现,每个层只解决特定的问题
- 对立数据口径:通过数据分层,提供对立的数据进口,对立输入口径
- 缩小反复开发:标准数据分层,开发通用的中间层,能够极大地缩小反复计算的工作
数据分层
每个公司的业务都能够依据本人的业务需要分层不同的档次;目前比拟成熟的数据分层:数据经营层 ODS、数据仓库层 DW、数据服务层 ADS(APP)。
数据经营层 ODS
数据经营层:Operation Data Store 数据筹备区,也称为贴源层。数据源中的数据,通过抽取、洗净、传输,也就是 ETL 过程之后进入本层。该层的次要性能:
- ODS 是前面数据仓库层的筹备区
- 为 DWD 层提供原始数据
- 缩小对业务零碎的影响
在源数据装入这一层时,要进行诸如去噪(例如有一条数据中人的年龄是 300 岁,这种属于异样数据,就须要提前做一些解决)、去重(例如在个人资料表中,同一 ID 却有两条反复数据,在接入的时候须要做一步去重)、字段命名标准等一系列操作。
然而为了思考后续可能须要追溯数据问题,因而对于这一层就不倡议做过多的数据荡涤工作,一成不变地接入原始数据也能够,依据业务具体分层的需要来做。
这层的数据是后续数据仓库加工数据的起源。数据 起源 的形式:
业务日志
- 常常会应用 sqoop 来抽取,例如每天定时抽取一次。
- 实时方面,能够思考用 canal 监听 mysql 的 binlog,实时接入即可。
埋点日志
- 日志个别以文件的模式保留,能够抉择用 flume 定时同步
- 能够用 spark streaming 或者 Flink 来实时接入
- kafka 也 OK
- 第三方爬虫数据
数据仓库层
数据仓库层从上到下,又能够分为 3 个层:数据细节层 DWD、数据中间层 DWM、数据服务层 DWS。
数据细节层 DWD
数据细节层:data warehouse details,DWD(数据荡涤 /DWI)
该层是业务层和数据仓库的隔离层,放弃和 ODS 层一样的数据颗粒度;次要是对 ODS 数据层做一些数据的荡涤和规范化的操作,比方去除空数据、脏数据、离群值等。
为了进步数据明细层的易用性,该层通常会才采纳一些维度进化办法,将维度进化至事实表中,缩小事实表和维表的关联。
数据中间层 DWM
数据中间层:Data Warehouse Middle,DWM
该层是在 DWD 层的数据根底上,对数据做一些轻微的聚合操作,生成一些列的两头后果表,晋升公共指标的复用性,缩小反复加工的工作。
简答来说,对通用的外围维度进行聚合操作,算出相应的统计指标
数据服务层 DWS(DWT)
数据服务层:Data Warehouse Service,DWS(宽表 - 用户行为,轻度聚合)
DWT 在 DWS 的根底之上聚合的总信息,比方用户的信息,DWS 的单位是天,DWT 就是总的信息
该层是基于 DWM 上的根底数据,整合汇总成剖析某一个主题域的数据服务层,个别是宽表,用于提供后续的业务查问,OLAP 剖析,数据散发等。
一般来说,该层的数据表会绝对较少;一张表会涵盖比拟多的业务内容,因为其字段较多,因而个别也会称该层的表为宽表。
- 用户行为,轻度聚合对 DWD
- 次要对 ODS/DWD 层数据做一些轻度的汇总。
数据应用层 ADS
数据应用层:Application Data Service,ADS(APP/DAL/DF)- 出报表后果
该层次要是提供给数据产品和数据分析应用的数据,个别会寄存在 ES、Redis、PostgreSql 等零碎中供线上零碎应用;也可能寄存在 hive 或者 Druid 中,供数据分析和数据挖掘应用,比方罕用的数据报表就是存在这里的。
事实表 Fact Table
事实表是指存储有事实记录的表,比方系统日志、销售记录等。事实表的记录在一直地增长,比方电商的商品订单表,就是相似的状况,所以事实表的体积通常是远大于其余表。
维表层 Dimension(DIM)
维度表(Dimension Table)或维表,有时也称查找表(Lookup Table),是与事实表绝对应的一种表;它保留了维度的属性值,能够跟事实表做关联,相当于将事实表上常常反复呈现的属性抽取、标准进去用一张表进行治理。维度表次要是蕴含两个局部:
- 高基数维度数据:个别是用户材料表、商品材料表相似的材料表,数据量可能是千万级或者上亿级别
- 低基数维度数据:个别是配置表,比方枚举字段对应的中文含意,或者日期维表等;数据量可能就是个位数或者几千几万。
长期表 TMP
每一层的计算都会有很多长期表,专设一个 DWTMP 层来存储咱们数据仓库的长期表
数据集市
广义 ADS 层;狭义上指 hadoop 从 DWD DWS ADS 同步到 RDS 的数据
数据集市(Data Mart),也叫数据市场,数据集市就是满足特定的部门或者用户的需要,依照多维的形式进行存储,包含定义维度、须要计算的指标、维度的档次等,生成面向决策分析需要的数据立方体。
从范畴上来说,数据是从企业范畴的数据库、数据仓库,或者是更加业余的数据仓库中抽取进去的。数据中心的重点就在于它投合了业余用户群体的非凡需要,在剖析、内容、体现,以及易用方面。数据中心的用户心愿数据是由他们相熟的术语体现的。
带有数据集市的数据仓储构造
区别数据仓库
数据集市就是企业级数据仓库的一个子集,它次要面向部门级业务,并且只面向某个特定的主题。为了解决灵活性与性能之间的矛盾,数据集市就是数据仓库体系结构中减少的一种小型的部门或工作组级别的数据仓库。数据集市存储为特定用户事后计算好的数据,从而满足用户对性能的需要。数据集市能够在肯定水平上缓解拜访数据仓库的瓶颈。
实践上讲,应该有一个总的数据仓库的概念,而后才有数据集市。理论建设数据集市的时候,国内很少这么做。国内个别会先从数据集市动手,就某一个特定的主题(比方企业的客户信息)先做数据集市,再建设数据仓库。数据仓库和数据集市建设的先后秩序之分,是和设计办法严密相干的。而数据仓库作为工程学科,并没有对错之分。
在数据结构上,数据仓库是面向主题的、集成的数据的汇合。而数据集市通常被定义为星型构造或者雪花型数据结构,数据集市个别是由一张事实表和几张维表组成的。
问题总结
ODS 与 DWD 区别?
问:还是不太明确 ods 和 dwd 层的区别,有了 ods 层后感觉 dwd 没有什么用了。
答:嗯,我是这样了解的,站在一个现实的角度来讲,如果 ods 层的数据就十分规整,根本能满足咱们绝大部分的需要,这当然是好的,这时候 dwd 层其实也没太大必要。然而事实中接触的状况是 ods 层的数据很难保证质量,毕竟数据的起源多种多样,推送方也会有本人的推送逻辑,在这种状况下,咱们就须要通过额定的一层 dwd 来屏蔽一些底层的差别。
问:我大略明确了,是不是说 dwd 次要是对 ods 层做一些数据荡涤和规范化的操作,dws 次要是对 ods 层数据做一些轻度的汇总?
对的,能够大抵这样了解。
APP 层干什么的?
问:感觉 DWS 层是不是没中央放了,各个业务的 DWS 表是应该在 DWD 还是在 app?
答:这个问题不太好答复,我感觉次要就是明确一下 DWS 层是干什么的,如果你的 DWS 层放的就是一些能够供业务方应用的宽表表,放在 app 层就行。如果你说的数据集市是一个比拟泛一点的概念,那么其实 dws、dwd、app 这些合起来都算是数据集市的内容。
问:那存到 Redis、ES 中的数据算是 app 层吗?
答:算是的,我集体的了解,app 层次要寄存一些绝对成熟的表,能供业务侧应用的。这些表能够在 Hive 中,也能够是从 Hive 导入 Redis 或者 ES 这种查问性能比拟好的零碎中。
附录
ETL
ETL:Extract-Transform-Load,用于形容将数据从起源端通过 抽取、转换、加载 到目标端的过程。
宽表
- 含意:指字段比拟多的数据库表。通常是指业务主体相干的指标、纬度、属性关联在一起的一张数据库表。
特点:
宽表因为把不同的内容都放在同一张表,宽表曾经不合乎三范式的模型设计规范:
- 害处:数据有大量冗余
- 益处:查问性能的进步和便捷
- 宽表的设计广泛应用于数据挖掘模型训练前的数据筹备,通过把相干字段放在同一张表中,能够大大提供数据挖掘模型训练过程中迭代计算的音讯问题。
主题(Subject)
是在较高层次上将企业信息系统中的数据进行综合、归类和剖析利用的一个抽象概念,每一个主题根本对应一个宏观的剖析畛域。在逻辑意义上,它是对应企业中某一宏观剖析畛域所波及的剖析对象。例如“销售剖析”就是一个剖析畛域,因而这个数据仓库利用的主题就是“销售剖析”。
参考:
http://www.cnblogs.com/amyzhu
https://www.jianshu.com/p/1dd…
https://blog.csdn.net/pmdream…
百度百科