目录
1. 实时数仓与离线数仓
2. 实时数仓需求
3. 架构图
3.1 行为日志处理:
3.2 业务库表处理:
4. 面试题:
🧀你们的实时数仓有分层吗?
🧀那你们的业务数据呢?
🧀那你们的OLAP分析是怎么设计的?
🧀为什么用doris?
🧀Doris数据怎么来的?
🧀你们ADS层的数据是放在哪的?
🧀你们ODS到DWD层做了哪些事啊?
1. 实时数仓与离线数仓
-
数仓:数据的仓库
-
实时数仓:数据实时入仓,对数据做统计分析也是实时响应的
-
离线数仓:数据不是实时入仓,仅对历史数据做统计分析
2. 实时数仓需求
一个公司做实时数仓几乎都是对离线数仓的一个辅助,大部分统计分析任务都是基于统计很长时间跨度的数据,所以还是以离线数仓为主
-
实时大屏看板: 公司核心指标,如订单数、订单额、访问量,活动参与人数、参与次数……
-
c端实时数据展示:热门榜单,比如热门话题,热门路线,热门教程,热门商品,热门品类,热门品牌
-
实时特征数据加工:为广告引擎和推荐引擎,提供实时的样本数据
-
实时olap支撑:实时接入各类数据,做轻度聚合,入库到doris,提供给分析师去做实时联机分析
3. 架构图
ODS | Operational Data Store | 操作数据层 | 该层的主要功能是存储从源系统直接获得的增量或者全量数据。该数据有可能以文件形式存在,也有可能以数据库形式存在,也有可能两种形态都存在 |
ODS->DWD | 数据完成清洗、过滤、字段的规范化(字段格式统一、字段类型统一、一些空值的统一)、维度提前的关联(退维) | ||
DWD | Data Warehouse Detail | 明细数据层 | 该层的主要功能是基于业务主题域的划分,面向业务过程、以数据为驱动设计模型,并且基于维度建模理论进行建模,完成数据整合,为数据的应用提供统一的基础细节数据。实现企业级数据模型的落地。 |
DWS | Data Warehouse Summary | 汇总数据层 | 该层的主要功能是以分析需求为驱动进行数据模型设计,实现跨业务主题域数据的关联计算或者轻度汇总计算,从而支持上层的统计分析需求。 在该层实现指标的统一计算口径,实现了指标的一次计算多次复用的多维数据模型;实现了核心业务实体的基础特征库,为深入的业务分析提供数据支持。 |
ADS | Application Data Services | 应用层 | 用于提供面向应用程序的数据访问和服务 |
3.1 行为日志处理:
-
c端实时数据展示和实时大屏看板:从flume采集过来的数据进行加工退维,继续将其写入kafka(因为后续还需要做流式计算),此时便可以对数据根据具体业务需求进行计算,将算好的结果放入mysql中。
-
实时olap支撑: 从DWD层读数据,做中间聚合,将结果写入doris,然后OLAP分析工具平台连接doris即可进行分析。
-
实时特征数据加工:数据从kafka经过清洗、处理加工一下, 继续写到kafka,算法引擎组或广告推荐组会继续去拉取这个数据。其不属于数仓的任何一层
3.2 业务库表处理:
业务表数据用flink-cdc一边读一边计算,直接将结果输出到mysql中
4. 面试题:
🧀
你们的实时数仓有分层吗?
有的,我们的主要分层架构分为ODS、DWD、ADS层。
对于一些日志文件,我们一般会从flume中将数据采集过来落入ODS层,经过清洗、过滤、字段的规范化、退维等操作,将操作后的数据落入DWD层,最后再根据具体业务需求,将数据进行一些聚合分析等处理,让它落入ADS层。
🧀
那你们的业务数据呢?
对于业务数据,我们用cdc接入直接就计算了,如果要做OLAP分析的话,就会把数据落入到doris一份。
🧀
那你们的OLAP分析是怎么设计的?
我们会用Doris作为OLAP分析的底层基础设施
🧀
为什么用doris?
-
Doris可以存储很多的数据量
-
查询很快
-
可以接受数据的实时入库
🧀
Doris数据怎么来的?
我们会用flink从数据源读取数据,先做一个轻量聚合,再写入doris.
🧀
你们ADS层的数据是放在哪的?
这要看数据给谁用。如果是C端数据展示和实时大屏看板,数据都是放在mysql里面的。
🧀
你们ODS到DWD层做了哪些事啊?
清洗、过滤,数据格式的规范化、退维