当前位置:网站首页>实时数据仓库
实时数据仓库
2022-07-04 12:52:00 【这个程序猿可太秀了】
本篇文章只是对自己的一些实时数仓经验的一些总结,就架构和数据流向而言其实和离线数据仓库大同小异,但是实时处理有自己的特殊性
为什么要有实时数仓?
我们已经有利离线数仓,数仓目的就是复用,但是离线是T+1的,在我们大量的实时需求,之前的离线计算不能复用,大量新的重复性实时代码开发,开发和计算资源的成本不断增加
实时数仓分层
ODS 原始数据,包含日志和业务数据
DWD
DIM
DWM
DWS
ADS
DWD
每个表对应一个Topic,把订单流水等业务数据重新写回kafka,另外日志数据进行测输出流输出(sql就是多个insert +filter),主要有启动退出日志、页面(仅包含页面也就是pv日志)日志、行为日志等,不同的数据有完全不同的数据结构,所以要拆分处理
同时做一些非法值过滤,比如时间戳,uid校验(主要是正则匹配,我们是13位数字),另外ODS的数据除了事实数据外还会有维度数据,需要写到DIM而不是DWD
DWD层主要的核心是数据分流以及状态识别
DIM
像刚才说的,一些ODS的维度数据Flink拿到之后一般是直接写入Hbase了,方便我们做维流join
DWM
DWM层主要是因为实时计算开发运维成本都较高,但是在DWD -> DWS的计算中还是有很多重复的计算,主要是抽取这部分进行公用
比如订单宽表,需要订单表和订单明细表以及各个维度表关联,那我们可以只处理一次作为宽表,在DWS各个行为或成单等用到直接从DWM拿数据关联即可
这一层往往会设计到较多的流流join和流维join
DWS
轻度聚合,应对各种实时查询,并缓解查询的压力
将更多的实时数据以主题的方式组合起来便于管理,同时也能减少维度查询的次数
那如何让设计DWS的表,主要是靠维度+度量(事实数据)
度量比如 uv、pv、跳出次数、进入页面次数(session_count)、连续访问时长等
维度主要是主要的即可,渠道、地去、版本、国内外、新老用户、系统(ios,安卓,电脑)这些
接受各个明细数据,合并成相同数据格式的流,然后窗口聚合后输出到数据库(我们是clickhouse)
实时数仓应用落地
实时数据大盘
告警监控
实时推荐
边栏推荐
- 富文本编辑:wangEditor使用教程
- 392. Judgement subsequence
- Test process arrangement (2)
- flink sql-client.sh 使用教程
- 2022游戏出海实用发行策略
- 吃透Chisel语言.12.Chisel项目构建、运行和测试(四)——Chisel测试之ChiselTest
- CVPR 2022 | greatly reduce the manual annotation required for zero sample learning, and propose category semantic embedding rich in visual information (source code download)
- 【信息检索】分类和聚类的实验
- markdown 语法之字体标红
- C # WPF realizes the real-time screen capture function of screen capture box
猜你喜欢
递增的三元子序列[贪心训练]
吃透Chisel语言.10.Chisel项目构建、运行和测试(二)——Chisel中生成Verilog代码&Chisel开发流程
TestSuite and testrunner in unittest
Unity shader learning (3) try to draw a circle
Excel快速合并多行数据
基于51单片机的超声波测距仪
富文本编辑:wangEditor使用教程
【Matlab】conv、filter、conv2、filter2和imfilter卷积函数总结
吃透Chisel语言.09.Chisel项目构建、运行和测试(一)——用sbt构建Chisel项目并运行
MySQL version 8 installation Free Tutorial
随机推荐
Gorm data insertion (transfer)
Introducing testfixture into unittest framework
sql优化之查询优化器
R language dplyr package summary_ If function calculates the mean and median of all numerical data columns in dataframe data, and summarizes all numerical variables based on conditions
LiveData
Test evaluation of software testing
吃透Chisel语言.10.Chisel项目构建、运行和测试(二)——Chisel中生成Verilog代码&Chisel开发流程
markdown 语法之字体标红
sharding key type not supported
Error in find command: paths must precede expression (turn)
flink sql-client.sh 使用教程
JVM memory layout detailed, illustrated, well written!
Golang 使用 JSON unmarshal 数字到 interface{} 数字变成 float64 类型(转)
QT how to detect whether the mouse is on a control
Remove duplicate letters [greedy + monotonic stack (maintain monotonic sequence with array +len)]
Unittest中的TestSuite和TestRunner
学内核之三:使用GDB跟踪内核调用链
10.(地图数据篇)离线地形数据处理(供Cesium使用)
R language uses bwplot function in lattice package to visualize box plot and par Settings parameter custom theme mode
吃透Chisel语言.06.Chisel基础(三)——寄存器和计数器