数仓建模
1.相关概念
维度
维度是观察问题的角度,比如销售种类,销售时间,商家名。
事实
事实是对事务的度量,比如消费金额,消费次数。
OLAP
线上联机分析。比如处理一些分析
OLTP
线上联机交易,比如转账等业务操作。
2.开发流程
收集业务需求,建模研讨,维度设计。
处理需求,了解业务数据内容。使用方式,(在线查询, 表,接口,搜索)性能需求。
盘点是否有现有 表和接口可以实现需求。
代码实现,选择合适的存储引擎和查询引擎。配置线上监控。
3.数据模型
星形模式
最简单的维度模型,由事实表和维度表构成。中心是事实表,发散的是维度表。星形可以有一个或多个事实表。
优点:
-
简化查询,简化业务逻辑。获得查询性能,快速聚合,便于提供ROLAP数据源
缺点:
- 不能保证数据完整性
- 对数据分析来说不灵活
雪花模型
结构类似与星※模型,但是在周围的维度表上进行细分。比如时间维度还可以拆成某个月,某个季节的。
事实表
事务事实表,快照事实表,累计事实表。
维度表
时间维度表,地理维度表,产品维度表,人员维度表,范围维度表。
全量表
没有分区。每次都会覆盖之前的数据。是截至目前最新的数据。
快照表
有时间分区,每个区里的数据对应前一天所有的全量数据,比如当前表有三个分区,9,10,11.其中9 分区有历史数据到8 的所有数据。
t+1,比如说11 表对应实际时间是12 。
增量表
比如10 到11 新增的数据会存在11里。
拉链表
4.1全量同步
每天备份完整的数据作为一个分区。
4.2增量同步
同步增加的数据作为一个分区。
4.3拉链表
今日新增和今日发生变化的数据。
4.4特殊表
比如涉及性别,地区可以不必遵循。
- 没变化的客观世界维度,比如年龄,可以存一份固定值。
- 日期。可以一次性导入若干年的数据。
5.三范式
第一范式
属性不可再分,比如数据都是原子数据。不可再次分割.
第二范式
不能存在部分函数依赖,比如课和学 可以推出姓名,但是也可以直接学 推出姓名。所以姓名部分依赖于学 和课名。
第三范式
比如学 ,课程可以推出老师,但是老师推不出学 。
一般来说建表满足三范式即可。
1.一致性原则
不同物理表中字段,数据类型,数据内容必须一致。
2.维度组合与拆分
相关性强的需要放在一起。比如有些指标经常一起出现。
6.场景与性能优化
- 尽可能设计高效,满足业务的ADS表
- 多维分析时减少join操作,提升性能,尽量用大宽表的设计。
- 特定指标一般用kv的形式
- 搜索场景一般用搜索引擎。
7.数据同步
7.1直连同步
select全部数据存储,再load到数仓中。数据量小时可以使用,数据量大时不可。sqoop等软件。
但是时间长了或者业务数据增多之后,同步时间会越来越长。同时这种同步会直接操作数据库,对数据库负荷也很大。
7.2实时增量同步(日志解析)
直接读取数据库的操作日志,然后再进行复现。这是再系统层面的操作,不会影响数据库。
可以达到实时同步,延迟控制在毫秒级别。但是在批量补数据时,日志解析会很慢。
ODS层
从web前端获取埋点数据或者从mysql中提取业务数据 。Operation Data Store。这是最接近数据源的一层,也叫贴源层。
一般会用lzo或者snappy和parque压缩,减少磁盘占用。原始数据10G大概压缩到1G.
创建分区表。
DWD层
DataWarehouseDetail明细粒度事务层。结合业特点搭建的层。适当做一些冗余。主要处理事实表。
数据清理整合规范化,处理脏数据规范不一致的状态定义不一致的。命名不规范的数据都会处理。
此时交付的是一个基础明细表。会有一些分析的大宽表。
DIM层
DIM层是一个辅助性的层,可以贯穿几个层。
DWS
宽表聚合是对各个事实的聚合值,本层服务与一些轻业务。
基于DWD层数据,整合汇总分析某一个主题的服务数据。
DWT层
DataWarehouseTopic。这一层是为了应用产品的指标需求。构建主题的全量宽表。
ADS层
给数据产品和数据分析所使用的数据。会放在ES,redis等系统供线上系统使用。
文章知识点与官方知识档案匹配,可进一步学习相关知识MySQL入门技能树数据库组成表31368 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!