数据仓库面试题——介绍下数据仓库

可回答:对数据仓库的理解

问过的一些公司:京东,美团,网易,阿里(2021.09),网易有道(2021.10)

参考答案:

数据仓库的发展大致经历了这样的三个过程:

简单报表阶段:这个阶段,系统的主要目标是解决一些日常的工作中业务人员需要的报表,以及生成一些简单的能够帮助领导进行决策所 需要的汇总数据。大部分表现形式为数据库和前端报表工具。

数据集市阶段:这个阶段,主要是根据某个业务部门的需要,进行一定的数据的采集,整理,按照业务人员的需要,进行多维报表的展现,能够提供对特定业务指导的数据,并且能够提供特定的领导决策数据。

数据仓库阶段:这个阶段,主要是按照一定的数据模型,对整个企业的数据进行采集,整理,并且能够按照各个业务部门的需要,提供跨部门的,完全一致的业务报表数据,能够通过数据仓库生成对对业务具有指导性的数据,同时,为领导决策提供全面的数据支持。

首先,我们先来看下数据库、数据集市、数据仓库以及数据湖的概念。

1、什么是数据库?

数据库(Database)是按照一定格式和数据结构在计算机保存数据的软件,属于物理层。

最早期是广义上的数据库,这个阶段的数据库结构主要以层次或网状的为主,这是数据库的数据和程序间具备非常强的依赖性,应用有一定局限性。

我们现在所说的数据库一般指的是关系型数据库。关系数据库是指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,具有结构化程度高,独立性强,冗余度低等优点

关系型数据库主要用于联机事务处理OLTP(On-Line Transaction Processing),主要用于进行基本的、日常的事务处理,例如银行交易等场景。

2、什么是数据集市?

数据集市是一种微型的数据仓库,它通常是有更少的数据,更少的主题区域,以及更少的历史数据,如果数据仓库是企业级的,那数据集市就是部门级的,一般数据集市只能为某个局部范围内的管理人员服务。

3、什么是数据仓库?

数据仓库(Data Warehouse),可简写为DW或DWH。它是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合。它是单个数据存储,出于分析性报告和决策支持目的而创建。为需要业务智能的企业,提供指导业务流程改进、监视时间、成本、质量以及控制。

数据仓库之父比尔·恩门于1990年提出数据仓库(Data Warehouse),数仓主要是为解决企业的数据集成与分析问题。数据仓库主要功能是将OLTP经年累月所累积的大量数据,通过数据仓库特有的数据储存架构进行OLAP,最终帮助决策者能快速有效地从大量数据中,分析出有价值的信息,提供决策支持。自从数据仓库出现之后,信息产业就开始从以关系型数据库为基础的运营式系统慢慢向决策支持系统发展。

一句话总结:数据仓库存在的意义在于对企业的所有数据进行汇总,为企业各个部门提供统一的, 规范的数据出口。

数据仓库相比数据库,主要有以下两个特点:

  • 数据仓库是面向主题集成的。数据仓库是为了支撑各种业务而建立的,数据来自于分散的操作型数据。因此需要将所需数据从多个异构的数据源中抽取出来,进行加工与集成,按照主题进行重组,最终进入数据仓库。

  • 数据仓库主要用于支撑企业决策分析,所涉及的数据操作主要是数据查询。因此数据仓库通过表结构优化、存储方式优化等方式提高查询速度、降低开销。

数据仓库与数据库的对比

维度 数据仓库 数据库
应用场景 OLAP OLTP
数据来源 多数据源 单数据源
数据标准化 非标准化Schema 高度标准化的静态Schema
数据读取优势 针对读操作进行优化 针对写操作进行优化

4、什么是数据湖?

在现在这个时代,数据对于企业而言,已经是一种重要资产。随着企业的不断发展,数据不断堆积,企业希望把生产经营中的所有相关数据都完整保存下来,进行有效管理与集中治理,挖掘和探索数据价值。而数据湖就应运而生。

数据湖是一个集中存储各类结构化和非结构化数据的大型数据仓库,它可以存储来自多个数据源、多种数据类型的原始数据,数据无需经过结构化处理,就可以进行存取、处理、分析和传输。数据湖能帮助企业快速完成异构数据源的联邦分析、挖掘和探索数据价值。

数据湖的本质,是由“数据存储架构+数据处理工具”组成的解决方案。

  • 数据存储架构:要有足够的扩展性和可靠性,可以存储海量的任意类型的数据,包括结构化、半结构化和非结构化数据。

  • 数据处理工具,则分为两大类:

    • 第一类工具,聚焦如何把数据“搬到”湖里。包括定义数据源、制定数据同步策略、移动数据、编制数据目录等。

    • 第二类工具,关注如何对湖中的数据进行分析、挖掘、利用。数据湖需要具备完善的数据管理能力、多样化的数据分析能力、全面的数据生命周期管理能力、安全的数据获取和数据发布能力。如果没有这些数据治理工具,元数据缺失,湖里的数据质量就没法保障,最终会由数据湖变质为数据沼泽。

数据仓库和数据湖的不同类比于仓库和湖泊:仓库存储着来自特定来源的货物;而湖泊的水来自河流、溪流和其他来源,并且是原始数据。

数据湖与数据仓库的对比

维度 数据湖 数据仓库
应用场景 可以探索性分析所有类型的数据,包括机器学习、数据发现、特征分析、预测等 通过历史的结构化数据进行数据分析
使用成本 起步成本低,后期成本较高 起步成本高,后期成本较低
数据质量 包含大量原始数据,使用前需要清洗和标准化处理 质量高,可作为事实依据
适用对象 数据科学家、数据开发人员为主 业务分析师为主

5、数据仓库特点

1)数据仓库是面向主题的

数据仓库中的数据是按照一定的主题域进行组织的,每一个主题对应一个宏观的分析领域。数据仓库排除对于决策无用的数据,提供特定主题的简明视图。

举个例子:

比如说一个公司会有很多的部门,不同的部门都会去数据仓库拿数据,做自己要做的报表,我们把这一个部门或是某一个业务,也就是独立从我们数据仓库中获取数据的单元,把它称作为主题,也可以理解为一个主题就是一个部门。这个部门作为一个主题会从数据仓库总去获取数据,用于完成需要的报表。

2)数据仓库是集成的

数据仓库中的数据不是一开始就是在里面的,而是从各个分散的数据库中抽取出来的。但是有一个问题,就是这些来自不同数据库的数据会有重复和不一样的地方,如字段的同名异议、异名同义、单位不统一,字长不统一等。所以在集成的过程中,还要对数据进行清洗、规划、去敏等操作。

一句话就是,数据仓库是对企业内不同业务部门数据完整集合,而且还是处理过的数据。

3)数据仓库的数据是稳定的

数据仓库中的数据主要是为了给企业做决策时分析使用,涉及的主要是对数据的查询,一般情况下不会对数据进行修改,如果数据仓库中的历史数据超过存储期限,则会直接删除。

因为数据仓库涉及的操作主要是查询,所以它的系统要比数据库简单很多,但是数据仓库涉及到查询的数据量一般都很大,所以在数据查询就有更高的要求。

一句话记忆,数仓里不存在数据的更新和删除(不是指数据到期的删除)操作。

4)数据仓库中的数据是随时间变化而变化的

数据仓库中的数据不可更新是针对应用来说的,也就是说,数据仓库的用户进行分析处理是不进行数据更新操作的。但并不是说,在从数据集成输入数据仓库开始到最后被删除的整个生存周期中,所有的数据仓库数据都是永远不变的。

数据仓库的数据是随着时间变化而变化的主要表现如下:

  • 数据仓库随着时间变化不断增加新的数据内容。数据仓库系统必须不断捕捉OLTP数据库中变化的数据,追加到数据仓库当中去,也就是要不断的生成OLTP数据库的快照,经统一集成增加到数据仓库中去;但对于确实不在变化的数据库快照,如果捕捉到新的变化数据,则只生成一个新的数据库快照增加进去,而不会对原有的数据库快照进行修改。

  • 数据库随着时间变化不断删去旧的数据内容 。数据仓库内的数据也有存储期限,一旦过了这一期限,过期数据就要被删除。

  • 数据仓库中包含有大量的综合数据,这些综合数据中很多跟时间有关,如数据经常按照时间段进行综合,或隔一定的时间片进行抽样等等。这些数据要随着时间的变化不断地进行从新综合。因此数据仓库的数据特征都包含时间项,以标明数据的历史时期。

一句话理解,数仓里会完整的记录某个对象在一段时期内的变化情况。

#数仓开发##大数据开发工程师面经#
全部评论
这下明白了,感谢分享啊
点赞 回复 分享
发布于 2022-09-04 21:00 陕西

相关推荐

#秋招# #数仓# #互联网# 总结一下我收到的面试和面试题目吧总计收到的面试:腾讯、百度、阿里云、字节、美团、滴滴、科大讯飞、京东百度提前批一面:1、自我介绍2、说一下你在实习中的收获我主要是从技能和废技能两个层面做的叙述3、简单概括一下你所做的工作4、你所接触过的最大的数据量有多大?你是怎么解决这个大数据量数据的处理的?5、你有一个任务产出很晚,你都怎么排查问题?6、写两道算法1)三个sql题,都很简单2)一个链表排序题(其实很简单,就是我太菜,没写好)7、说一说你在那边做的一个项目,你承担了什么角色,得到了什么收获科大讯飞正式批一面:1、说一说你们部门的数仓怎么分的层?2、你们在ods层到dwd层的数据做好什么操作吗?3、你了解的市面上有哪些数仓的分层架构?4、那我如果不分层,就把很多表的加工逻辑揉到一起会有什么问题?5、你所接触过的数仓都是基于什么构建的?6、你们数仓建模的方法是什么?7、你接触过的建模方法都有哪些?为什么不用别的呢?8、我有一个用户的信息,里面有信息的更改时间,你怎么把最新的数据取出来?9、Union和union all的区别是什么?10、Select * from a left join b on a.c1=b.c1 and b.status=1和select * from a left join b on a.c1=b.c1 where b.status=1的数据有什么区别?  美团一面:1、自我介绍2、说一说你在那边都负责什么3、你怎么判断你哪一个表放在数仓的哪一个层级4、你一个需求的指标,你怎么判断是在已有的数据资产上面更新还是新建数据资产?5、了解数据库的三范式建模吗?实际有没有用过?那你们那边主要用什么建模6、代码:1)用三范式建模的方式构建学生和成绩表,并将每门课程总成绩最高的学生找出来 2)我有100个随机数,想要分十组,每一组最少需要有2个数,怎么分能让我每组的差距最小7、开放性问题1)为什么没在字节留用2)以后打算在哪里发展3)说一说你的技术路线规划8、反问美团二面:1、自我介绍2、实习在那边主要都干什么,结合一个例子说明3、你们数仓的数据来源都有什么?你知道你们那边的数据抽取的原理是什么吗4、你说你处理过pb、eb级别的数据,那你平时处理的数据能有多少行5、你们数仓是怎么分层的?口径封装到dwi层,那你能举个例子吗?粒度有多细6、说一个你做的工作,并说说怎么把这些表做的分层7、你做过维表吗8、你都知道几种事实表9、Sql题:1)美团的不同城市的补给站的个数(很简单)2)一个表有uid、city_id、status、ctime(时间戳),求出每个城市每个user,每天的状态时间。(有点难度,因为要考虑跨天的问题)字节一面:1、说一下你在商业化那边做的项目,有什么收获?(我说了一个项目,我大题的工作内容还有我技术上和非技术上面的收获)2、你说说技术和业务哪个更重要,你怎么理解的3、那你理解咱们数仓到底在做什么?(我说了小公司的反面例子)4、那你感觉不分层还是不是数仓引出了《阿里,大数据之路》5、咱们这边数仓分层的dwi和dwa里面的i和a你知道啥意思吗6、你理解我们数仓在划分主题和建模的时候是侧重业务还是技术?辩证看待7、既然聊到了数仓分层,那你说说数仓分层有什么好处,又有什么坏处?好处已经说烂了,坏处其实就是(冗余、维护成本、管理成本)8、范式建模和数仓建模的区别9、你平时怎么保证维度一致性和指标一致性的?10、聊一个其他的,你理解特征和指标是什么,有什么区别?那标签呢?11、聊点技术上的问题:你平时处理数据倾斜怎么做的?你怎么用spark-ui去定位的?结合一个你实际的项目12、为什么我们用mr计算架构计算的时候很忌讳去写count distinct13、最后一个sql题先问我连续登录的问题,我说已经写过好多遍了,换一个题目吧。然后是这样一个题:给出一张表(数据量非常大),里面有user_id,timestamp,tag三个字段,找出每个用户最早和最晚的tag(userid和timestamp都是bigint)这道题其使用开窗函数轻松解决,或者扫两遍表,一次用max、min计算最早最晚时间,再去join原表,但是第一种方案涉及到排序,数据量很大的情况下很耗性能,第二种方案扫了两边表。其实有一种方案,就是先把ts和tag用cancat做拼接,直接对拼接的字段做min、max,会优先对比ts,顺便带出来tag。然后在外层把拼接字段做split,并用get函数获取ts和tag。滴滴一面+二面:新问题:1、你觉得你在工作过程中怎么和一些团队配合的?出现了问题怎么处理的?2、数据治理方面的工作3、Spark的弹性你怎么理解的4、你觉得你的数仓建设和别人数仓建设对比,怎么评价你的更好一些滴滴三面:1、你对滴滴这个公司有什么了解?2、你知道滴滴有什么业务吗3、你为什么选择滴滴我说了平台的前景、平台能给我提供的技术支持、还有薪资待遇4、你在团队协作上面遇到了什么问题,怎么解决的5、如果再给你一次机会去做这个项目,你会怎么去做来解决当初遇到的问题6、你接触过什么olap工具7、你平时会跟进大数据的新的技术吗8、你觉得你的缺点是什么9、你有认真总结过你实习的这段经历吗10、你觉得你是以技术学习为主还是业务学习为主11、你的职业规划是什么12、你觉得数仓工程师应该具备什么技能阿里云一面:1、你们那边的广告都是什么形式?都是什么人去投广告?广告投放的大致流程是什么样子的?2、你在那边做的主要的业务范围是什么?有什么收获吗3、写了两道sql题,第一道有点难度,第二道很简单阿里云二面:1、说一个你实际做项目的时候遇到的技术上的问题,以及你是怎么解决的?2、spark你知道怎么用日志和ui来排查数据倾斜问题吗3、给了一个阿里的实际场景题,比较open,看个人的技术积累和知识面吧,这个题差不多问了我四十分钟4、你理解的数仓的职能是什么二面我感觉我回答的很好阿里云三面(交叉面):主要及时扒了一下我的实习经历,没啥好说的阿里云hr面:面完了泡池子,估计就是陪跑了目前0offer,字节、阿里、华为还在流程中说一下面试感受以及我对实习的理解吧:总的来说,面试大厂的体验都是很好地,尤其是字节那个面试官还有阿里二面的面试官,其实面试的时候在引导我思考,不问八股(八股真的很没意思),很亲切,而且面试其实也是学习的过程,大家要善于总结和复盘。对于实习的话,我理解就是尽量时间久一些吧,不管是出于对技术的学习也好还是转正也好,实习久了真的学到的会多很多,因为在网上聊了几个只实习了两三个月就跑了的,其实这段时间并没有干什么实质性的任务,我实习了八个月,前四个月跟着我mentor做项目,后面就是自己去对接,而且做了驾驶舱、Q1重点项目,真的很磨练人,而且字节这边实习给实习生的权限很高,只要你想学,真的会收获满满。最后,也欢迎大家来交流。更新###华为已经面试完了,二轮技术面+一轮主管面,很顺利,目前泡池子去了,字节推进到3面了,小米一面完事(小米这个面试真的是我体验最差的面试)
应届想染班味:这么难
点赞 评论 收藏
分享
16 111 评论
分享
牛客网
牛客企业服务