一、建模方法论
数仓的建模或者分层,其实都是为了更好的去组织、管理、维护数据,所以当你在更高的维度去看的话,所有的划分都是为了更好的管理。
1.访问性能
能够快速查询所需的数据,减少数据I/O。
2.数据成本
减少不必要的数据冗余,实现计算结果数据复用,降低大数据系统中的存储成本和计算成本。
3.使用效率
改善用户应用体验,提高使用数据的效率。
4.数据质量
改善数据统计口径的不一致性,减少数据计算错误的可能性,提供高质量的,一致的访问平台。
二、数仓建模
1.维度建模
维度建模是数仓领域另一位大师ralph kimball所倡导,是数据仓库工程领域最流行的数仓建模经典。维度建模以分析决策的需求出发构建模型,构建的数据模型为分析需求服务,因此它重点解决用户如何更快完成分析需求,同时还有较好的大规模复杂查询的响应性能。维度建模是专门用于分析型数据库,数据仓库、数据集市建模的方法。
维度建模的主要构成是维度表和事实表。每一张维度表对应现实世界中的一个对象或者一个主题,例如:客户、产品、时间、地区等,通常是包含了多个属性的列,通常数据量不会太大;事实表则是描述业务的多条记录,包含了描述业务的度量值以及和维度表相关联的外键,外键和维度表通常是多对多的关系,数据量大而且经常发生变化。
维度分为:
① 退化维度(DegenerateDimension)
在维度类型中,有一种重要的维度称作为退化维度,亦维度退化一说。这种维度指的是直接把一些简单的维度放在事实表中。退化维度是维度建模领域中的一个非常重要的概念,它对理解维度建模有着非常重要的作用,退化维度一般在分析中可以用来做分组使用。
② 缓慢变化维(Slowly Changing Dimensions)
维度的属性并不是始终不变的,它会随着时间的流逝发生缓慢的变化,这种随时间发生变化的维度我们一般称之为缓慢变化维(SCD)。比如员工表中的部门维度,员工的所在部门有可能两年后调整一次。
维度建模一般包含三个,一般是根据业务需求和业务复杂性加以区分,有区分的方法但没有比较清晰地界限。
(1)星型模型
星型模式(star schema)是面向主题的常用模式,主要由一个事实表和多个维度表构成,不存在二级维度表。
(2)雪花模型
雪花模型(snowflake schema)是在星型模型基础上将维表再次扩展,每个维表可以继续向外连接多个子维表
雪花模型相当于将星型模型的大维表拆分成小维表,满足了规范化设计,因为很少会有事实表只关联一层维度的,往往维度还会细分,钻取。然而这种模式在实际应用中很少见,因为跨表查询时效率很慢,所以现在的做法是将部分维度表整合到事实表中,形成宽表,在查询汇总的时候只需要group by就可以了,不需要在进行join操作。
(3)星座模型
星座模型(fact constells schema)也是星型模型的扩展,存在多个事实表且可共用同一个维表。实际上数仓模型建设后期,大部分维度建模都是星座模型。
标签:数仓,模型,数据仓库,建模,星型,维度,数据 From: https://www.cnblogs.com/xiao-wang-tong-xue/p/17118922.html