大数据(0b)离线数据仓库

Posted 小基基o_O

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据(0b)离线数据仓库相关的知识,希望对你有一定的参考价值。

文章目录

1、数据库 & 数据仓库

中文名英文名说明
数据库Database按照数据结构来组织、存储和管理数据的仓库
数据仓库Data Warehouse为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合

数据仓库不是数据的终点,而是为数据的终点做准备

  • 离线计算:延时的、周期性的、批处理的、海量的 数据计算
    通常,离线计算周期是1天,就是每天批处理前1天的数据,俗称T+1
  • 离线数仓:基于离线计算的数据仓库
    目前 主流的 主要的 离线数仓工具 是 HIVE

2、OLTP & OLAP

在线数据处理分类联机事务处理联机分析处理
英文简称OLTPOLAP
英文全称Online Transaction ProcessingOnline Analytical Processing
数据规模
延时
数据修改灵活不灵活,批量操作为主
数据表征最新数据状态随时间变化的历史状态
应用事务处理数据分析
场景用户注册、商品交易、商品评价商品销量、销售额、退单数、退单率…

3、范式理论

范式
构造 关系数据库遵循的规则
优点
降低数据的 冗余性
保证数据 一致性(数据修改时,改一个表就行,不用改多个)
缺点
需要 join拼接数据,效率降低

4、维度表 & 事实表

维度表事实表
行数较少,列数较多行数较多,列数较少
内容相对固定每天很多新增

4.1、维度表

  • 一般是对事实的描述信息,例如:用户、商品、日期、地区…
  • 行数较少,列数较多
  • 内容相对固定(编码表)

日期维度

用户维度(拉链表
从拉链表取出快照

4.2、事实表

  • 每行数据代表一个业务事件,通常有很多外键(地区、用户、时间…)
  • 业务事件可以是:下单、支付、退款、评价…
  • 业务事件有数字度量,如:数量、金额、次数…
  • 行数较多,列数较少
  • 每天很多新增
分类说明特点场景
事务型事实表以每个事务为单位数据只追加不修改一个订单支付
一笔订单退款
周期型快照事实表保留固定时间间隔的数据不会保留所有数据点赞数
累积型快照事实表跟踪业务事实的变化数据会修改订单状态
数字度量说明示例示例说明
可加事实各个纬度可以相加销售额既可按日期相加,也可按地区相加
半可加事实部分维度可以相加库存不可按日期相加,可按地区相加
不可加事实各个维度不可相加比例

5、星型模型、雪花模型、星座模型

星型模型

适用于简单业务

雪花模型

和星型模型相比,查询更慢,冗余更低,拓展性更好

星座模型

存在共享维度

建议使用:星座模型+雪花模型

6、数仓分层

分层全称译名说明压缩列式存储分区
1ODSOperation Data Store原始层原始数据
2DIMDimension维度层合并维度表
3DWDData Warehouse Detail明细层数据处理、维度建模
4DWSData Warehouse Service服务层去主键聚合,得到原子指标
5DWTData Warehouse Topic主题层存放主题对象的累积行为
6ADSApplication Data Store应用层具体业务指标
HIVE 维度退化 数据处理 维度建模 聚合 累积 计算指标 HDFS ODS DIM ADS DWD DWS DWT
  • 分层的好处
    复杂问题拆解为多层
    减少重复开发(可以去中间层取数,不用每次都去原始层)
    隔离原始数据,例如:异常数据、敏感数据(用户电话…)
  • 数据存储策略
    原始层保持数据原貌,不进行脱敏和清洗
    创建分区表(例如:日期分区),防止全表扫描
    数据压缩,减少磁盘占用(如:LZOgzipsnappy
    列式存储提高查询效率(如:ParquetORC

6.1、命名规范

库名:业务大类
表名:分层名_业务细类
临时表:temp_表名
备份表:bak_表名
视图:view_表名(场景:不共享的维度表、即席查询)

分层命名规范说明
ODSods+源类型+源表名+full/ifull:全量同步
i:增量同步
ods_postgresql_sku_full
ods_mysql_order_detail_i
ods_frontend_log
DIMdim+维度+full/zipfull:全量表
zip:拉链表
日期维度表没有后缀
dim_sku_full
dim_user_zip
dim_date
DWDdwd+事实+full/ifull:全量事实
i:增量事实
DWSdws+原子指标时间粒度有1d1h
1d:按1天
1h:按1小时
dws_page_visitor_1d
DWTdwt_消费者画像
ADSads+衍生指标/派生指标

6.2、合并维度表 and 维度缩减(ODS=>DIM)

合并维度表

维度缩减
情况1:字段很少的维度表 合并到事实表
情况2:非公共的维度表(该维度表只用在一个事实表)合并到事实表

6.3、数据处理(ODS=>DWD)

处理方式说明
JSON 解析'A': 'a': 3, 'b': 4, 'c': 6=>'Aa': 3, 'Ab': 4, 'Ac': 6
字段统一student_idStudentId统一成student_id
单位统一2万元 => 20000元
名称统一西红柿 => 番茄
番茄 => 番茄
tomato => 番茄
枚举转换0 => 男
1 => 女
脱敏电话:188xxxxxx79
去重去除重复数据(避免笛卡尔乘积)
过滤清除无效数据

6.4、维度建模(ODS+DIM=>DWD)

  1. 选择业务过程,例如:用户、商品、订单、优惠券、评价…
  2. 声明粒度,例如:订单表的1行数据 代表了1次下单行为
  3. 确度维度:时间维度、地区维度、商品维度、用户维度、优惠券维度…
  4. 确定事实:点击、下单、支付、退款、评价…
  5. 度量值:次数、金额、个数…
  6. 构建 事实 × ( 维度 + 度量值 ) 事实 \\times (维度+度量值) 事实×(维度+度量值)矩阵
事实\\维度时间地区用户商品优惠券度量值
子订单11111个数、金额
退款1111次数、金额
评价1111次数

6.5、指标(DWD=>DWS=>ADS)

  • 原子指标:业务定义中 不可拆解的指标
    由DWD层聚合而来,存储到DWS层
原子指标业务过程度量值聚合逻辑
订单数订单order_idcount
订单金额订单order_amountsum
页面浏览量页面浏览page_idcount
每日 独立访客数页面浏览user_idcount(distinct)
每月 独立访客数页面浏览user_idcount(distinct)
  • 派生指标:对 原子指标 进一步 聚合和筛选
    由DWS层聚合而来,可存储到DWT层或ADS层
指标类型原子指标统计粒度(group by)业务限定(where)
各省份 每天 手机类目 下单金额下单金额天、省份手机类目
每月 各页面 流量页面浏览量月、页面
  • 衍生指标:多个派生指标 复合运算而成,例如:比率
    当天退单率 = 当天退单数 / 当天订单结束数 当天退单率=当天退单数/当天订单结束数 当天退单率=当天退单数/当天订单结束数
    下单率 = 下单人数 / U V 下单率=下单人数/UV 下单率=下单人数/UV
    存储到ADS层

  • 画像:对维度表的字段进行分组COUNT得到的统计值,并没有事实表参与
    例如:用户画像、商品画像
    统计值例如:对用户维度表COUNT(性别)得到男生人数和女生人数
    这种统计值通常不完全可加的,例如昨天的男生人数不能和前天的男生人数相加
    而每天算一次就可得到时间序列,例如男生人数按天统计的时间序列

7、数据同步策略

同步策略周期读数方式写入方式适用场景示例
同步1次全量覆盖写入源不变日期表
全量同步每天全量覆盖写入日期分区源量小,有增改品牌表
增量同步每天按日期新增覆盖写入日期分区源增量大子订单表
增量变化同步每天按日期增量和变化覆盖写入日期分区源量大,有新改父订单表、用户表
示例表类型源量是否允许
update
是否允许
delete
同步策略
&增量标识
同步周期
&分区
商品信息维度表全量按天
用户信息维度表创建时间和更新时间按天
子订单流水事务型事实表创建时间按天
商品收藏周期型快照事实表全量按天
订单状态累积型快照事实表创建时间和更新时间按天

8、示例表

以上是关于大数据(0b)离线数据仓库的主要内容,如果未能解决你的问题,请参考以下文章

离线数仓

字节大数据手册火了 ! 离线数据/实时数据/数据仓库ETL/实时交易系统/啥都有 !...

字节大数据手册火了 ! 离线数据/实时数据/数据仓库ETL/实时交易系统/啥都有 !...

粗谈大数据的演变过程

尚大视频开放周基于阿里云搭建数据仓库(离线)项目视频开放下载!

大数据技术之_18_大数据离线平台_04_数据分析 + Hive 之 hourly 分析 + 常用 Maven 仓库地址