|NO.Z.00003|——————————|BigDataEnd|——|Hadoop&PB级数仓.V03|——|PB数仓.v03|数仓理论|建模方法|
一、数据仓库建模方法
### --- 数据仓库建模方法
~~~ # 数据模型就是数据组织和存储方法,它强调从业务、数据存取和使用角度合理存储数据。
~~~ # 有了适合业务和基础数据存储环境的模型,能获得以下好处:
~~~ 性能:良好的数据模型能帮助我们快速查询所需要的数据,减少数据的I/O吞吐
~~~ 成本:良好的数据模型能极大地减少不必要的数据冗余,也能实现计算结果复用,极大地降低大数据系统中的存储和计算成本
~~~ 效率:良好的数据模型能极大地改善用户使用数据的体验,提高使用数据的效率
~~~ 质量:良好的数据模型能改善数据统计口径的不一致性,减少数据计算错误的可能性
~~~ 大数据系统需要数据模型方法来帮助更好地组织和存储数据,
~~~ 以便在性能、成本、效率和质量之间取得最佳平衡。
二、ER模型
### --- ER模型
~~~ 数据仓库之父Bill Inmon提出的建模方法是从全企业的高度设计一个3NF模型,
~~~ 用实体关系(Entity Relationship, ER)模型描述企业业务,在范式理论上符合3NF。
~~~ 数据仓库中的3NF与OLTP系统中的3NF 的区别在于,它是站在企业角度面向主题的抽象,
~~~ 而不是针对某个具体业务流程的实体对象关系的抽象。
### --- 其具有以下几个特点:
~~~ 需要全面了解整个企业业务和数据
~~~ 实施周期非常长
~~~ 对建模人员的能力要求非常高
### --- ER模型
~~~ 釆用ER模型建设数据仓库模型的出发点是整合数据,
~~~ 将各个系统中的数据以整个企业角度按主题进行相似性组合和合并,
~~~ 并进行一致性处理,为数据分析决策服务,但是并不能直接用于分析决策。
### --- 其建模步骤分为三个阶段:
~~~ 高层模型:一个高度抽象的模型,描述主要的主题以及主题间的关系,用于描述
~~~ # 企业的业务总体概况
~~~ 中层模型:在高层模型的基础上,细化主题的数据项
~~~ 物理模型(也叫底层模型):在中层模型的基础上,考虑物理存储,
~~~ 同时基于性能和平台特点进行物理属性的设计,也可能做一 些表的合并、分区的设计等
三、维度模型
### --- 维度模型
~~~ 维度模型是数据仓库领域的Ralph Kimball大师所倡导的,
~~~ 他的《数据仓库工具箱》是数据仓库工程领域最流行的数据仓库建模经典。
~~~ 维度建模从分析决策的需求出发构建模型,为分析需求服务,重点关注用户如何更快速地完成需求分析,
~~~ 同时具有较好的大规模复杂查询的响应性能。
~~~ 其典型的代表是星型模型,以及在一些特殊场景下使用的雪花模型。
### --- 其设计分为以下几个步骤:
~~~ # 选择需要进行分析决策的业务过程。业务过程可以是:
~~~ 单个业务事件,比如交易的支付、退款等
~~~ 某个事件的状态,比如当前的账户余额等
~~~ 一系列相关业务事件组成的业务流程
~~~ 选择数据的粒度。在事件分析中,我们要预判所有分析需要细分的程度,从而决定选择的粒度
~~~ 识别维表。选择好粒度之后,就需要基于此粒度设计维表,包括维度属性,用于分析时进行分组和筛选
~~~ 选择事实。确定分析需要衡量的指标
### --- 维度模型
~~~ 现代企业业务变化快、人员流动频繁、业务知识功底的不够全面,导致ER模型设计产出周期长。
~~~ # 大多数企业实施数据仓库的经验说明:
~~~ 在不太成熟、快速变化的业务面前,构建ER模型的风险非常大,不太适合去构建ER模型。
~~~ 而维度建模对技术要求不高,快速上手,敏捷迭代,快速交付;
~~~ 更快速完成分析需求,较好的大规模复杂查询的响应性能。
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
——W.S.Landor
分类:
bdv014-PB离线数仓
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通