发布时间:2022-09-23 18:30
维度建模(dimensional modeling)是专门用于分析型数据库、数据仓库、数据集市建模的方法,数据集市可以理解为是一种小型的数据仓库。
维度表示你要对数据进行分析时所用的一个量,比如,你要分析产品销售情况,你可以选择按照类别来进行分析,或者按照区域进行分析。这样的按照XX进行分析的就构成了一个维度。再比如“昨天下午我在星巴克话费200元喝了一杯卡布奇诺”,那么以消费为主题进行分析从这段消息中可以提取三个维度:时间维度(昨天下午)、地点维度(星巴克)、商品维度(卡布奇诺)。通常来说维度表信息比较固定,且数据量小。
表示对分析主题的度量。事实表包含了与各维度表相关联的外键,并调用JOIN方式与维度表关联。事实表的度量通常是数值型的,且记录数会不断增加,表规模迅速增长。比如上面消费的例子,他的消费事实表结构示例如下所示:
消费事实表:prod_id(引用商品维度表id)、timekey(引用时间维度表)、place_id(引用地点维度表)、unit(销售量)。
总的来说,在数据仓库中不需要严格按照规范化设计原则,因为数据仓库的主导功能就是面向分析,以查询为主,不涉及数据更新操作。事实表的设计是以能够正确记录历史信息为准则,维度表的设计是以能够以合适的角度来聚合主题内容为原则。
星型模型(star schema)是最常用的维度建模方式。星型模型是以事实表为中心,所有的维度表都直接连接在事实表身上,像星星一样。
雪花模型(snawflake schema)是对星型模式的扩展。雪花模式的维度表可以拥有其他维度表。虽然这种模型相比星型模型更规范一些,但是由于这种模型不太容易理解,维护成本比较高,而且性能方面需要关联多层维度表,性能也比星型模型要低,所以一般不是很常用。
星座模型是星型模型延伸而来,星型模型是基于一张事实表,而星座模型是基于多张事实表的而且共享维度信息。
前面介绍的两种维度建模的方式是对应单事实表,但是在很多时候维度空间的事实表不止一个,而一个维度表也可能被多个事实表用到,在业务发展后期,绝大部分维度表建模都是采用星座模型。
维度表命名遵循 dim_
维度一般是指 人员(who)、时间(when)、地点(where)、事件(what)来划分。
事实表的命名遵循fact_
事实表一般是以多少(how much)来划分的。
【Kubernetes 系列】K8S 进阶 容器和 Pod 分配内存资源
个人主页博客网页设计制作HTML5+CSS大作业——清新春暖花开个人博客网站(6页)
HMS Core 机器学习服务打造同传翻译新“声”态,AI让国际交流更顺畅
pandas如何保存在excel里面_python使用pandas如何向一个Excel表中写入多个sheet
基于eBPF的云原生可观测性开源项目Kindling之网络详情面板
[ROC-RK3568-PC] [Firefly-Android] 10min带你了解普通GPIO的使用