大数据最全数据仓库面试题整理超详细_数仓面试

  • 数据仓库结构的描述,包括数据模式、视图、维、层次结构和导出数据的定义,以及数据集市的位置和内容
  • 业务系统、数据仓库和数据集市的体系结构和模式
  • 由操作环境到数据仓库环境的映射,包括元数据和他们的内容、数据提取、转换规则和数据刷新规则、权限等。
业务元数据

从业务角度描述了数据仓库中的数据,他提供了介于使用者和实际系统之间的语义层,使不懂计算机技术的业务人员也能读懂数仓中的数据。

  • 企业概念模型:表示企业数据模型的高层信息。整个企业业务概念和相互关系。以这个企业模型为基础,不懂sql的人也能做到心中有数
  • 多维数据模型。告诉业务分析人员在数据集市中有哪些维、维的类别、数据立方体以及数据集市中的聚合规则。
  • 业务概念模型和物理数据之间的依赖。业务视图和实际数仓的表、字段、维的对应关系也应该在元数据知识库中有所体现。

元数据管理系统?

元数据管理往往容易被忽视,但是元数据管理是不可或缺的。一方面元数据为数据需求方提供了完整的数仓使用文档,帮助他们能自主快速的获取数据;另一方面数仓团队可以从日常的数据解释中解脱出来,无论是对后期的迭代更新还是维护,都有很大的好处。元数据管理可以让数据仓库的应用和维护更加的高效。

元数据管理功能
  • 数据地图:以拓扑图的形式对数据系统的各类数据实体、数据处理过程元数据进行分层次的图形化展示,并通过不同层次的图形展现。
  • 元数据分析:血缘分析、影响分析、实体关联分析、实体差异分析、指标一致性分析。
  • 辅助应用优化:结合元数据分析功能,可以对数据系统的应用进行优化。
  • 辅助安全管理:采用合理的安全管理机制来保障系统的数据安全;对数据系统的数据访问和功能使用进行有效监控。
  • 基于元数据的开发管理:通过元数据管理系统规范日常开发的工作流程
元数据管理标准
  • 对于相对简单的环境,按照通用的元数据管理标准建立一个集中式的元数据知识库
  • 对于比较复杂的环境,分别建立各部分的元数据管理系统,形成分布式元数据知识库,然后通过建立标准的元数据交换格式,实现元数据的集成管理。
元数据管理系统

自研

apache atlas

印象最深刻的项目是什么?为什么?亮点与优势?

数仓如何确定主题域?

https://www.jianshu.com/p/708f5606dd01

主题

主题是在较高层次上将数据进行综合、归类和分析利用的一个抽象概念,每一个主题基本对应一个宏观的分析领域。在逻辑意义上,它是对企业中某一宏观分析领域所涉及的分析对象。

面向主题的数据组织方式,就是在较高层次上对分析对象数据的一个完整并且一致的描述,能刻画各个分析对象所涉及的企业各项数据,以及数据之间的联系。

主题是根据分析的要求来确定的。

主题域
从数据角度看(集合论)

主题语通常是联系较为紧密的数据主题的集合。可以根据业务的关注点,将这些数据主题划分到不同的主题域。主题域的确定由最终用户和数仓设计人员共同完成。

从需要建设的数仓主题看(边界论)

主题域是对某个主题进行分析后确定的主题的边界。

数仓建设过程中,需要对主题进行分析,确定主题所涉及到的表、字段、维度等界限。

确定主题内容

数仓主题定义好以后,数仓中的逻辑模型也就基本成形了,需要在主题的逻辑关系中列出属性和系统相关行为。此阶段需要定义好数据仓库的存储结构,向主题模型中添加所需要的信息和能充分代表主题的属性组。

如何控制数据质量?

  • 校验机制,每天进行数据量的比对 select count(*),早发现,早修复
  • 数据内容的比对,抽样比对
  • 复盘、每月做一次全量

如何做数据治理?

https://www.jianshu.com/p/44d7618f32b6

数据治理不仅需要完善的保障机制,还需要理解具体的治理内容,比如数据应该怎么进行规范,元数据该怎么来管理,每个过程需要那些系统或者工具来配合?

数据治理领域包括但不限于以下内容:数据标准、元数据、数据模型、数据分布、数据存储、数据交换、数据声明周期管理、数据质量、数据安全以及数据共享服务。
在这里插入图片描述

模型设计的思路?业务驱动?数据驱动?

构建数据仓库有两种方式:自上而下、自下而上

Bill Inmon推崇自上而下的方式,一个企业建立唯一的数据中心,数据是经过整合、清洗、去掉脏数据、标准的、能够提供统一的视图。要从整个企业的环境入手,建立数据仓库,要做很全面的设计。偏数据驱动

Ralph Kimball推崇自下而上的方式,认为数据仓库应该按照实际的应用需求,架子啊需要的数据,不需要的数据不要加载到数据仓库中。这种方式建设周期短,用户能很快看到结果。偏业务驱动

数据质量管理

https://blog.csdn.net/kuangfeng88588/article/details/99085074

数据质量管理是对数据从计划、获取、存储、共享、维护、应用、消亡生命周期的每个阶段里可能引发的数据质量问题,进行识别、度量、监控、预警等,通过改善了提高组织的管理水平使数据质量进一步提高。

数据质量管理是一个集方法论、技术、业务和管理为一体的解决方案。放过有效的数据质量控制手段,进行数据的管理和控制,消除数据质量问题,从而提高企业数据变现的能力。

会遇到的数据质量问题:数据真实性、数据准确性、数据一致性、数据完整性、数据唯一性、数据关联性、数据及时性

什么是数据模型?

数据模型就是数据组织和存储的方法,通过抽象的实体以及实体间联系的形式来表达现实世界中事务的相互关系的一种映射,他强调从业务、数据存取和使用角度合理的存储数据。

为什么需要数据仓库建模?

数仓建模需要按照一定的数据模型,对整个企业的数据进行采集,整理,提供跨部门、完全一致的报表数据。

合适的数据模型,对于大数据处理来讲,可以获得得更好的性能、成本、效率和质量。良好的模型可以帮助我们快速查询数据,减少不必要的数据冗余,提高用户的使用效率。

数据建模进行全方面的业务梳理,改进业务流程,消灭信息孤岛,更好的推进数仓系统的建设。

OLAP和OLTP的模型方法的选择?

OLTP系统是操作事物型系统,主要数据操作是随机读写,主要采用满足3NF的实体关系模型存储数据,在事物处理中解决数据的冗余和一致性问题。

OLAP系统是分析型系统,主要数据操作是批量读写,不需要关注事务处理的一致性,主要关注数据的整合,以及复杂大数据量的查询和处理的性能。

3范式?

  • 每个属性值唯一,不具有多义性
  • 每个非主属性必须完全依赖于整个主键,而非主键的一部分
  • 每个非主属性不能依赖于其他关系中的属性

数据仓库建模方法?

有四种模型:ER模型、维度模型、Data Vault模型、Anchor模型。用的较多的是维度模型和ER模型。

ER模型

ER模型用实体关系模型描述企业业务,在范式理论上满足3NF。数仓中的3NF是站在企业角度面向主题的抽象,而不是针对某个具体业务流程的实体对象关系的抽象。

采用ER模型建设数据仓库模型的出发点是整合数据,将各个系统中的数据按照主题进行相似性整合,并进行一致性处理。

ER模型特点:
  • 需要全方位了解企业业务数据
  • 实施周期较长
  • 对建模人员要求教高
维度建模

维度建模按照事实表维度表来构建数仓。

维度建模从分析决策的需求出发构建模型,为分析需求服务。重点关注用户如何快速的完成数据分析,可以直观的反应业务模型中的业务问题,需要大量的数据预处理、数据冗余,有较好的大规模复杂查询的响应性能。

事实表

发生在现实世界中的操作性事件,其产生的可度量数值,存储在事实表中。从最细粒度级别来看,事实表的一行对应一个度量事件。事实表表示对分析主题的度量。‘

事实表中包含了与各个维度表相关联的外键,可与维度表关联。事实表的度量通常是数值类型,且记录数不断增加,表数据量迅速增长。

维度表

维度表示分析数据时所用的环境。

每个维度表都包含单独的主键列。维度表行的描述环境应该与事实表行完全对应。维度表通常比较宽,是扁平型的非规范表,包含大量的低粒度的文本属性。

注意

事实表的设计是以能够正确记录历史信息为准则

维度表的设计是以能够以合适的角度来聚合主题内容为准则

维度建模的三种模式
  • 星形模型:以事实表为中心,所有的维度直接连接在事实表上。由一个事实表和一组维度表组成。
  • 雪花模型:是对星形模型的扩展。雪花模型的维度表可以拥有更细的维度,比星形更规范一点。维护成本较高,且查询是要关联多层维表,性能较低
  • 星座模型:基于多张事实表,多张事实表共享维度信息
维度建模步骤:
  • 选择业务过程
  • 选择粒度
  • 选定事实表
  • 选择维度

事实表的类型?

事实表有:事务事实表、周期快照事实表、累积快照事实表、非事实事实表

事务事实表

事务事实表记录的是事务层面的事实,保存的是最原子的数据,也称“原子事实表”。事务事实表中的数据在事务事件发生后产生,数据的粒度通常是每个事务记录一条记录。

周期快照事实表

以具有规律性的、可预见的时间间隔来记录事实。它统计的是间隔周期内的度量统计,每个时间段一条记录,是在事务事实表之上建立的聚集表。

累积快照事实表

累积快照表记录的不确定的周期的数据。代表的是完全覆盖一个事务或产品的生命周期的时间跨度,通常具有多个日期字段,用来记录整个生命周期中的关键时间点。

在这里插入图片描述

非事实型事实表

https://www.cnblogs.com/lijun4017/archive/2010/08/05/1792293.html

这个与上面三个有所不同。事实表中通常要保留度量事实和多个维度外键,度量事实是事实表的关键所在。

非事实表中没有这些度量事实,只有多个维度外键。非事实型事实表通常用来跟踪一些事件或说明某些活动的范围。

第一类非事实型事实表是用来跟踪事件的事实表。例如:学生注册事件

第二类非事实型事实表是用来说明某些活动范围的事实表。例如:促销范围事实表

数仓架构为什么要分层?

  • 分层可以清晰数据结构,使用时更好的定位和理解
  • 方便追踪数据的血缘关系
  • 规范数据分层,可以开发一些通用的中间层数据,能够减少极大的重复计算
  • 把复杂问题简单化
  • 屏蔽原始数据的异常。不必改一次业务就重新接入数据

数据分层思想?

理论上数据分为:操作数据层、数据仓库层、数据服务层。可根据需要添加新的层次,满足不同的业务需求。

操作数据层ODS

Operate Data Store操作数据存储。数据源中的数据经过ETL后装入ODS层。

ODS层数据的来源一般有:业务数据库、日志、抓取等。

数据仓库层DW

根据ODS层中的数据按照主题建立各种数据模型。

DW通常有:DWD、DWB、DWS

DWD: data warehouse detail细节数据层,是业务层和数据仓库的隔离层。

DWB: data warehouse base基础数据层,存储的是客观数据,一般用作于中间层。

DWS: data warehouse service服务数据层,整合汇总分析某个主题域的服务数据。一般是大宽表。

数据服务层/应用层ADS

该层主要提供数据产品和数据分析使用的数据,一般会放在ES、Mysql系统中供线上系统使用

数仓架构进化

经典数仓架构:使用传统工具来建设数仓

离线大数据架构:开始使用大数据工具来替代经典数仓中的传统工具

Lambda架构:在离线大数据架构的基础上,使用流处理技术直接完成实时性较高的指标计算

Kappa:实时处理变成了主要的部分,出现了以实时处理为核心的kappa架构

离线大数据架构

数据源通过离线的方式导入离线数仓中。下游应用根据业务需求选择获取数据的方式

Lambda架构

在离线数仓的基础上增加了实时计算的链路,并对数据源进行流式改造,实时计算去订阅消息队列,并推送到下游的数据服务中去。

Lambda架构问题:同样的需求需要开发两套一样的代码;资源占用增多

Kappa架构

kappa架构可以认为是lambda架构的简化版,移除了lambda架构中的批处理部分。

在kappa架构中,需求修改或者历史数据重新处理都通过上游重放完成

kappa架构最大的问题是流式重新处理历史数据的吞吐能力会低于批处理,但可以通过增加计算资源来弥补

总结

真实场景中,是lambda架构和kappa架构的混合。大部分实时指标通过kappa架构计算,少量关键指标用lambda架构批量计算

随着数据多样性的发展,数据库这种提前规定schema的模式显得力不从心。这时出现了数据湖技术,把原始数据全部缓存到某个大数据存储上,后续分析时根据需求去解析原始数据。简单来说,数据仓库模式是schema on write,数据湖模式是schema on read

OLAP简介

OLAP(On-line Analytical Processing),联机分析处理,其主要的功能在于方便大规模数据分析及统计计算,对决策提供参考和支持

特点:数据量大、高速响应、灵活交互、多维分析

OLAP分类

存储类型分类

ROLAP(RelationalOLAP)

MOLAP(MultimensionalOLAP)

HOLAP(HybridOLAP)

处理类型分类
  • MPP架构
  • 搜索引擎架构
  • 预处理架构

开源OLAP解决方案

https://blog.csdn.net/weixin_42529806/article/details/97615618

  • Persto、SparkSQL、Impala等MPP架构和ROLAP的引擎
  • Druid和Kylin等预处理架构和MOLAP的引擎
  • ES这种搜索引擎架构
  • ClickHouse及IndexR这种列式数据库

OLAP引擎

https://www.cnblogs.com/kaleidoscope/p/10163678.html

Presto

Facebook开发的分布式大数据SQL查询引擎,专门进行快速数据分析

特点
  • 可以将多个数据源的数据进行合并,可以跨越整个组织进行分析
  • 直接从HDFS读取数据,在使用前不需要大量的ETL操作
查询原理
  1. 完全基于内存的并行计算
  2. 流水线
  3. 本地化计算
  4. 动态编译执行计划
  5. 小心使用内存和数据结构
  6. 类BlinkDB的近似查询
  7. GC控制
Druid

Druid是一个用于实时查询和分析的分布式实时处理系统,主要用于广告分析,互联网广告监控、度量和网络监控

特点
  1. 快速的交互式查询——Druid的低延迟数据摄取架构允许事件在它们创建后毫秒内可被查询到。
  2. 高可用性——Druid的数据在系统更新时依然可用,规模的扩大和缩小都不会造成数据丢失;
  3. 可扩展——Druid已实现每天能够处理数十亿事件和TB级数据。
  4. 为分析而设计——Druid是为OLAP工作流的探索性分析而构建,它支持各种过滤、聚合和查询
应用场景
  1. 需要实时查询分析
  2. 具有大量数据时,如每天数亿事件的新增、每天数10T数据的增加;
  3. 需要一个高可用、高容错、高性能数据库时。
  4. 需要交互式聚合和快速探究大量数据时
Kylin

Kylin是提供与Hadoop之上的SQL查询接口及多维分析能力以支持超大规模数据

特点

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

应用场景

  1. 需要实时查询分析
  2. 具有大量数据时,如每天数亿事件的新增、每天数10T数据的增加;
  3. 需要一个高可用、高容错、高性能数据库时。
  4. 需要交互式聚合和快速探究大量数据时
Kylin

Kylin是提供与Hadoop之上的SQL查询接口及多维分析能力以支持超大规模数据

特点

[外链图片转存中…(img-saYHca5X-1714777532211)]
[外链图片转存中…(img-TnaCMQIH-1714777532211)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 20
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值