数据库

首页 » 常识 » 问答 » 大数据数仓高级面试题整理
TUhjnbcbe - 2024/9/30 20:50:00
北京那个医院治疗白癜风好 https://jbk.39.net/yiyuanfengcai/yyjs_bjzkbdfyy/
数仓高内聚低耦合是怎么做的

定义

高内聚:强调模块内部的相对独立性,要求模块内部的元素尽可能的完成一个功能,不混杂其他功能,从而使模块保持简洁,易于理解和管理。

低耦合:模块之间的耦合度要尽可能的低,避免模块之间的复杂依赖,使得每个模块都可以独立存在,从而减少模块间的相互影响,提高系统的可维护性。

做到低耦合、高内聚

一般复杂的公共逻辑可以采用抽象类和抽象方法的方式下沉到共有模块中,然后由相关子类去实现抽象方法,来实现不同的功能。这样可以将复杂的逻辑拆分成各个子类,使得类之间的耦合度降低,提高代码的可维护性。

数仓中多重粒度的作用,以及实现

定义

在数据仓库中,粒度是指数据的细度。粒度越高,表示数据越细致,每个数据点所包含的信息量也就越大。粒度越低,表示数据的概括性越强,每个数据点所包含的信息量也就越小。

在数据仓库中,多重粒度指的是将数据按照多个不同的粒度进行存储,以便在需要时更方便地进行查询和分析。例如,可以将数据按年、月、日等不同的粒度进行存储,以便根据需里对数据进行按年、按月、按日等不同维度的分析。多重粒度数据仓库在实际应用中非常常见,能够满足大多数数据分析的需求。

作用

多重粒度数据仓库可以让我们更方便地对数据进行分析和查询,具体有以下几点作用:

1.提高查询效率:将数据按照多个不同粒度存储,可以让我们更快地找到所需的数据。例如,如果我们需要查询某一天的销售数据,直接查询按日粒度存储的数据即可,而不用扫描整个数据仓库。

2、减少数据冗余:在数据仓库中,将数据按照多个粒度存储,可以减少数据几余,节省空间。例如,如果我们将每一天的销售数据都单独存储,那么一年的数据就需要存储65天的数据;如果将每一月的销售数据存储,则一年的数据只需要存储12个月的数据。

、方便数据分析:多重粒度数据仓库可以让我们更方便地对数据进行分析。例如,如果我们想要对某一天的销售数据进行分析,可以直接查询按日粒度存储的数据;如果想要对某-月的销售数据进行分析,可以直接查询按月粒度存储的。

实现

在数据仓库中实现多重粒度是指在数据仓库中设计多种方式来表示和存储时间相关的数据。这样就可以在不同的粒度(例如年、月、日、小时等)》上查询数据,从而满足不同的分析需求

常用的实现方式有两种:1.时间维度表:将时间的不同粒度分别建立为单独的维度表,并与事实表进行关联。例如,可以建立年、月、日、小时等维度表,并通过外键关联到事实表中。

2.时间层级表:将时间的不同粒度存储在同一个表中,并设计为层级结构。例如,可以将时间表设计为“年-月-日-小时”的层级结构,将每个时间点都存储在同一个表中。

具体选择哪种方式,取决于业务需求和数据查询的频率。

时间维度表的优势在于查询速度快,但维护成本较高,需要单独维护多个表。

时间层级表的优势在于维护成本低,但查询速度可能较慢。

如何提高查询效率

优化数据库结构,统一管理所有数据,减少查询的次数;

使用缓存技术,将查询结果保存到内存中,加速查询;

合理利用索引,提高查询的效率;

采用分布式系统,将查询任务分发到多台机器,提高查询速度;

采用消息队列技术,将批量数据进行拆分,减少查询时间;

利用数据库定时备份技术,减少查询时间;

采用数据库分片技术,将数据分布到多个数据库,提高查询效率;

采用数据库视图技术,将复杂的SQL语句拆分为多个简单的SQL语句,提高查询效率;

采用SQL优化技术,充分利用数据库的索引,提高查询效率;

采用数据库集群技术,将数据分布到多个数据库服务器,提高查询效率;

数仓数据域划分几种方式

我们采用四种方式对数仓数据域进行划分:

1.按照业务类型划分:比如销售、财务、研发、物流等等。

2.根据需求方划分:比如需求方为财务部,就可以设定对应的财务主题域,而财务主题域里面可能就会有员工工资分析,投资回报比分析等主题。

.按照功能或应用划分:比如

1
查看完整版本: 大数据数仓高级面试题整理