实时数仓项目《一》-实时数仓架构

目录

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层做了哪些事啊?

清洗、过滤,数据格式的规范化、退维

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/751008.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

字符分类函数(iscntrl、i是space.....)---c语言

目录 一、定义二、字符分类函数2.1 -iscntrl()2.1.1定义2.1.2使用举例 2.2 -isspace()2.2.1描述2.2.2使用举例 2.3-isdigit()2.3.1描述2.3.2使用举例 2.4-isxdigit()2.4.1描述 2.5-islower()2.5.1描述2.5.2使用举例 2.6-isupper()…

THM学习笔记—Simple CTF

nmap扫描,发现2222端口很奇怪啊,重新换一种方式扫描2222端口 发现是ssh 先用ftp试试,尝试匿名登录 下载所有文件 发现只有一个ForMitch.txt,告诉我们其账号密码为弱密码,我们猜测Mitch为其用户名,尝试暴力…

MechanicalSoup,一个非常实用的 Python 自动化浏览器交互工具库!

目录 前言 什么是 Python MechanicalSoup 库? 核心功能 使用方法 1. 安装 MechanicalSoup 库 2. 创建 MechanicalSoup 客户端 3. 打开网页并与之交互 实际应用场景 1. 网页自动化测试 2. 网络爬虫与数据提取 3. 网页自动化操作 4. 自动化填写和提交多个表单 5.…

洛谷 P1102 A-B数对

A-B 数对 题目背景 出题是一件痛苦的事情! 相同的题目看多了也会有审美疲劳,于是我舍弃了大家所熟悉的 AB Problem,改用 A-B 了哈哈! 题目描述 给出一串正整数数列以及一个正整数 C C C,要求计算出所有满足 A −…

24计算机考研调剂 | 福建理工大学

福建理工大学收调剂 (08开头) 考研调剂招生信息 学校:福建工程学院 专业:工学 年级:2024 招生人数:6 招生状态:正在招生中 联系方式:********* (为保护个人隐私,联系方式仅限APP查看) 补充内容 福建理工大学材料科学与工程学院-智能高…

[flink总结]什么是flink背压 ,有什么危害? 如何解决flink背压?flink如何保证端到端一致性?

1 Flink的背压(Backpressure)是指当下游算子处理数据的速度不及上游算子传递数据的速度时,会导致数据始终堆积在网络层或内存中,会导致系统效率下降,出现背压现象。 背压的危害: 系统性能下降:…

V-JEPA模型,非LLM另外的选择,AGI的未来:迈向Yann LeCun先进机器智能(AMI)愿景的下一步

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

EPICS和Arduino Uno之间基于串行文本协议的控制开发

Arduino Uno的串口服务程序设置如文本的串口通信协议设计以及在Arduino上的应用-CSDN博客中所示。通过在串口上发送约定的文本协议,它实现的功能如下: 实现功能: 读取三路0.0V~5.0V模拟量输入,读取端口A0~A2设置三路0.0V~5.0V的模…

typeof 与 instanceof 区别

文章目录 一、typeof二、instanceof三、区别 一、typeof typeof 操作符返回一个字符串,表示未经计算的操作数的类型 使用方法如下: typeof operand typeof(operand)operand表示对象或原始值的表达式,其类型将被返回 举个例子 typeof 1 /…

Unity类银河恶魔城学习记录10-5 p93 Major stats and defensive stats源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili CharacterStats.cs using System.Collections; using System.Collections…

Vue中的Vnode虚拟Dom一文详解

VNode 是什么? VNode 是 Virtual Node 的缩写,它是 Vue.js 中用来描述真实 DOM 节点的对象。在 Vue 中,每个组件都会被渲染成一个 VNode 树,然后由虚拟 DOM 算法(Virtual DOM Algorithm)将其转化为真实的 …

js 常见基础问题 var、let、const的区别

var、let 和 const 是 JavaScript 中用来声明变量的关键字,它们之间有几个关键的区别: 1.变量提升(Hoisting): var 声明的变量会被提升到作用域的顶部,这意味着你可以在声明之前访问它们,值为 undefined。…

MySQL数据库操作学习(2)表查询

文章目录 一、表查询1.表字段的操作①查看表结构②字段的增加③字段长度/数据类型的修改④字段名的修改⑤删除字符段⑥清空表数据⑦修改表名⑧删除表 2、表数据查询3、where 字段4、聚合函数 一、表查询 1.表字段的操作 ①查看表结构 desc 表名; # 查看表中的字段类型&#…

K8S之持久化存储

持久化存储 支持的持久化存储类型EmptyDirHostPathNFS 在K8S中部署的应用都是以pod容器的形式运行的,假如部署数据库服务 例如:MySQL、Redis等,需要对产生的数据做备份。如果pod不挂载数据卷,那pod被删除或重启后这些数据会随之消…

Windows server Database 2025 安装 i225/i226 网卡驱动

windows这比坏得很,intel消费级网卡不准在服务器系统上安装。你要说他是异构不支持?他就纯粹恶心人。 之前已经安装过一次,但是今天database预览版一更新,又给我把网卡驱动杀了,气死,写一篇教程。 1.去官网…

SQLite优化实践:数据库设计、索引、查询和分库分表策略

文章目录 一、数据库设计优化1.1 合理选择数据类型1.2 使用NOT NULL约束1.3 使用默认值1.4 避免使用过多的列 二、索引优化2.1 为经常用于查询条件的列创建索引2.2 为经常用于排序和分组的列创建索引2.3 避免过多的索引2.4 使用覆盖索引 三、查询优化3.1 使用预编译语句3.2 优化…

​​SQLiteC/C++接口详细介绍之sqlite3类(十一)

返回目录:SQLite—免费开源数据库系列文章目录 上一篇:​​SQLiteC/C接口详细介绍之sqlite3类(十) 下一篇:​​SQLiteC/C接口详细介绍之sqlite3类(十二)(未发表) 33.sq…

LeetCode--14

14. 最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。 示例 1: 输入:strs ["flower","flow","flight"] 输出:"fl"示例…

C语言学习过程总结(18)——指针(6)

一、数组指针变量 在上一节中我们提到了,指针数组的存放指针的数组,那数组指针变量是什么呢? 显而易见,数组指针变量是指针 同样类比整型指针变量和字符指针变量里面分别存放的是整型变量地址和字符变量地址,我们可以…

Helm的资源安装和基本使用

目录 一.Helm的出现 二.Helm工具 1.部署helm 2.helm可用命令介绍 三.chart 1.添加、查看、删除存储库 2.查找chart、查看chart信息、安装chart等 3.安装chart后产生的release 四.安装mysql举例 1.固定chart安装 2.自定义chart安装 一.Helm的出现 在前面的k8s部署po…