数仓实践:浅谈 Kimball 维度建模2

本文涉及的产品
云原生数据仓库AnalyticDB MySQL版,基础版 8ACU 100GB 1个月
简介: 数仓实践:浅谈 Kimball 维度建模2


星形架构和雪花架构


在理解了事实表和维度表之后,接下来的问题就是如何组合它 在维度建模中,存在两种组合维度表和事实表的基本架构:星形架构和雪花架构。


当所有维度表直接连接到事实表时,整个组合的形状类似于星星,所以被称为星形架构。



星形架构是一种非规范化的结构,其数据存储存在冗余,比如考虑商品的维度表,其品牌信息在商品的每一行中都存在,包括其品牌 ID 、名称、品牌拥有者等。


通常很多商品的品牌都是一样的,所以在商品维度表中品牌的信息被重复存储了很多次,也就是存在冗余。


当有一个或者多个维度表没有直接连接到事实表,而是通过其他维度表连接到事实表上时,整个组合的形状就像雪花一样,这种架构被称为雪花架构。



雪花架构是对星形架构维度表的规范化,比如上述的商品表例子,在雪花架构中,其每一行仅存储品牌 ID ,而品牌的所有其他信息(包括品牌名称、拥有者、注册地等所有描述信息)都存储在单独的品牌维度表内。通过品牌 ID 这个外键,商品表可以间接获取到所有品牌描述信息。


雪花架构去除了数据冗余,节省了部分存储,但是也给下游用户的使用带来了不便


如下游用户需要分析品牌的销售额,必须自己先用订单表关联商品表,然后用商品表再关联品牌表。正是由于这一点,在维度建模的实际中, 雪花架构很少得到使用。


有时候简单的方案是最美的、最有力的,也是最有效的


基于星形架构的维度建模就是这种情况 。星形架构牺牲了部分存储的冗余,但是带来了使用上的极度便捷,也使下游用户的使用和学习成本变得非常低。


即使是没有任何技术背景或者维度建模背景知识的业务人员,也很容易理解,更何况目前的存储成本极低,多出的这份存储开销相比后续每次的关联计算、用户使用和学习成本来说,是非常划算的。


星形架构中,每个维度都是均等的,所有维度表都是进入事实表的对等入口,用户可以从任一维度、任一维度属性或者任意多个维度组合、任意多个维度属性组合,方便地对数据进行过滤和聚合(汇总、均值、最大、最小等)操作,而且非常符合业务分析直觉。


业务是多变的,模型的设计必须能够经受住业务多变的需求。在实际设计中,可以通过添加新维度或者向维度表中加入维度属性来满足业务新视角的分析需求。


大多数情况下,数据仓库模型设计中都会采用星形架构,但是在某些特殊情况下 ,比如必须使用桥接表的情况下等,必须使用雪花架构。



维度建模一般过程


维度建模一般采用具有顺序的 个步骤来进行设计,即选择业务过程、定义粒度、确定维度和确定事实。


维度建模的这 个步骤贯穿了维度建模的整个过程和环节,下面逐一介绍。




1. 选取业务过程


业务过程即企业和组织的业务活动,它们一般都有相应的源头业务系统支持。


对于一个超市来说,其最基本的业务活动就是用户收银台付款;对于一个保险公司来说,最基本的业务活动是理赔和保单等 。当然在实际操作中,业务活动有可能并不是那么简单直接 ,此时昕取用户的意见通常是这一环节最为高效的方式。


但需要注意的是,这里谈到的业务过程并不是指业务部门或者职能。模型设计中,应将注意力集中放在业务过程而不是业务部门,如果建立的维度模型是同部门捆绑在一起的,就无法避免出现数据不一致的情况(如业务编码、含义等)。因此,确保数据一致性的最佳办法是从企业和公司全局与整体角度,对于某一个业务过程建立单一的、一致的维度模型。


2. 定义粒度


定义粒度意味着对事实表行实际代表的内容和含义给出明确的说明,粒度传递了事实表度量值相联系的细节所达到的程度的信息。其实质就是如何描述事实表的单个行。


典型的粒度定义包括:


超市顾客小票的每一个子项;


医院收费单的明细子项;


个人银行账户的每一次存款或者取款行为;


个人银行账户每个月的余额快照;


对于维度设计来说,在事实表粒度上达成一致非常重要,如果没有明确的粒度定义,则不能进入后面的环节。


在定义粒度过程中,应该最大限度地选择业务过程中最为原子性的粒度,这样可以带来后续的最大灵活度,也可以满足业务用户的任何粒度的分析需求。



3. 确定维度


定义了粒度之后,相关业务过程的细节也就确定了,对应的维度就很容易确定。正如前文所述。


维度是对度量的上下文和环境的描述


通过维度,业务过程度量与事实就会变得丰富和丰满起来。对于订单来说,常见的维度会包含商品、日期、买家、卖家、门店等。


而每一个维度还可以包含大量的描述信息,比如商品维度表会包含商品名称、标签价、商品品牌、商品类目、商品上线时间等。



4. 确定事实


确定事实通过业务过程分析可能要分析什么来确定。定义粒度之后,事实和度量一般也很容易确定,比如超市的订单活动,相关的度量显然是销售数量和销售金额。


在实际维度事实设计中,可能还会碰到度量拆分的问题,比如超市开展单个小票满 100减 10 元的活动,如果小票金额超过 10 元,这 10 元的优惠额如何分配到每一个小票子项实际设计中,可以和业务方具体讨论并制订具体的拆分分配算法。


……


以上。


相关实践学习
AnalyticDB MySQL海量数据秒级分析体验
快速上手AnalyticDB MySQL,玩转SQL开发等功能!本教程介绍如何在AnalyticDB MySQL中,一键加载内置数据集,并基于自动生成的查询脚本,运行复杂查询语句,秒级生成查询结果。
阿里云云原生数据仓库AnalyticDB MySQL版 使用教程
云原生数据仓库AnalyticDB MySQL版是一种支持高并发低延时查询的新一代云原生数据仓库,高度兼容MySQL协议以及SQL:92、SQL:99、SQL:2003标准,可以对海量数据进行即时的多维分析透视和业务探索,快速构建企业云上数据仓库。 了解产品 https://www.aliyun.com/product/ApsaraDB/ads
目录
相关文章
|
17天前
|
DataWorks 关系型数据库 OLAP
云端问道5期实践教学-基于Hologres轻量实时的高性能OLAP分析
本文基于Hologres轻量实时的高性能OLAP分析实践,通过云起实验室进行实操。实验步骤包括创建VPC和交换机、开通Hologres实例、配置DataWorks、创建网关、设置数据源、创建实时同步任务等。最终实现MySQL数据实时同步到Hologres,并进行高效查询分析。实验手册详细指导每一步操作,确保顺利完成。
|
1月前
|
DataWorks 数据挖掘 大数据
方案实践测评 | DataWorks集成Hologres构建一站式高性能的OLAP数据分析
DataWorks在任务开发便捷性、任务运行速度、产品使用门槛等方面都表现出色。在数据处理场景方面仍有改进和扩展的空间,通过引入更多的智能技术、扩展数据源支持、优化任务调度和可视化功能以及提升团队协作效率,DataWorks将能够为企业提供更全面、更高效的数据处理解决方案。
|
6月前
|
数据采集 运维 Cloud Native
Flink+Paimon在阿里云大数据云原生运维数仓的实践
构建实时云原生运维数仓以提升大数据集群的运维能力,采用 Flink+Paimon 方案,解决资源审计、拓扑及趋势分析需求。
18553 54
Flink+Paimon在阿里云大数据云原生运维数仓的实践
|
5月前
|
SQL 分布式计算 数据库
畅捷通基于Flink的实时数仓落地实践
本文整理自畅捷通总架构师、阿里云MVP专家郑芸老师在 Flink Forward Asia 2023 中闭门会上的分享。
8345 15
畅捷通基于Flink的实时数仓落地实践
|
3月前
|
SQL 分布式计算 数据挖掘
加速数据分析:阿里云Hologres在实时数仓中的应用实践
【10月更文挑战第9天】随着大数据技术的发展,企业对于数据处理和分析的需求日益增长。特别是在面对海量数据时,如何快速、准确地进行数据查询和分析成为了关键问题。阿里云Hologres作为一个高性能的实时交互式分析服务,为解决这些问题提供了强大的支持。本文将深入探讨Hologres的特点及其在实时数仓中的应用,并通过具体的代码示例来展示其实际应用。
295 0
|
6月前
|
存储 机器学习/深度学习 大数据
参与开源大数据Workshop·杭州站,共探企业湖仓演进实践
Apache Flink 诚邀您参加 7 月 27 日在杭州举办的阿里云开源大数据 Workshop,了解流式湖仓、湖仓一体架构的最近演进方向,共探企业云上湖仓实践案例。
186 12
参与开源大数据Workshop·杭州站,共探企业湖仓演进实践
|
5月前
|
搜索推荐 OLAP 流计算
OneSQL OLAP实践问题之基于 Flink 打造流批一体的数据计算平台如何解决
OneSQL OLAP实践问题之基于 Flink 打造流批一体的数据计算平台如何解决
71 1
|
5月前
|
SQL 存储 OLAP
OneSQL OLAP实践问题之Flink SQL Gateway的功能如何解决
OneSQL OLAP实践问题之Flink SQL Gateway的功能如何解决
62 1
|
5月前
|
SQL 消息中间件 OLAP
OneSQL OLAP实践问题之BIGO ClickHouse实现二阶段提交事务机制如何解决
OneSQL OLAP实践问题之BIGO ClickHouse实现二阶段提交事务机制如何解决
78 1
|
5月前
|
SQL 消息中间件 OLAP
OneSQL OLAP实践问题之实时数仓中数据的分层如何解决
OneSQL OLAP实践问题之实时数仓中数据的分层如何解决
90 1

热门文章

最新文章