数仓建模简介

 

建模的意义

如果把数据看作图书馆里的书,我们希望看到它们在书架上分门别类地放置;如果把数据看作城市的建筑,我们希望城市规划布局合理;如果把数据看作电脑文件和文件夹,我们希望按照自己的习惯有很好的文件夹组织方式,而不是糟糕混乱的桌面,经常为找一个文件而不知所措。

数据模型就是数据组织和存储方法,它强调从业务、数据存取和使用角度合理存储数据。只有将数据有序的组织和存储起来之后,数据才能得到高性能、低成本、高效率、高质量的使用。

高性能:良好的数据模型能够帮助我们快速查询所需要的数据。

低成本:良好的数据模型能减少重复计算,实现计算结果的复用,降低计算成本。

高效率:良好的数据模型能极大的改善用户使用数据的体验,提高使用数据的效率。

高质量:良好的数据模型能改善数据统计口径的混乱,减少计算错误的可能性。

建模方法论

2.1 ER模型

数据仓库之父Bill Inmon提出的建模方法是从全企业的高度,用实体关系(Entity Relationship,ER)模型来描述企业业务,并用规范化的方式表示出来,在范式理论上符合3NF。

1)实体关系模型

实体关系模型将复杂的数据抽象为两个概念——实体和关系。实体表示一个对象,例如学生、班级,关系是指两个实体之间的关系,例如学生和班级之间的从属关系。

2)数据库规范化

数据库规范化是使用一系列范式设计数据库(通常是关系型数据库)的过程,其目的是减少数据冗余,增强数据的一致性。

这一系列范式就是指在设计关系型数据库时,需要遵从的不同的规范。关系型数据库的范式一共有六种,分别是第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF)。遵循的范式级别越高,数据冗余性就越低。

3)三范式

1)函数依赖

1cb9fd430bd04a709dfc2a3630da9543.png1、完全函数依赖:

    设X,Y是关系R的两个属性集合,X’是X的真子集,存在X→Y,但对每一个X’都有X’!→Y,则称Y完全函数依赖于X。记做:594f25449cf24c32ba577ee863bacea7.png

人类语言:

比如通过,(学号,课程) 推出分数 ,但是单独用学号推断不出来分数,那么就可以说:分数 完全依赖于(学号,课程) 。

即:通过AB能得出C,但是AB单独得不出C,那么说C完全依赖于AB。

2、部分函数依赖

        假如 Y函数依赖于 X,但同时 Y 并不完全函数依赖于 X,那么我们就称 Y 部分函数依赖于 X,记做:408902827bed453eb7bb8bf9972fe35a.png

人类语言:

比如通过,(学号,课程) 推出姓名,因为其实直接可以通过,学号推出姓名,所以:姓名  部分依赖于 (学号,课程)

即:通过AB能得出C,通过A也能得出C,或者通过B也能得出C,那么说C部分依赖于AB。

 3、传递函数依赖

         传递函数依赖:设X,Y,Z是关系R中互不相同的属性集合,存在X→Y(Y !→X),Y→Z,则称Z传递函数依赖于X。记做:9dd88918baa84aa3b478f6b0cdd70faa.png

人类语言:

 比如:学号 推出 系名 , 系名 推出 系主任, 但是,系主任推不出学号,系主任主要依赖于系名。这种情况可以说:系主任 传递依赖于 学号

通过A得到B,通过B得到C,但是C得不到A,那么说C传递依赖于A。

 

2)第一范式

1、第一范式1NF核心原则就是:属性不可切割 

bc10bd28af764769a45a20c6eac2e5bc.png

很明显上图所示的表格设计是不符合第一范式的,商品列中的数据不是原子数据项,是可以进行分割的,因此对表格进行修改,让表格符合第一范式的要求,修改结果如下图所示:

55d40145407341a09f0a635f3f7303f3.png

实际上,1NF是所有关系型数据库的最基本要求,你在关系型数据库管理系统(RDBMS),例如SQL Server,Oracle,MySQL中创建数据表的时候,如果数据表的设计不符合这个最基本的要求,那么操作一定是不能成功的。也就是说,只要在RDBMS中已经存在的数据表,一定是符合1NF的。

 

 

3)第二范式

2、第二范式2NF核心原则:不能存在“部分函数依赖” 

30aea93aad064c298cfbdec86cf54b05.png

以上表格明显存在,部分依赖。比如,这张表的主键是 (学号,课名),分数确实完全依赖于 (学号,课名),但是姓名并不完全依赖于(学号,课名)

7bdbd1f7aae34b33a5b659163e7224f3.png

41f1c79e9eea4481ad8e978ab80350b5.png

以上符合第二范式,去掉部分函数依赖依赖

 

4)第三范式

3、第三范式 3NF核心原则:不能存在传递函数依赖 

 在下面这张表中,存在传递函数依赖:学号->系名->系主任,但是系主任推不出学号。

15a660970aa14af3a438d5538b4ff0ac.png

 上面表需要再次拆解:

323f60451910435abdc700e52d502549.png

50abae466c164bc8b94027d025a75ebd.png

下图为一个采用Bill Inmon倡导的建模方法构建的模型,从图中可以看出,较为松散、零碎,物理表数量多。

024cf8272255487fb8a85cbc6ab55547.png

这种建模方法的出发点是整合数据,其目的是将整个企业的数据进行组合和合并,并进行规范处理,减少数据冗余性,保证数据的一致性。这种模型并不适合直接用于分析统计。

2.2 维度模型

数据仓库领域的另一位大师——Ralph Kimball倡导的建模方法为维度建模。维度模型将复杂的业务通过事实和维度两个概念进行呈现。事实通常对应业务过程,而维度通常对应业务过程发生时所处的环境。

:业务过程可以概括为一个个不可拆分的行为事件,例如电商交易中的下单,取消订单,付款,退单等,都是业务过程。

下图为一个典型的维度模型,其中位于中心的SalesOrder为事实表,其中保存的是下单这个业务过程的所有记录。位于周围每张表都是维度表,包括Date(日期),Customer(顾客),Product(产品),Location(地区)等,这些维度表就组成了每个订单发生时所处的环境,即何人、何时、在何地下单了何种产品。从图中可以看出,模型相对清晰、简洁。

b8f253038b344011b9f0f0c2e3af861f.png

维度建模以数据分析作为出发点,为数据分析服务,因此它关注的重点的用户如何更快的完成需求分析以及如何实现较好的大规模复杂查询的响应性能。

 

 

  • 22
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Hadoop生态是开源大数据处理框架Hadoop所形成的一系列相关技术的集合,它包括了Hadoop分布式存储系统HDFS、分布式计算框架MapReduce、分布式调度器YARN等关键组件,以及一些配套工具和项目(如Hive、HBase等),用于构建和管理大规模数据处理引擎。 而数据仓库建模(Data Warehouse Modeling)则是指根据业务需求和数据分析目标,将企业或组织的数据整合、清洗并转化为可供分析和决策支持的结构化数据模型(通常采用维度建模或者规范化建模方法)的过程。数据仓库建模的目标是提供高性能、高可用性和易于维护的数据分析环境,为企业提供准确、可信赖的决策支持。 Hadoop生态和数据仓库建模之间存在一定的关系。由于Hadoop具备存储海量数据和并行处理大规模数据的能力,因此可以作为数据仓库的底层存储系统。同时,Hadoop生态中的组件和工具(如Hive)也提供了对数据的清洗、转换和查询等功能,可以支持数据仓库的构建和维护。通过将数据仓库与Hadoop生态相结合,可以建立起一个大规模的、高性能的数据处理平台,实现更快速、更灵活的数据仓库建模和分析。 值得注意的是,数据仓库建模并非只依赖于Hadoop生态,还有其他数据仓库架构和技术可供选择,如传统关系型数据库、商用数据仓库平台等。因此,在具体实施数据仓库建模时,需要根据实际需求和技术成本进行选择,权衡各种方案的优劣,并结合Hadoop生态的特点和能力,合理规划和设计数据仓库建模方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shangjg3

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值