开发者社区> 1175223700484759> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

数据仓库面试题——数据仓库分层

简介: 数据仓库分层
+关注继续查看

问过的一些公司:字节 x 2,字节(2021.07)-(2021.08)-(2021.10),阿里 x 2,爱奇艺,百度 x 2,百度(2021.08),网易 x 3,网易(2021.09)x2,美团 x 4,美团(2021.09)x2,京东,京东(2021.09),贝壳,keep,马蜂窝 x 2,转转,滴滴,小米,米哈游,有赞 x 2,猿辅导,58 x 2,作业帮社招,字节社招,腾讯社招 x 2,端点数据(2021.07),百度(2021.09),蔚来(2021.09),恒生(2021.09),快手(2021.09),唯品会(2021.10)

参考答案:

首先,我要知道数据仓库分层架构的目标是什么?是为了实现维度建模,进而支撑决策分析目标。

数据分层从关系型在线交易系统到面向主题的数据仓库系统,从范式建模到维度建模的必经之路。

数据分层是一套让我们的数据体系更有序的行之有效的数据组织和管理方法。数据分层不是银弹,也没有绝对标准,当然也不能包治百病,不能解决所有的数据问题,但是,数据分层却可以给我们带来如下的好处:

隔离原始数据:不论是数据的异常还是数据敏感度,使真实数据与统计数据解耦开。

数据结构化更清晰:每一个数据分层都有它的作用域和职责,在使用表的时候能更方便地定位和理解。

数据血缘追踪:提供给外界使用的是一张业务表,但是这张业务表可能来源很多张表。如果有一张来源表出问题了,我们可以快速准确的定位到问题,并清楚每张表的作用范围。

增强数据复用能力:减少重复开发,通过数据分层规范化,开发一些通用的中间层数据,能够减少重复计算,提高单张业务表的使用率,提升系统的执行效率。

简化复杂的问题:把一个复杂的业务分成多个步骤实现,每一层只处理单一的步骤,比较简单和容易理解。而且便于维护数据的准确性,当数据出现问题之后,可以不用修复所有的数据,只需要从有问题的步骤开始修复。

减少业务的影响:业务可能会经常变化,这样做就不必改一次业务就需要重新接入数据。

减少重复开发:规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算。

统一数据口径:通过数据分层,提供统一的数据出口,统一对外输出的数据口径。

分层的核心思想就是解耦,再解耦,把复杂的问题简单化。

数据仓库基础分层主要是分为四层,如下图所示

image

如上图所示,一个公司可能有多个业务系统,而数据仓库就是将所有的业务系统按照某种组织架构整合起来,形成一个仓储平台,也就是数仓。

1、四层分层

第一层:

ODS——原始数据层:存放原始数据

ODS层即操作数据存储,是最接近数据源中数据的一层,数据源中的数据,经过抽取、洗净、传输,也就说传说中的ETL之后,装入本层;一般来说ODS层的数据和源系统的数据是同构的,主要目的是简化后续数据加工处理的工作。从数据粒度上来说ODS层的数据粒度是最细的。ODS层的表通常包括两类,一个用于存储当前需要加载的数据,一个用于存储处理完后的历史数据。历史数据一般保存3-6个月后需要清除,以节省空间。但不同的项目要区别对待,如果源系统的数据量不大,可以保留更长的时间,甚至全量保存;数据在装入本层前需要做以下工作:去噪、去重、提脏、业务提取、单位统一、砍字段、业务判别。

第二层:

DWD——数据明细层:对ODS层数据进行清洗、维度退化、脱敏等。覆盖所有系统的、完整的、干净的、具有一致性的数据层。

该层一般保持和ODS层一样的数据粒度,并且提供一定的数据质量保证,在ODS的基础上对数据进行加工处理,提供更干净的数据。同时,为了提高数据明细层的易用性,该层会采用一些维度退化手法,当一个维度没有数据仓库需要的任何数据时,就可以退化维度,将维度退化至事实表中,减少事实表和维表的关联。例如:订单id,这种量级很大的维度,没必要用一张维度表来进行存储,而我们一般在进行数据分析时订单id又非常重要,所以我们将订单id冗余在事实表中,这种维度就是退化维度。

第三层:

DWS——数据服务层: 对DWD层数据进行一个轻度的汇总。

DWS层为公共汇总层,会进行轻度汇总,粒度比明细数据稍粗,会针对度量值进行汇总,目的是避免重复计算。该层数据表会相对比较少,大多都是宽表(一张表会涵盖比较多的业务内容,表中的字段较多)。按照主题划分,如订单、用户等,生成字段比较多的宽表,用于提供后续的业务查询,OLAP分析,数据分发等。

第四层:

DM——数据集市层:为各种统计报表提供数据。

存放的是轻度聚合的数据,也可以称为数据应用层,基于DWD、DWS上的基础数据,整合汇总成分析某一个主题域的报表数据。主要是提供给数据产品和数据分析使用的数据,通常根据业务需求,划分成流量、订单、用户等,生成字段比较多的宽表,用于提供后续的业务查询,OLAP分析,数据分发等。从数据粒度来说,这层的数据是汇总级的数据,也包括部分明细数据。从数据的时间跨度来说,通常是DW层的一部分,主要的目的是为了满足用户分析的需求,而从分析的角度来说,用户通常只需要分析近几年的即可。从数据的广度来说,仍然覆盖了所有业务数据。

2、三层分层

上述四层数仓,如果是问的三层数仓,就相当于是把DWD、DWS合并成DW层,往细的方面分,DW还包括DWM层(数据中间层),三层分层如下:

第一层:

ODS——原始数据层:存放原始数据

第二层:

DW——数据仓库层:数据清洗,初步汇总

本层将从 ODS 层中获得的数据按照主题建立各种数据模型,每一个主题对应一个宏观的分析领域,数据仓库层排除对决策无用的数据,提供特定主题的简明视图。在DW层会保存BI系统中所有的历史数据,例如保存10年的数据。

第三层:

DM——数据集市层

3、五层分层

五层分层如下:

第一层:

ODS——原始数据层:存放原始数据

第二层:

DWD——数据明细层:对ODS层数据进行清洗、维度退化、脱敏等。

第三层:

DWS——数据汇总层: 对DWD层数据进行一个轻度的汇总。

第四层:

ADS——数据应用层:为各种统计报表提供数据

该层是基于DW层的数据,整合汇总成主题域的服务数据,用于提供后续的业务查询等。

第五层:

DIM——维表层:基于维度建模理念思想,建立整个企业的一致性维度。

维表层主要包含两部分数据:

高基数维度数据:一般是用户资料表、商品资料表类似的资料表。数据量可能是千万级或者上亿级别。

低基数维度数据:一般是配置表,比如枚举值对应的中文含义,或者日期维表。数据量可能是个位数或者几千几万。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
数据仓库面试知识总结
数据仓库面试知识总结
58 0
数据仓库面试题集锦(附答案和数仓知识体系)
数据仓库面试题集锦(附答案和数仓知识体系)
1005 0
数据库面试题【九、视图&视图的优缺点】
数据库面试题【九、视图&视图的优缺点】
117 0
数据库面试题【十三、超大分页怎么处理】
数据库面试题【十三、超大分页怎么处理】
153 0
抢占式ECS搭建离线大数据分析集群
本文介绍使用阿里云抢占式ECS实例以及OSS等云上产品构建低成本弹性大数据分析系统。
296 0
抢占式ECS搭建离线大数据分析集群
基于阿里云的抢占式ECS实例以及弹性伸缩能力,同时结合阿里云对象存储OSS服务搭建离线大数据分析集群,实现计算与存储分离架构,同时降低计算资源成本和提升计算资源利用率且拥有海量存储能力。
1075 0
【译Py】数据科学面试终极指南06
【译Py】数据科学面试终极指南 【译Py】数据科学面试终极指南01 【译Py】数据科学面试终极指南02 【译Py】数据科学面试终极指南03 【译Py】数据科学面试终极指南04 【译Py】数据科学面试终极指南05 【译Py】数据科学面试终极指南06 【译Py】数据科学面试终极指南07 面试后要做的7件事   数据科学面试完了以后,你可能会觉得该干的都已经干完了,可实际上还有好多事可以干。
1162 0
分布式数据仓库设计
做大做强事实表,做小做弱维表; 分布式模式-维度建模新原则  (1)以值代键:针对键值唯一的维表,除非必要,否则不引入维表,如IP地址维表,采用IP作为维表的主键,事实表中存储IP值;      (2)合理分表:传统关系型数据仓库存在多表整合的冲动,如上图Event事实表,各种Acount Ind,Finance Ind等,用来扩展表的通用性,试图把所有的数据都存储到一张表 中。
892 0
数据库与数据仓库
简而言之,数据库是面向事务的设计,数据仓库是面向主题设计的。   数据库一般存储在线交易数据,数据仓库存储的一般是历史数据。
881 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
海量数据分布式存储——Apache HDFS之最新进展
立即下载
ECS 计算与存储分离架构实践
立即下载
代码大数据分析研究与实践
立即下载