总结:
-
概念
-
是一个用于存储、分析、报告的数据系统
-
构建面向分析的集成化环境,分析结果为企业提供决策
-
数仓本身不生产数据,数据来源于外部系统
-
数仓本身也不消费数据,其结果开放给各个外部应用使用
-
所以称为仓库而不是工程
-
-
-
为什么会有数仓?
-
为了分析数据而来,分析结果给企业决策提供支撑
-
操作性记录的保存
-
公司下面有多个BU,业务线等等,都有各自的业务系统,记录销售、经营、KPI等等模块的信息
-
OLTP
-
联机事务处理系统
-
前台接收的用户数据可以立即传送到后台进行处理,并在很短的时间内给出处理结果
-
-
-
典型的
-
-
分析型决策的制定
-
随着业务的持续运营,业务数据将会越来越多,由此产生了许多运营相关的疑惑
-
什么产品卖的好
-
-
基于数据开展数据分析,基于数据分析结果给决策提供支撑,也就是数据驱动决策的制定
-
-
OLTP环境开展分析可行吗?
-
OLTP系统的核心是面向业务,支持业务,支持事务,所有操作可分为读、写两类操作,一般来说读的压力明显大于写的压力,如果直接在OLTP上直接开展分析,会面临以下问题
-
数据分析也是读取操作,会是读取压力倍增
-
OLTP仅存数周或者数月的数据
-
数据分散在不同系统中不同的表,字段类型属性不统一
-
-
当分析所涉及的数据规模较小时,在业务低峰期是可以在OLTP系统上开展分析。但是为了更好的进行各种规模的数据分析,同时也不影响OLTP系统运行,此时就需要构建一个集成统一的数据分析平台
-
面向分析,支持分析,并且和OLTP系统解耦合
-
基于这种需求,数据仓库的雏形开始在企业中出现
-
-
-
-
-
主要特征
-
面向主题
-
主题是一个抽象的概念,是较高层次上数据综合、归类并进行分析利用的抽象
-
-
集成性
-
主题相关的数据通常会分布在多个操作系统中,彼此分散、独立、异构,需要集成到数仓主题下
-
-
非意失性
-
也叫非易变性,数据仓库是分析数据的平台,不是创造数据的平台
-
-
时变性
-
数据仓库的数据需要随着时间更新,以适应决策的需要
-
-
-
OLTP、OLAP对比
-
数据源
-
OLTP
-
仅包含当前运行日常任务数据
-
-
OLAT
-
整合来自多个来源的数据,包括OLTP和外部数据源
-
-
-
目的
-
OLTP
-
面向应用、面向业务、面向支撑事务
-
-
OLAP
-
面向主题、面向分析、支撑分析决策
-
-
-
焦点
-
OLTP
-
当下
-
-
OLAP
-
主要面向过去、面向历史 实时数仓除外
-
-
-
任务
-
OLTP
-
读写操作
-
-
OLAP
-
大量的读而很少的写操作
-
-
-
响应时间
-
OLTP
-
毫秒
-
-
OLAP
-
秒、分钟、小时、天
-
取决于数据量和查询复杂性
-
-
-
数据量
-
OLTP
-
小数据量,MB、GB
-
-
OLAP
-
大数据,TB、PB
-
-
-
-
数据库、数据仓库区别
-
数据仓库不是大型数据库,虽然数据存储规模大
-
数据仓库的出现,并不是取代数据库
-
数据库面向事务设计,数据仓库面向主题设计
-
数据库一般存储业务数据,数据仓库存储的一般是历史数据
-
数据库是为了捕获数据而设计,数据仓库是为分析数据而设计
-
-
数据仓库、数据集市
-
数据仓库面向整个集团组织的数据,数据集市是面向单个部门使用的
-
数据集市是数据仓库的子集,也有人把数据集市叫做小型数据仓库,数据集市通常只涉及一个主题领域,例如市场营销或销售
-
2.阿里数仓3层架构
-
ODS
-
操作性数据层,也称之为源数据层、数据引入层、数据暂存层、临时缓存层
-
此层存放未经过处理的原始数据至数仓系统,结构上与源系统保持一致,是数据仓库的数据准备区
-
主要完成基础数据引入到数仓的职责,和源系统进行解耦合,同时记录基础数据的历史变化
-
-
DW
-
数据仓库层,由ODS层数据加工而成。主要完成数据加工与整合,建立一致性,构建可复用的面向分析和统计的明细事实表,以及汇总公共粒度的指标
-
DIM层
-
基于维度建模的思想,建立整个企业一致性维度
-
-
DWS\DWB
-
以分析的主题对象作为建模驱动,基于上层的应用和产品的指标需求,构建公共粒度的汇总指标事实表,以宽表化手段物理化模型
-
-
DWD
-
将明细事实表的某些重要维度属性字段做适当冗余,即宽表化处理
-
-
-
DA
-
数据应用层,面向最终用户,面向业务定制提供给产品和数据分析使用的数据
-
包括前端报表、分析图标、KPI、仪表盘、OLAP专题、数据挖掘等分析
-
3.数仓分层的好处
-
清晰数据结构
-
每一个数据分层都有它的作用域,在使用表的时候能更方便地定位和理解
-
-
数据血缘追踪
-
我们最终给业务呈现一个可以直接使用的业务表,但是来源很多,我们需要快速定位问题,并清楚它的危害范围
-
-
减少重复开发
-
规范数仓分层,开发一些中间层,能够极大减少重复计算
-
-
把复杂问题简单化
-
把一个复杂的问题拆分多个步骤完成,每一层只处理单一的步骤,比较简单和容易理解,当数据出现问题,不用修复所有的数据,只用从有问题的步骤开始修复
-
-
屏蔽原始数据的异常
-
屏蔽业务的影响,不必改一次业务就要重新接入数据
-