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

简介: 数据仓库分层

问过的一些公司:字节 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)

参考答案:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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——维表层:基于维度建模理念思想,建立整个企业的一致性维度。

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

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

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

相关实践学习
数据库实验室挑战任务-初级任务
本场景介绍如何开通属于你的免费云数据库,在RDS-MySQL中完成对学生成绩的详情查询,执行指定类型SQL。
阿里云云原生数据仓库AnalyticDB MySQL版 使用教程
云原生数据仓库AnalyticDB MySQL版是一种支持高并发低延时查询的新一代云原生数据仓库,高度兼容MySQL协议以及SQL:92、SQL:99、SQL:2003标准,可以对海量数据进行即时的多维分析透视和业务探索,快速构建企业云上数据仓库。 了解产品 https://www.aliyun.com/product/ApsaraDB/ads
相关文章
|
4月前
|
XML Dubbo Java
【面试问题】Dubbo 的整体架构设计有哪些分层?
【1月更文挑战第27天】【面试问题】Dubbo 的整体架构设计有哪些分层?
|
7月前
|
运维 大数据 数据管理
数据仓库(06)数仓分层设计
目前主流的数据仓库分层大多为四层,也有五层的架构,这里介绍基本的四层架构。 分别为数据贴源层(ods)、数据仓库明细层(dw)、多维明细层(dws)和数据集市层(dm)。
245 1
数据仓库(06)数仓分层设计
|
11月前
|
机器学习/深度学习 人工智能 机器人
强化学习从基础到进阶--案例与实践含面试必知必答[9]:稀疏奖励、reward shaping、curiosity、分层强化学习HRL
强化学习从基础到进阶--案例与实践含面试必知必答[9]:稀疏奖励、reward shaping、curiosity、分层强化学习HRL
强化学习从基础到进阶--案例与实践含面试必知必答[9]:稀疏奖励、reward shaping、curiosity、分层强化学习HRL
|
存储 canal 消息中间件
数据仓库系列(三)数仓分层的意义价值及如何设计数据分层
数据仓库系列(三)数仓分层的意义价值及如何设计数据分层
1315 0
数据仓库系列(三)数仓分层的意义价值及如何设计数据分层
|
SQL 存储 数据采集
数据仓库工程师面试题
数据仓库工程师面试题
|
存储 SQL 消息中间件
[数据仓库]分层概念,ODS,DM,DWD,DWS,DIM的概念
ODS 全称是 Operational Data Store**,操作数据存储.“面向主题的”,数据运营层,也叫ODS层,是最接近数据源中数据的一层,数据源中的数据,经过抽取、洗净、传输,也就说传说中的 ETL 之后,装入本层。本层的数据,总体上大多是按照源头业务系统的分类方式而分类的。
2279 0
|
存储 数据采集 安全
数据仓库面试题——介绍下数据仓库
对数据仓库的一些概念总结,对比数据库、数据湖有什么区别
|
测试技术
软件测试面试题:如何分层自动化测试?
软件测试面试题:如何分层自动化测试?
75 0
|
存储 数据采集 大数据
数据仓库面试知识总结
数据仓库面试知识总结
数据仓库面试知识总结
|
存储 数据采集 安全
数据仓库面试题集锦(附答案和数仓知识体系)
数据仓库面试题集锦(附答案和数仓知识体系)