数据仓库设计
1. 维度建模基本概念
维度建模:就是从业务需求出发,方便我们进行统计分析的建表建库的理论;
这套只适合我们的 OLAP 数据分析的业务;不适合 OLTP。
(扩展)mysql 三范式:1:每个字段的原子性;不可分割;2:字段之间不能依赖传递关系;3:主键唯一性,
为了自己的场景考虑:快速查询响应,安全性,事务等;
数据仓库建表需要满足上面的范式吗?
实际上不需要,数据仓库就是为了满足了一个目标,就是怎么方便分析就怎么设计!!
数据仓库中有哪些表?
事实表:就是客观事实的记录数据;清洗之后的日志数据;
维度表:维度就是角度;一个角度所有可选项的集合;时间维度,地域维度;用户维度;终端维度;总共是 10 个维度;
1.1. 事实表
事实表是对分析主题的一个度量;
你的需求分析什么?
分析用户访问日志:主题:用户的访问日志;用户访问日志数据、表;
分析一年的订单销售情况?主题:分析订单销售情况;订单表--》事实表;
进入公司:
让你统计去年一年销售情况?
数据从哪里哪里来?考虑有没有数据支撑你的需求统计;要找到事实表,如果没有直接的事实表,可以考虑自己创建,但是一定要得有原始数据支撑!!
事实表:会是一堆主键的堆积;主键 id 所对应的的表一般就是我们分析的一个维度。
订单表设计:
字段:orderid;productId;regionId;
1.2. 维度表
2. 维度建模三种模式
在数据仓库中你的事实表和维度表以何种形式存在?一种模式就是一种存在的形式!!
2.1. 星型模式
一个事实表周围散列多个维度表;数据仓库发展初期采用的模型,一个事实表;
2.2. 雪花模式
一个事实表周围散列维度表的同时,维度表自身又进行了拓宽,还需要与其它维度表 join,后期维护成本;
这种架构是尽量避免;
2.3. 星座模式
多张事实表共用某些维度表,注意不是所有的维度表都进行共用;
3. 本项目中数据仓库的设计
分析用户访问行为:
主题:分析用户行为:
事实表:用户日志数据,mr 清洗之后的数据;
维度表:时间维度,session 维度,来源维度等;维度表取决于具体的业务?根据指标而来。
模型:星型模型:
pageview + visitview 属于什么表呢?
既不属于维度表也不属于我们的事实表,属于我们事实表的一个业务延伸,都是从事实表处理转换而来!!
拓宽后的宽表字段:
在数据仓库的建表中最高标准就是便于分析,我们可以为了分析方便拓宽表实际上相当于冗余存储了一份!!
版权声明: 本文为 InfoQ 作者【大数据技术指南】的原创文章。
原文链接:【http://xie.infoq.cn/article/b0b0ca219a817651f3cd76c93】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论