数仓实践:浅谈 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
目录
相关文章
|
6天前
|
SQL 存储 消息中间件
vivo基于Paimon的湖仓一体落地实践
本文整理自vivo互联网大数据专家徐昱在Flink Forward Asia 2024的分享,基于实际案例探讨了构建现代化数据湖仓的关键决策和技术实践。内容涵盖组件选型、架构设计、离线加速、流批链路统一、消息组件替代、样本拼接、查询提速、元数据监控、数据迁移及未来展望等方面。通过这些探索,展示了如何优化性能、降低成本并提升数据处理效率,为相关领域提供了宝贵的经验和参考。
355 3
vivo基于Paimon的湖仓一体落地实践
|
10天前
|
SQL 分布式计算 数据挖掘
从湖仓分离到湖仓一体,四川航空基于 SelectDB 的多源数据联邦分析实践
川航选择引入 SelectDB 建设湖仓一体大数据分析引擎,取得了数据导入效率提升 3-6 倍,查询分析性能提升 10-18 倍、实时性提升至 5 秒内等收益。
从湖仓分离到湖仓一体,四川航空基于 SelectDB 的多源数据联邦分析实践
|
22天前
|
SQL 存储 HIVE
鹰角基于 Flink + Paimon + Trino 构建湖仓一体化平台实践项目
本文整理自鹰角网络大数据开发工程师朱正军在Flink Forward Asia 2024上的分享,主要涵盖四个方面:鹰角数据平台架构、数据湖选型、湖仓一体建设及未来展望。文章详细介绍了鹰角如何构建基于Paimon的数据湖,解决了Hudi入湖的痛点,并通过Trino引擎和Ranger权限管理实现高效的数据查询与管控。此外,还探讨了湖仓一体平台的落地效果及未来技术发展方向,包括Trino与Paimon的集成增强、StarRocks的应用以及Paimon全面替换Hive的计划。
148 1
鹰角基于 Flink + Paimon + Trino 构建湖仓一体化平台实践项目
|
12天前
|
SQL 存储 HIVE
鹰角基于 Flink + Paimon + Trino 构建湖仓一体化平台实践项目
鹰角基于 Flink + Paimon + Trino 构建湖仓一体化平台实践项目
|
12天前
|
存储 分布式数据库 Apache
小米基于 Apache Paimon 的流式湖仓实践
小米基于 Apache Paimon 的流式湖仓实践
小米基于 Apache Paimon 的流式湖仓实践
|
15天前
|
存储 分布式数据库 Apache
小米基于 Apache Paimon 的流式湖仓实践
本文整理自Flink Forward Asia 2024流式湖仓专场分享,由计算平台软件研发工程师钟宇江主讲。内容涵盖三部分:1)背景介绍,分析当前实时湖仓架构(如Flink + Talos + Iceberg)的痛点,包括高成本、复杂性和存储冗余;2)基于Paimon构建近实时数据湖仓,介绍其LSM存储结构及应用场景,如Partial-Update和Streaming Upsert,显著降低计算和存储成本,简化架构;3)未来展望,探讨Paimon在流计算中的进一步应用及自动化维护服务的建设。
小米基于 Apache Paimon 的流式湖仓实践
|
2月前
|
DataWorks 关系型数据库 OLAP
云端问道5期实践教学-基于Hologres轻量实时的高性能OLAP分析
本文基于Hologres轻量实时的高性能OLAP分析实践,通过云起实验室进行实操。实验步骤包括创建VPC和交换机、开通Hologres实例、配置DataWorks、创建网关、设置数据源、创建实时同步任务等。最终实现MySQL数据实时同步到Hologres,并进行高效查询分析。实验手册详细指导每一步操作,确保顺利完成。
|
3月前
|
DataWorks 数据挖掘 大数据
方案实践测评 | DataWorks集成Hologres构建一站式高性能的OLAP数据分析
DataWorks在任务开发便捷性、任务运行速度、产品使用门槛等方面都表现出色。在数据处理场景方面仍有改进和扩展的空间,通过引入更多的智能技术、扩展数据源支持、优化任务调度和可视化功能以及提升团队协作效率,DataWorks将能够为企业提供更全面、更高效的数据处理解决方案。
|
8月前
|
数据采集 运维 Cloud Native
Flink+Paimon在阿里云大数据云原生运维数仓的实践
构建实时云原生运维数仓以提升大数据集群的运维能力,采用 Flink+Paimon 方案,解决资源审计、拓扑及趋势分析需求。
18575 54
Flink+Paimon在阿里云大数据云原生运维数仓的实践
|
7月前
|
SQL 分布式计算 数据库
畅捷通基于Flink的实时数仓落地实践
本文整理自畅捷通总架构师、阿里云MVP专家郑芸老师在 Flink Forward Asia 2023 中闭门会上的分享。
8365 15
畅捷通基于Flink的实时数仓落地实践