数据仓库

数据仓库

数据仓库
诞生主要有两个原因
历史数据积存的需要
企业数据分析的需要

热数据:使用频率较高的数据
冷数据:使用频率较低的数据

数据仓库特点:
1.面向主题:针对不同的业务分析需求,可能需要多张表联表分组聚合查询


2.集成: 将不同的数据源的数据,进行标准化,整合成统一的数据规范,便于之后进行分析运算(统一单位)

3.非易失: 不允许数据修改,只能通过工具对数据进行查询、分析


4.时变性
定期去接受、集成新的数据进来,保证与业务数据库数据一致
但是数仓又不允许修改,所以以时间戳标记版本,老旧的数据可以选择定期删除或保留

数据库与数据仓库的区别
# 数据库设计遵守设计范式  数据仓库不遵守设计范式
数据库是面向事务设计的,它属于OLTP(在线事务处理)系统,为业务提供数据存储服务,主要操作是随机读写;在设计时尽量避免冗余,常采用符合规范来设计。

数据仓库是面向主题设计的,属于OLAP(在线分析处理)系统,主要操作是批量读写;关注数据整合,以及分析、处理性能;会有意引入冗余,采用反范式方式设计。
架构设计
# MPP架构
	是传统数据仓库中常见的技术架构,将单机数据库节点组成集群,从而提升处理性能
集群中吗,这些节点间使用非共享架构,每个节点拥有独立的磁盘存储和内存系统,在计算过程中独立运行,而不必去关心整个集群的状态,也不关心其他节点存储的数据信息
每台数据节点通过专用网络或者商业通用网络互相连接

优点:MPP数据库更适合中等规模的结构化数据处理,性能上有很好的提现
缺点:随着集群规模的增大,节点的故障率会逐渐升高,瓶颈就会越发明显

# 分布式架构
	是大数据中常见的技术架构,也称为Hadoop架构/批处理架构

优点:数据在集群中是全局透明共享的,每个节点拥有自治的运算资源
	 因为使用了公共的数据存储,所以它的扩展性极强,而且非常适合处理非结构化、半结构化的数据
缺点:在数据量较低的情况下,运行速度远不及MPP架构;但数据量一旦超过某个量级,吞吐量的优势就会极大的发挥出来。

# MPP + 分布式架构
	数据存储层采用分布式架构中的公共存储,提升了分区容错性,也将 MPP 的扩展性得到了质的提升。上层处理架构依然采用 MPP,减少运算的延迟
    
# 总结
MPP 架构和分布式架构的适用场景不同。MPP 适合中等规模的数据处理,延迟低、SQL 支持高是它主要的优势;分布式(批处理)架构更适合海量数据规模的批处理计算,吞吐高、运算速度快、扩展性强是它的优势,而这也是离线批处理数仓所看重的。

MPP + 分布式架构集成了两者的优势,扩展性强、延迟低、SQL 支持率高,实际上是两者间取了个折中,能够在海量数据规模下依然具有较好的低延迟特性。

这些架构并没有好坏之分,对于不同的场景只有适合和不适合之分。如果使用分布式架构的数据仓库对较少的数据量进行交互式的 SQL 查询,需要 5 分钟,但使用传统数仓只需要 1 秒;那不是产品的问题,而是用错的场景而已。
数据仓库技术实现
传统数据仓库(MPP)
	优点
		1. SQL支持率高
    	2. 学习成本低
	缺点
    	1. 扩展性有限
        2. 热点问题
      
大数据数据仓库
	优点:
        1. 解决了扩展性问题
        2. 解决了热点问题(将任务分发给负荷最小的机器执行)
     缺点:
        1. SQL支持率低
        2. 缺少事务支持
        3. 数据量较少时,计算速度慢
常见数据仓库产品
# 传统数据仓库产品
	Oracle RAC
     DB2 DPF
    Teradata(有钱就用这个)
    Greenplum(没钱就凑合)
    
# 大数据数据仓库产品
	 Hive
    	SQL 支持率不高
        适合海量数据的跑离线批处理场景
     Spark SQL
    	无需单独安装。而且 Spark SQL 开发起来更为灵活,而且对 Spark 引擎的原生支持也更好,效率也更出色一些
      HBase
    	一般作为结构化数据仓库的补充,更适合存储非结构化、半结构化数据,也可以存储结构化数据
      Impala
    	一般作为数据仓库的补充产品进行使用,当做数据仓库的查询接口
      HAWQ
    	属于 MPP+ 分布式批处理架构。它兼容了两者的特性,SQL 支持率高,性能也比较出色
数据仓库主流架构
架构整体上分为四部分:ETL、ODS、CDM、ADS

ETL
	ETL是数据同步模块,将数据从业务数据库经过抽取(extract)、交互转换(transform)、加载(load)至数仓的过程
    
    # 全量同步、增量同步
    
ODS(操作数据源层)
	与原始数据保持一致,不进行任何的修改,目的就是为了原始数据的保存
    
    # 额外添加字段
    
CDM(公共维度模型层)
	主要是为了数据分析提供服务的
    1.DWD(数据明细层)
    	针对数据进行清洗、标准化,剔除异常,统一编码、单位、字段描述等
    2.DWS(数据汇总层)
    	按照分析主题对数据汇总、聚合后,存储到DWS(数据汇总层)中进行存储
     	# 最核心
ADS(数据应用层)
	数据分析人员对 DWS(数据汇总层)的数据进行分析运算后,会将最终的结果表存储到 ADS 层中

在这里插入图片描述

建模
OLTP
	遵循三大范式设计,减少冗余
OLAP
	反三大范式设计,增加冗余
    1.ROLAP
    	关系型
    2.MOLAP
    	多维型
    3.HOLAP
    	混合型
        
典型的数据仓库的建模方法有 ER 模型、维度模型、Data Value、Anchor
	ER模型是比较经典的一种数据仓库模型
    维度模型是最流行的数据仓库建模经典,也很贴合现在互联网企业的场景
ROLAP
# 一般常见的维度类型有:分类、时间、地域等
# 筛选条件就是维度,而筛选出来的手机数据就是事实

1.星型模型
	标准的星型模型维度只有一层,分析性能最优
    中间为事实表,然后通过 key 值的记录来关联其他维度表。

2.雪花模型
	雪花模型具有多层维度,比较接近三范式设计,较为灵活,但牺牲掉了部分分析性能
    
3.星座模型
	星座模型基于多个事实表,事实表之间会共享一些维度表

4.宽表模型
 	将维度表拼接到事实表中,形成宽表,以减少 join 操作,所以适合 join 性能不佳的数据仓库产品
MOLAP多维模型
1.Cube模型
	使用方法也类似于魔方一样,不管从哪个维度查询都很快
    需要大量的时间、空间。维度的预处理也可能会导致数据的膨胀
    
常见产品	
	Kylin、Druid
OLAP多维分析
上卷
	多合一
    # 驱蚊剂、防晒设备、急救用品,这些都是属于户外防护用品的子集
下钻
	一拆多
    # 户外防护用品,之后细分为驱蚊剂、防晒设备、急救用品
切片
	切一刀
	# 单独对 2004 这个维度进行查询,称为切片
切块
	切多刀
    # 对时间维度中的 2004 进行切片后,再对登山设备进行切片,称为切块
旋转
	调整方向
    # 称为切块 初始条件是先查询产品类型,然后再对时间进行筛选,对维度进行旋转后可变为先对时间进行筛选,然后再查询产品类型
数据仓库之表分类
在维度建模中,表类型分为事实表、维度表,而事实表又可以细分为事务事实表、周期快照事实表、累积快照事实表
# 事实表
	指一个现实存在的业务对象
 
# 维度表
	维度表一般是指对应一些业务状态,对数据起到筛选、组织作用
    如订单状态表,商品分类表

# 事务事实表
	一旦产生不会再变化,如交易流水、操作日志、出库入库记录
    对事实事实表的操作只存在插入,而不存在修改
  
# 周期快照事实表
	主要用于完成间隔周期内的度量统计,如年初至今的下单金额(年累计下单金额)、当前季度至今的下单金额
    对周期快照事实表的操作是插入,也不存在修改的现象
    
# 累积快照事实表 
	累计快照事实表通常有多个时间字段,用于记录生命周期中的关键时间点
    只有一条记录,针对此记录不断更新。
    
# 拉链表
	用于记录每条信息的生命周期,用于保留数据的所有历史(变更)状态
    生效结束日期为 9999-99-99 时,表示为最新的数据。当数据发生变动时,先进行修改旧数据的生效结束日期,然后再插入新数据
ETL同步策略
# 全量同步
	数据初始化装载的时候,一定使用的是全量同步的方式
    技术实现比增量同步简单
    对于结构化数据,常用工具采用的是 JDBC 的方式直接连接到数据库进行抽取
    如果存在风险,或者周期过长,可以采用抽取数据库日志的方式
    使用特定工具来进行,如 Oracle 采用的是 OGG 方式,而 MySQL、SQL Server 等使用 CDC 方式
    
# 增量同步
	数据规模巨大的情况下,第一次数据以全量方式同步到数据仓库后,之后的数据可以使用增量采集的方式进行
    对于结构化数据,增量数据采集方式推荐对数据库日志进行抽取
    如 Oracle 提供的 OGG 方式,开源的 CDC 技术,它是增量同步的一种通用的解决方案;当然也可以直接
对数据库使用 JDBC 方式进行抽取,此时数据需要有 create_time 和 update_time 字段,以便使用 SQL 筛选新增和修改的数据

任务调度

在分布式集群中,主流的调度工具有 Azkaban、Oozie
相对于 Oozie 而言,Azkaban 功能更为强大,且易用性更好,在企业选型中更受欢迎

出自作者:布是刺猬

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值