zl程序教程

您现在的位置是:首页 >  工具

当前栏目

✨[面试进阶]在Hive数据仓库中的建模方式是?为什么选择这种建模方式?(Hive篇)✨

建模面试 方式 为什么 选择 进阶 hive 数据仓库
2023-09-27 14:27:52 时间

在这里插入图片描述

🚩 问题分析

本题主要是为了考察面试人员对于业务的熟悉和理解程度,单讲业务建模类型是相对容易的,但是切合业务进行建模就值得我们多多思考了。

🚩 核心问题讲解

Hive作为数据仓库,同关系型数据库开发过程类似,都需要先进行建模。所谓建模,就是对表之间指定关系方式。建模在Hive中大致分为星型、雪花型和星座型。

要对建模深入理解,首先需要对Hive数仓中的集中表概念进行界定。Hive中的表从形态上分内部表、外部表、桶表、分区表。

在数据逻辑上划分为维度表和事实表。维度表等价于我们常说的字典表。事实表就是字典表之外的数据表。

⚽ 星型

多张维度表,一张事实表,维度表之间没有关系。

查询性能要好些,存储有冗余的。星型模型使用的比较多。

⚽ 雪花型

雪花型是星型建模的扩展,维度表之间有关系。

存储减少冗余,查询性能有损失,需要多级连接。和星型模型的共性就是只有一张是事实表。

⚽ 星座型

星座型也是星型模型的扩展,存在多张事实表。

🚩 问题扩展

扩展性差的时候,记住这样一句话:当增加新业务的时候,就需要增加相应的表。

🚩 结合项目中使用

例如:某个业务系统的信息没有提供汇总表,而是新增一种新的业务,就需要新增一张数据表。

我们统计业务量的时候,要拿大几十张数据表进行关联,报表执行效率很差,后面就直接在数据仓库上帮源系统做了张新业务的汇总表,提高了后续报表的加工效率,也屏蔽了新增业务品种对报表的影响。

这里我们可以结合书仓管设计的基本特性来考虑:

(1)清晰数据结构

(2)数据血缘追踪

(3)减少重复开发

(4)复杂问题简单化

(5)屏蔽原始数据的异常

(6)屏蔽业务的影响,不必改一次业务就需要重新接入

我们可以依照这些概念,哪些基本数据分到数仓层,再结合我们的业务需求,逐层构建各个业务上的集市层。

可以有效减少我们后期运营维护的各项成本。