原创|实时数仓实战项目-第二节(数仓分层)

17 篇文章 29 订阅 ¥39.90 ¥99.00

马上就要到中秋节了,提前祝大家中秋节快乐,最近比较忙,考虑到粉丝一直要求我更新文章,我今天就加班更新一下文章。

0df6152a2dac0a043c4b348aae117078.png

实时数仓如何做数据分层

61aadfcf30426b569ab6b539678f7600.png

我不喜欢搞什么花里胡哨的词汇,让粉丝听着挠头,我就想用大白话分享我自己的建设思路和方案。

在开始分享之前,我想给兄弟们说一下数仓建设的方法论:“因地制宜,以业务为中心”。

我们需要思考🤔:业务需求是什么?你该如何用最优的方式去支持?

我们需要明白:你的架构的好坏,不是你自己认为好就是好,也不是你同事认为好就是好,而是要经得起业务的考验,这点认知就是年薪30万的sqlboy(自嗨)和年薪100万+(业务口碑)的sqlboy的认知差别。尤其是到了互联网大仓。一个公司高p前100名,20%是技术,80%是业务,为什么会出现这种情况?大家自己思考🤔,业务才是爸爸,一定要认清现实,越往高p走,技术越菜,大部分走向了管理岗位,所以不管你做什么事情都要往业务的角度上思考,业务都不赚钱了,要你技术有啥用。

下面我就开始拿离线数仓和实时数仓的架构做个对比讲解,方便大家易懂。(所有的分层都是为了更高效的解决业务问题,不能说不这么玩就不合理,看业务场景吧)

6d9df2910cde059359025148d41c8d82.png

离线数仓架构图

fde4b77eb5573a1247eed36c7902b11c.png

For业务实时数仓架构图

1.ODS:操作数据层 Operation Data Store

ODS层属于操作数据层,是直接从业务系统采集过来的最原始的数据,包含了所有业务的变更过程,数据粒度也是最细的。

离线:hive

实时:kafka(实时数仓,要求时效性,基本上都是读取kafka)

2.DWD: 明细数据层 Data Warehouse Detail

数据明细详情,去除空值,脏数据,超过极限范围的明细解析。
是在ODS层基础上,根据业务过程建模出来的实时事实明细层,对于访问日志这种数据,会回流到离线系统供下游使用,最大程度地保证实时和离线数据ODS层和DWD层一致。
对ODS层数据进行清洗(去除空值,脏数据,超过极限范围的数据,行式存储改为列存储,改压缩格式)

DWD层创建基础明细表

明细表用于存储ODS层原始表转换过来的明细数据。

离线:hive

实时:kafka(实时数仓,复杂的计算逻辑和脏数据提前在flink内部完成,还有纬度退化能在flink内完成尽量在flink内实现,当然也可以把纬度数据同步到doris内,在doris内部做实时join也可以,都可以,根据不同情况制定方案,比如:这个纬度多个报表都需要查询,个人建议同步到doris内,如果纬度不经常用到,可以直接通过flink关联。还有一种业务场景就是给算法同学提供模型训练数据:如果要求的指标就是简单的sum,count可以直接在flink内产出,关联纬度信息写入到kv,复杂的模型训练指标,可以直接从doris实时查询结果数据,然后再传输给模型,根据sla的要求制定技术方案。)

3.DWS:汇总数据层 data warehouse service

服务层—留存-转化-GMV-复购率-日活 、点赞、评论、收藏;
轻度聚合对DWD
订阅明细层数据后,会在实时计算任务中计算各个维度的汇总指标。如果维度是各个垂直业务线通用的,则会放在实时通用汇总层,作为通用的数据模型使用。
目标:统计当日、当周、当月活动的每个设备明细

离线:hive

实时:doris(一般都是在doris内创建聚合表,创建rollup表或者物化视图,这样做的好处是在doris内部提前预聚合,查询的时候直接命中结果数据,提高实时查询性能,如果设置本地join,两个表按照join的字段提前创建colocate join,这样做的好处是相同的uuid分桶在一起,在join的时候可以减少网络传输,相同的key直接在本地磁盘拉取就可以了。)

👇下图就是本地colocate join vs shuffle join的性能测试报表

55f0617dee7f2a5784f11c8dee641d5e.png

d26ed03466a0ef48dc00b9d6071af8f8.png

4.DIM 公共维度层

实时维表层的数据基本上都是从离线维表层导出来的,抽取到在线系统中供实时应用调用。

离线:hive

实时:doris/kv(个人建议doris和kv根据业务情况选择,如果你们的纬度数据只是你们本地业务报表使用,可以存在Doris内,因为方便制作报表数据,如果你们的纬度数据其他合作团队也想用,建议写入到kv中,或者给他们binlog日志,让他们自己解析也可以。)

5.ADS:应用数据层 Application Data Store

做分析处理同步到RDS数据库里边
个性化维度汇总层,对于不是特别通用的统计维度数据会放在这一层中,这里计算只有自身业务才会关注的维度和指标。
目标:当日、当周、当月活跃设备数 

离线:hive/mysql

实时:doris (目前我接触的实时的场景,80%都是直接查询dws层,多个表join产出数据,基本3s内就可以产出结果,如果时间太长,我们在dws层做一个分钟级别调度,比如5分钟做个结果表,也就是ads层,实时查询的时候直接查询ads层,这样的好处是提升业务体验,不好的地方就是你要确保调度的稳定性还有就是数据的时效性问题。)

f7b456842b703562dadfe830459c9f5f.png

想要交流实时数仓的同学可以加我微信

8de9ced0407094cbdfe05df517f6d12c.gif

20fbe97013e111c6ad016b6517f0365f.png


b0c6f440b5200baa88423bd4cca78269.png

预告

afb10da0e81b5b94e8271f2f9d40c3c0.png

下期讲一下实时数仓数据治理,我在建设数据仓库遇到的痛点。

实时数仓常用的flink计算场景我也会给大家一一讲解,敬请关注千亿级的实时数仓架构方案!!!!

大家有问题可以留言,自己的想法都可以留言交流,想让我分享什么的内容也可以在文末留言。

f46a5e2a6cb53ea90c38eff12d4039ae.png

分享

5aa49bf1dd4c9345644fe983ae2389c0.png

收藏

e554026e68ea454b59b4941545dd54f3.png

点赞

5169ea66ca7f4b058c2d0172f81b1397.png

在看

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数仓分层中,其中一个重要的层级是stage层。在数仓中,stage层是指数据的初始加载和清洗阶段,也被称为原始数据层。\[1\]在传统金融/保险行业中,stage层通常包括ods层(操作数据存储层)、pdm层(物理数据模型层)和dm层(数据集市层)。\[1\]而在互联网金融/电商行业中,stage层通常包括odl层(在线数据存储层)、bdl层(业务数据湖层)、idl层(实时数据湖层)和adl层(分析数据湖层)。\[1\] 另外,数仓的应用层(ADS)也是一个重要的层级。应用层是各个业务方或部门基于DWD和DWS建立的数据集市,主要包含部门或业务方关心的明细层和汇总层的数据。\[2\]应用层的数据来源于DW层,用于支持各个业务方的数据分析和决策。 总结来说,数仓分层中,stage层是数据的初始加载和清洗阶段,应用层是各个业务方或部门基于DWD和DWS建立的数据集市。这些层级在不同行业和场景中可能有所差异,但整体的套路和目的是相似的。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* [数仓分层模型架构分享(2)](https://blog.csdn.net/BeiisBei/article/details/106285485)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [万字详解数仓分层设计架构 ODS-DWD-DWS-ADS](https://blog.csdn.net/uxiAD7442KMy1X86DtM3/article/details/127711444)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值