数仓建模和业务建模对比总结

hive在数仓ODS层到DWD层建模方法 数仓建模的原因: 当今的数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing)、联机分析处理OLAP(On-Line Analytical Processing)。OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。二者的主要区别对比如下表所示。 创建数仓主要完成OLAP的业务需求,将原始数据导入到ODS层之后,就需要将原 阅读详情

数仓建模和业务建模对比总结

1. 背景

  1. 在大数据开发中,整个流程是数据采集,数据存储,数据传输,数据计算,数据展示。在这个过程中数据存储和数据计算是最关键2个环节。
  2. 数据存储整体最关键就是各个数据库和表关系设计,这一点和业务数据库设计是一样,需要考虑数据读写方便,后续扩展方便,还需要保证性能可以满足现在以及未来一段时间的需求。
  3. 本文就是讲述关于数仓建模的一些理解和实践经验分享。从大到小进行设计。

2. 整体建模思路

  1. 在学术界,数仓整体建模思路有2大类,一种是Bill Inmon的自上而下。另外一种是Ralph Kimball的自下而上。
  2. 自上而下,需要从企业整体先入手,梳理整个公司以及各个项目的流程,分析其中概念,应该有什么样数据,最后拼接到一起,完成整体设计。这样考虑点会非常全面,但会相对耗时,并且不保证一定可以完成企业需求。
  3. 自下而上,则是根据企业需求来,只针对此前和当前需求进行设计,需要的数据就放入数仓中,不需要的则不放入。这类方式建设周期短,可以解决当前的业务问题。但可能会需要进行频繁迭代,因为企业需求是变化很快的,此前架构设计可能很快就无法满足需求。
  4. 实际从个人经历来说,刚好经历过一个大的项目重构,刚好请教学习了一些大佬的思路。对于有经验的架构师来说,实际开发时,整体数仓架构设计,既有自上而下,也有自下而上,结合使用。因为对于经验丰富架构师来说,多年经验结合对公司业务理解,可以直接自上而下对业务做梳理,然后以此为基础做架构设计。同时结合企业需求变化,自下而上做调整。这样整体工期有所保证,能够切合企业需求,又能有较好的扩展和适应性,能够满足企业未来一段时间的需求。
    从个人角度来说,理论知识用来指导实践开发,但没必要照搬,尽信书不如无书。时间才是检验真理唯一标准
    PS:
    如一个电商业务系统,有订单模块,用户模块,营销和广告模块,物流模块,商品模块,支付模块,商家模块等等。
    当这些模块和产品经理的流程设计出来后,就可以进一步进行数据和表的设计了。

3. 数据库和表关系

  1. 在数仓模型中,数据库表之间关系有星型模型,雪花模型,星座(星系)模型。
  2. 星型模型,就是一个事实表以及关联的0到多个维度表,注意只会关联一层。也就是说针对这个事实表的数据查询,可以控制在这个事实表以及其关联的一层维度表内,查询速度相对较快,因为需要join的层级只有0或者1层。
  3. 雪花模型,一个事实表关联了多个维度表,但这些维度表还关联其他维度表,像是一个雪花一样不断分散。这时候的维度表就是遵循了业务建表范式的维度表。
  4. 星座(星系)模型,就是2个事实表通过一个共同维度表关联起来。这种关联在数仓中比较少见,因为为了方便数据分析,一般直接使用大宽表较多,也就是直接将维度表join到事实表中。
    PS:
  1. 从上可以看出,数仓中星型模型表关系较多,因为数据都在一个大宽表中,数据查询更加便利。海量数据下进行表join成本是比较高的。这也是大小表join需要使用分布式缓存或者广播变量的原因。
  2. 从上可以看出,业务建表会遵循一,二,三甚至四,五范式。这时候表之间的关系出现星座模型反而会多一些。为了确保第一范式的所有列都是原子性,第二范式的所有非主键列都需要依赖主键,第三范式的所有非主键列之间不能有依赖。整体这样下来,数据会被拆分为多个小的维度表,这时候事实表通过维度表关联起来反而会概率高一些。
  3. 在数仓建模中,星型模型因为数据最多一层join就可以拿到所有数据,数据计算相对最方便。所以雪花模型可以通过提前将维度表join转为星型模型。星座模型,也是一样的思路。这也是OLAP引擎clickhouse对大宽表支持非常好甚至鼓励使用大宽表的原因并针对此做了很多优化。

注意,理论指导实际,但实际开发并不是照搬。例如实际经历过的,订单表很多时候为了相关页面信息展示更快,会保存一些并不需要进行同步更新的维度信息,如订单相匹配的地址,用户信息等数据,这样一定的数据冗余反而可以很好提升业务数据查询速度,实际反馈也比之前按照范式接口快30%以上。

4. 表设计

  1. 第一范式,每一列都是不可分割原子数据项,也就是说每一列的数据都需要是不可分割,不能和其他列数据混合在一起。
  2. 第二范式,在第一范式基础上,非主键属性必须完全依赖于主键属性。
  3. 第三范式,在第二范式基础上,非主键属性之间不能互相依赖。

注意,主键并不是表里面的主键id,而是确定表一行数据唯一性的数据。如学生成绩,学生id和科目决定了一行数据的唯一性
这其实是很多时候实际开发约定俗称的规范,一般也都会这么践行,但理论从实际中抽象提炼出规律
上述三个范式内容总结一下,就是每一列的数据需要分割独立,并且非主键列数据必须依赖于主键来确定,同时非主键之间不能有依赖传递,必须都直接依赖于主键属性。

其实上述范式都遵守之后,就会发现建立好的表会拆分为多个维度表,因为满足上述要求后,原本一个表的数据需要拆分到不同表中,然后通过外键关联起来。这样才能很好剥离非主键属性之间的依赖关系,同时方便数据增加删除和修改。

5. 数仓建模步骤

  1. 确定主题
  1. 在数据开发中,数据指标一般都是按照主题划分,大的主题如留存,新增,日活,漏斗,GMV等等
  2. 不管什么开发,先确定大的需求方向和类型最重要。
  1. 确定度量
  1. 顾名思义,就是需要哪些度量数据,如销售额,活跃用户数,留存用户数等等
  1. 确定事实数据粒度
  1. 顾名思义,就是需要确定数据在不同维度下的汇总情况,很多时候就是按照天,还是按照一周,半个月,一个月等等维度聚合。
  2. 实际企业开发中,很多时候为了应对类似需求变化,一般选择一个最小粒度做开发,这样就算需要更高层次聚合,也可以应对。这是有经验面对无经验产品经理的踩坑教训!!!!
  1. 确定维度
  1. 确定维度,其实就是数据分析的角度,例如是按照人,按照地区,按照订单金额等等区分。
  1. 创建事实表
  1. 上述步骤处理之后,就可以建立事实表了。
  2. 注意,数仓建表,和业务建表不同,数仓建表更鼓励使用大宽表,如果需要保留一定维度信息灵活性方便信息修改和一致性,降低数据冗余,可以使用事实表和一个层级维度表。也就是星型模型比较合适

注意,在数仓开发中,很多公司都有自己的规范。一般按照规范进行开发,很多理论规则其实包含在这些规范中了。当需要自行架构一个体系或者一个模块时,就可以结合自己经验和理论,从更高层级去做设计,这样实际结合理论,效果更佳。

维度建模简介 维度建模简介 维度建模是一种将数据结构化的逻辑设计方法,因此它对业务用户来说很直观,并能提供较快的查询性能。 维度建模将客观世界分为事实和维度。 1、维度建模 VS 范式(3NF)建模 建模方法 开发周期 开发成本 数据冗余 维护成本 维度建模(Kimball) 短 低 有 高 范式建模(Inmon) 长 高 无 低 在数仓模型架构设计中,维度建模以星型模型为主。 dw层通... 阅读详情

相关推荐

维度建模 3 大事实表深度对比:事务、周期快照与累积快照的 5 个选型场景

本文深度解析维度建模中事务、周期快照与累积快照三大事实表的核心特性与适用场景,提供5个实战选型指南。通过对比存储效率、查询性能及业务适配度,帮助数据工程师在订单追踪、账户日报等场景中做出最优决策,提升数仓建模效率与质量。

weixin_34221654的博客 297

3000字长文为你解读数据仓库与复杂业务数据建模全流程

个推TechDay治数训练营首期课程《数据仓库与维度建模》直播回顾视频来袭!个推资深大数据研发工程师为您深入浅出介绍数据仓库的前世今生以及数据建模的常用方法。

个推技术学院 3894

数仓理论及建模方法

1. 数仓概述 数据仓库: 数据仓库是一个面向主题的、集成的、非易失的、随时间变化的数据集合。重要用于组织积累的历史数据,并且使用分析方法(OLAP、数据分析)进行分析整理,进而辅助决策,为管理者、企业系统提供数据支持,构建商业智能。 面向主题:为数据分析提供服务,根据主题将原始数据集合在一起。 集成的:原始数据来源于不同的数据源,要整合成最终数据,需要经过 ETL(抽取、清洗、转换)的过程。 非易失:保存的数据是一系列历史快照,不允许被修改,只允许通过工具进行查询、分析。 时变性:数仓会定期接收、集成新的

weixin_47243236的博客 1万+

数据仓库建模与数据库建模的比较

数据仓库建模与数据库建模的比较

wzy0623的专栏 2975

【数仓】数仓建模理论及步骤,ER建模,维度建模,星形模型,雪花模型,数据分层

数据仓库是一个面向主题、集成的、非易失的且随时间变化的数据集合。它主要用于组织、积累历史数据,并使用分析方法(如OLAP、数据分析)进行分析整理,以辅助决策,为管理者、企业系统提供数据支持、构建商业智能。 数据仓库的特点包括面向主题性、集成性、非易失性和时变性。 数仓建模的目标是在性能、成本、效率和数据质量之间找到最佳平衡点

不积跬步无以至千里,不积小流无以成江海。一个喜欢学习分享的程序员 6214

【数仓】数仓建模—指标体系

建设指标体系,需要回答以下几个问题为什么建设数据指标体系如何评价数据指标体系,一个好的数据指标体系是要需要回答两个问题,它是不是有助于业务发展,以及说这个指标体系拆解是不是可具备、可落地、可实操的可能性。如何建设数据指标体系,这就需要我们的建设方法论了如何维护和管理指标,指标的维护和管理是有套路的,最简单的指标管理方法——指标字典,我们在此基础上可以做指标管理系统OSM 实现了业务目标结构化,UJM 实现了业务目标流程化。数据指标体系其实只是数据赋能业务的万里长征的第一步。...

m0_54252387的博客 3856

数据模型与业务模型(领域模型)的区别

1.数据模型(Data model);指业务数据该如何持久化,以及数据之间的关系,即:传统的ER模型;数据模型存在于数据层。 2.业务模型(领域模型:Domain model):指业务逻辑中,相关联的数据如何联动协同;领域模型存在于领域层; 衔接数据层与领域层的关键对象是Repository(DAO); Entity(实体对象):实体对象是我们正常业务应该用的业务模型,它的字段和方法应 该和业务语言保持一致,和持久化方式无关;。Entity 的生命周期仅存在于内存中, 不需要可序列化和可持久化..

工匠精神coding,终生学习 4749

数仓建模:如何做好业务阶段模型的建设?

本文详细介绍了业务阶段的建模过程,主要包括了指标体系的构建,主题域的划分、数据域的划分及业务域的划分。业务阶段建模为后期数仓开发的建设奠定了基石,提供了各种理论依据,同时也为数仓价值提供了保证,也是数仓建设最基础最重要的阶段,其中业务建模指标体系建设尤为重要,需要前期花大量的时间进行需求调研、业务调研及数据调研。

石榴姐yyds 873

数仓各个层级都在干什么

数仓分层是为了将复杂问题简单化,和解耦。数仓是数据量和数据复杂度上升到一定程度的产物。最初的设计都是烟囱式的开发。就比如你有几本书,还需要像图书馆那样分门别类吗?数据分层,有分三层(ods层,dw层,dm层),有分四层(ods层,dwd层,dws层和ads层)。 1、问为什么分三层,或者四层,每一层都做了什么,如果不这么分可不可以? 我觉得首先达成一致的是数仓要分层。然后是分几层,ods层是数据贴...

qq_37301790的博客 3343

数仓建模:一文带你读懂什么是数仓建模? | 详聊数据建模的几种形式

本文对数据建模的全流程进行了剖析,详细介绍了数据建模的流程、维度建模、范式建模、及关系建模的全过程。企业可以根据自身的发展情况及所处的阶段、业务所处的形态选择合适的建模流程、规范及数据模型,数仓建模其主要的目的是为了更好的支撑上层应用及业务的发展。

石榴姐yyds 1551

数仓建模—数据域

数据域 前面我们介绍数据集市和宽表设计 都提到了一个词,那就是数据域,而且数据域这个概念在数仓里面也是非常重要的,今天我们就看一下它。 前面我们说过很多次了,分层是为了方便管理、数据集市也是为了方便管理,今天我们介绍的数据域的划分也是为了方便管理,行政区域的划分也是为了方便管理,JVM 的内存区域划分也是为了方便管理,所以大道至简,这也是道的意义。 域是区域的意思,有边界和范围,趋势数据域就是数据的范围和边界,也就是我们将相关的数据划分到同一个区域内,那么什么叫相关呢,后面我们会解释 数据域的定义 数据仓库

6万+

大数据笔试真题集锦---第七章:数仓面试题

第七章目录 第七章 数仓 数仓是一个面向主题的、集成的、稳定的、时变的,存储历史数据的仓库。 面向主题的:数仓中的数据按照主题进行存储,每个主题都是决策层分析的一个角度; 集成的:不同来源的数据会统一整合后存入数仓中; 稳定的:数据一旦进入仓库后不会轻易发生改变,就算数据本身需要变化也轻易不会改动原数据,会根据分析需求考虑数据的更新策略; 时变的:随着时间的推移,长时间不更新的数据...

qianfeng_dashuju的博客 4469

数仓建模—数仓建模和业务建模

这篇文章的主要是为了对比数仓建模和业务建模的区别,从而更好的掌握,关于里面提到的很多数仓建模的知识,前面都有文章介绍,你可以参考。

7万+

金融数仓体系建设

背景自2018年以来,随着业务体系的不断丰富与发展,数据分析与应用需求越来越丰富,对金融数据仓库建设的要求也越来越迫切。金融数据仓库建设需要解决的问题,主要包括如下几点:1、数据存储和组...

过往记忆大数据 1906

LabVIEW通过ActiveX控件实现与三菱FX5U PLC的高效数据交互

本文详细介绍了如何利用LabVIEW的ActiveX控件,通过三菱官方MX Component工具包实现与FX5U PLC的高效数据交互。文章从环境配置、控件插入到实战代码解析,系统讲解了连接建立、数据读写及资源释放的全流程,并提供了关键的避坑指南,帮助工程师快速构建稳定可靠的上位机通讯系统。

weixin_29197051的博客 373

用Spirent Test Center测试交换机Head of Line(HOL)Blocking

测试目的:设备执行拥塞控制,使非阻塞端口不受阻塞端口影响 预设条件:在RFC2889里按以下步骤设置,端口1和端口3同时向端口4发送数据包,端口1向端口2发送数据包 测试步骤:运行设置好的RFC2889 测试结果:所有frame size都显示没有Head of Line(HOL),即非阻塞端口不受阻塞端口所影响 ...

Yuna_的博客 1357

五、数据仓库详细介绍(建模)实践篇

到这里,由于数仓模型设计的复杂性,我们需要多人合作共同完成建模工作,这时候架构师或者建模师可以结合之前分层分域的成果,按层按域将模型设计任务进行拆解后分发给不同的人完成。DW 层,数据仓库的核心存储层,这一层数仓建模的核心,相对标准的思路是我们在明细层采用范式建模的思路自顶向下设计把 ODS 层的数据完整的整合进来,打破孤岛(ID 映射)、消除冗余,再往上层可以采用维度建模的思路,基于 DWD 层做轻度汇总、重度汇总,主要以满足业务需求为主,后期如有需求新增或变化可以基于 DWD 层的完整数据重新汇总。

潜行者 1851

完整的申请邓白氏编码的流程(手把手教你申请邓白氏编码)

申请公司的苹果开发者账号和企业级的苹果开发者账号时,都会用到邓白氏编码,也就是我们申请苹果开发者账号时需要填写的D-U-N-S Number。     申请这个邓白氏编码是免费的,但是从像华夏邓白氏公司提交申请到可以申请苹果开发者账号来用这个9位的D-U-N-S Number,需要一段时间,我申请得到D-U-N-S Number,用了8个工作日(不算周末哦)

wxw2011014003的博客 9万+

数据仓库-维度建模

目录 数据仓库定义 数据仓库和数据库 维度建模 维度建模 VS 第三范式 维度建模设计过程 事实概念 事实表技术 维度概念 维度表技术 数据仓库定义 数据仓库,英文名称为Data Warehouse,可简写为DW或DWH。数据仓库,是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合。它是单个数据存储,出于分析性报告和决策支持目的而创建。 为需要业务智能的企业,提供指导业务流程改进、监视时间、成本、质量以及控制。 数据仓库和数据库 数据库主要用于事务处理,...

weixin_39363807的博客 1765

全国各省份影像下载地址(11级别)

cesium中使用urltemplate加载,leaflet中使用tile加载,具体加载有问题可以给我留言。

资深三维GIS开发 5146

流媒体弱网优化之路(NACK)——纯NACK方案的优化探索

流媒体学习之路(NACK)——纯NACK方案的最高性能 文章目录流媒体学习之路(NACK)——纯NACK方案的最高性能一、NACK简介二、Nack的理解2.1 一种补救策略2.2 什么时候要?2.3 要多少?2.4 怎么要?三、计算分析3.1 rtt强相关3.2 补包次数计算3.3 Nack的定时发送3.4 nack重传限制四、实验   近期在针对纯丢包场景做一些简单的探索实验,一个让我困扰的问题就是:不使用FEC而只是通过纯NACK进行补偿,到底能在实验环境下抵抗多少的丢包呢?每一次丢包补偿的最大时长

qw225967的博客 1万+

[big data] 数仓

定义 一个数据仓库通常是一个面向主题 的(subject— oriented)、集成的 (integrated)、相对稳定 的(non—volatile)、反映时间变化的 (time—variant)数据集合 ,它 是建立决策支持系统 (Dss)的数据基础 。 数据仓库有如下 4个特征 : (1)面向主题的.所谓 主题 ,是指用户使 用数据仓库进行决 策时所关心 的重点方面 ,如销售情况 ,人事情...

鹜骜的博客 731

【点云可视化】自制ply文件并使用open3d可视化点云

使用open3d可视化点云,需要将点云制作为ply文件传入函数中。 安装open3d 直接使用pip安装 pip install open3d ply文件 ply文件的结构为:文件头+数据内容,文件头从 ply 一行开始,到 end_header 为止,里面定义了此 ply文件中数据的组织形式,包括数据类型和个数。后面是点云的坐标信息及每个点的颜色属性的,参考自 如下为具有5个点的点云,end_header后每一行表示一个点的x,y,z,R,G,B信息 ply format ascii 1.0 comme

这个人很蓝 1万+

数仓建模平台核心能力与实战应用解析

数据仓库建模是构建企业数据中台的关键环节,其核心在于通过维度建模、星型模型等技术将业务数据转化为可分析的模型。传统建模方式面临业务需求频繁变更、模型调整效率低下等挑战。数仓建模平台通过可视化交互、智能建模引擎等技术,实现模型设计的自动化与工程化。这类平台通常具备范式自适配算法、血缘关系图谱等核心能力,能显著提升建模效率并降低沟通成本。在零售、金融等行业中,数仓建模平台可缩短65%以上的模型设计时间,并支持实时数仓、数据网格等前沿场景。智能索引推荐、元数据管理等热词技术在实际应用中展现出显著价值,是构建现代化

weixin_29038303的博客 176

让 PyCharm 代码“发光”:高亮插件与特效全攻略

PyCharm 作为一款强大的 Python IDE,支持多种插件让代码“发光”——无论是动态输入特效、彩虹括号,还是霓虹主题,都能让你的代码脱颖而出!进入 File → Settings → Editor → Color Scheme → Rainbow Brackets。进入 File → Settings → Appearance & Behavior → Material Theme。进入 File → Settings → Editor → Color Scheme → General。

qq_43580271的博客 3835

ArcGIS实验教程——实验二十五:大型商场选址经典案例

本实验基于ArcGIS平台进行商场选址分析,综合考虑道路、居民点、停车场和已有商场四个影响因素。通过缓冲区分析建立各要素的影响范围(道路50米、居民点100米、停车场100米、已有商场500米),采用叠加分析中的相交和擦除运算确定最优选址区域。实验建立了区位评价体系,通过属性赋值(1/-1)和联合运算生成综合评价结果,并实现分级可视化显示。注意事项包括距离参数设置对结果的影响以及正确选择空间分析工具。该流程为商业选址提供了科学的GIS解决方案。

智慧空间实验室 1万+
上一篇: SpringBoot 搭建HBase 数据服务API接口
下一篇: Kylin 3.1.0新版本安装教程
闻香识代码
博客等级 码龄12年 314粉丝 223原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值