实时数仓dim层设计的一些疑惑点

0.dim层组件的选择

dim层存储要求:需要满足永久存储(需要长期保存历史数据)和支持根据主键查询单条数据明细,所以排除Kafka(时效短);

候选框架:MySQL、Redis、Hive、Doris、HBase ?
(1)mysql:合适,但是大数据量要分库分表;
(2)Redis:内存成本高,千万级用户数据全部存储在内存不划算,而且利用率低,通常只有约10%的数据会被频繁访问;
(3)Hive:基于HDFS的随机读效率低,查询效率低,需要从大文件中按主键查找特定记录,属于随机IO操作;
(4)Doris: 列式存储,擅长列聚合查询,行查效率低,不适合单条明细查询场景;
(5)HBase

  • List 行存模式(重点使用): 使用单个列族时,所有列存储在一起,形成行存;
  • 列存模式: 每个列使用独立列族时,形成类似列存的结构;

1.为什么没有做维度表的整合操作?

在实时数仓的维度层(dim层)设计中,选择不整合维度表(即采用雪花模型而非星型模型)

  • 如果两张维度表需要整合(Join),任何一张表的更新都会触发重新计算。
  • 每次Join都需要关联其他表的历史数据,导致​​状态必须长期保留​​,无法清理(TTL难以设置)。
  • 状态数据的膨胀会显著增加​​存储压力​​、​​Checkpoint时长​​和​​故障恢复时间​​,甚至影响实时处理的稳定性。
  • 示例:
    (1)假设有用户维度表(user_dim)和商品维度表(product_dim),若整合成一张大表,则每次用户信息或商品信息变更时都需要重新Join并更新结果
    (2)流处理引擎需要缓存两个表的全量历史数据,以支持任意时间点的Join操作,这对内存和磁盘是巨大挑战。

2.为什么不做拉链表?

(1)因为实时数仓本来就是支持实时更新、实时同步,一直保持的是全量最新;
(2)比如说如果我们需要用到用户维度的历史状态,我们可以到我们离线数仓dim层里面去查询,但基本上不会用到。

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

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

相关文章

模型之FIM(Fill-In-the-Middle)补全

文章目录 模型之FIM(Fill-In-the-Middle)补全什么是FIM(Fill-In-the-Middle)FIM 的工作原理FIM 示例:代码补全场景常见模型fim 测试deepseek fim阿里completions 接口要判断模型是否支持特定的特殊标记**1. 模型可以自动推断生成区域****2. `suffix` 是可选的****3. 模型的…

使用CubeMX新建DMA工程——存储器到外设模式

目录 1、新建板级支持包 1、usart.c: 2、修改的地方:在usart.c中添加了这些 3、usart.h: 4、在usart.h中添加了这些: 5、dma.c: 6、dma.h: 2、修改main.c文件 1、在main.c文件中添加头文件 2、添加外部变量声明 3、添加简单延时函数 4、添加…

el-transfer穿梭框数据量过大的解决方案

一:背景 我们这个穿梭框获取的是项目的全量数据,在左边大概有5000条,自己测试了一下5000条数据的效果,发现异常的卡顿,本来打算像el-select一样去解决的(只显示一部分,在搜索的时候去全量搜索&a…

2025年- H17-Lc125-73.矩阵置零(矩阵)---java版

1.题目描述 2.思路 (1)计算矩阵的行数 (2)计算矩阵的列数 (3)设计一个行列的bool数组 (4)遍历矩阵(二维数组),如果遇到元素0,则把…

Qt二维码demo

使用QZXing库生成的二维码demo 运行结果 实现代码 c文件 #include "mainwindow.h" #include "ui_mainwindow.h" #include "src/myqrcodeheader.h"MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow) {ui-&…

怪物猎人:世界-冰原10000+mod整合包5月最新更新!

700A大全套精美服装 800M大全套精美服装 3月31日更新 新增 新武器 新特效MOD 当前共计5800MOD整合包 好看的发型mod 实用的功能mod 炫酷的武器mod 新服装新特效新武器实用模组美化,等。 1月14日更新 新增皮肤MOD 500 当前共计2000MOD 1月16日更新 新增超…

华纳云:centos如何实现JSP页面的动态加载

JSP(JavaServer Pages)作为Java生态中常用的服务器端网页技术,具有动态内容生成、可扩展性强、与Java无缝结合等优势。 而CentOS作为一款稳定、高效、安全的Linux服务器操作系统,非常适合部署JSP应用。 想要让JSP页面实现动态更新加载,避免…

gradle-tasks.register(‘classesJar‘, Jar)解析

在使用gradle作为构建工具的android或者java web项目中,我们经常能遇到以下格式 tasks.register(classesJar, Jar) {from "$buildDir/intermediates/javac/release/classes" // 假设使用 release 构建变体 }artifact sourcesJar使用伪代码解释 class Cu…

数据处理1

一、常用数据处理模块Numpy Numpy常用于高性能计算,在机器学习常常作为传递数据的容器。提供了两种基本对象:ndarray、ufunc。 ndarray具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组。 ufunc提供了对数组快速运算的标准数学函数。 ndar…

电力市场的交易品种

双边交易(Bilateral Trading) 定义:是电力市场中最基本的交易方式之一,指具备市场交易资格的买方和卖方,通过自主协商、双边协商的形式,确定交易电量、交易价格、交割曲线等交易要素,并签订中长…

uniapp 实现时分秒 分别倒计时

效果 <view class"issue-price-countdown"> <CountDown :endTimestamp"1745996085000"></CountDown> </view> 引入组件 import CountDown from /components/CountDown.vue; <template> <view class&qu…

从CRUD到复杂业务:AI自动生成电商优惠券叠加逻辑(新手救星指南)

在 Java 编程的广阔天地中,据统计,高达 80% 的新手会在业务逻辑编写环节陷入困境。业务逻辑作为软件系统的核心灵魂,承载着从用户需求到代码实现的关键转化过程,为何却成为新手难以逾越的 “鸿沟”?飞算 JavaAI 的出现,又将如何打破这一僵局? 一、Java 新手卡在业务逻辑的根…

23页PDF | 数据治理实施方案 :规划、执行、评价、改进四步走的管控模式

在当今数字化时代&#xff0c;数据已经成为企业和组织的核心资产之一。然而&#xff0c;随着数据量的不断增长和数据来源的日益多样化&#xff0c;数据治理变得愈发重要。有效的数据治理能够确保数据的质量、安全和合规性&#xff0c;提升数据的价值和利用效率。那么&#xff0…

curl详解

curl 是一个常用的命令行工具&#xff0c;用于发送 HTTP 请求&#xff0c;支持包括 GET、POST、PUT、DELETE 等在内的多种 HTTP 方法。它非常适合用来测试 API、下载文件、与后端服务进行交互等。接下来&#xff0c;我会详细讲解 curl 的基本用法以及常见的应用场景。 &#x…

Win11安装Ubuntu20.04简记

写在前面 之前装的22.04&#xff0c;不稳定&#xff0c;把22.04卸载了&#xff0c;重新安装20.04系统。这里主要把卸载和安装的过程中参考到的博客在这记录一下。 卸载ubuntu系统参考的博文 卸载参考博文1 卸载参考博文2 Ubuntu20.04安装参考博文 安装参考博文1 安装参考博…

云原生 | K8S中数据存储之StorageClass

在一个大规模的Kubernetes集群里,可能有成千上万个PVC,这就意味着运维人员必须实现创建出这个多个 PV,此外,随着项目的需要,会有新的PVC不断被提交,那么运维人员就需要不断的添加新的,满足要求的PV,否 则新的Pod就会因为PVC绑定不到PV而导致创建失败。而且通过 PVC 请求到一定的…

基于Hadoop大数据技术音乐推荐系统数据分析与可视化(基于Spark和Hive的音乐推荐系统数据分析与可视化)基于Python的音乐推荐系统数据分析与可视化

基于Hadoop大数据技术音乐推荐系统数据分析与可视化&#xff08;基于Spark和Hive的音乐推荐系统数据分析与可视化&#xff09;基于Python的音乐推荐系统数据分析与可视化 1. 开发工具和实现技术 Pycharm, Python3.7&#xff0c;Django框架&#xff0c;Hadoop&#xff0c;Spar…

podman/docker国内可用的docker镜像源(2025-05)

一、添加Docker国内镜像 1、修改 /etc/docker/daemon.json 设置 registry mirror&#xff0c;具体命令如下: sudo vim /etc/docker/daemon.json <<EOF {"registry-mirrors": ["https://docker.1ms.run","https://docker.xuanyuan.me",&q…

【Java ee初阶】多线程(4)

一、java是怎么做到可重入的 java中&#xff0c;通过synchronized进行加锁&#xff0c;指定一个&#xff08;&#xff09;包含了一个锁对象。&#xff08;锁对象本身是一个啥样的对象&#xff0c;这并不重要&#xff0c;重点关注锁对象是不是同一个对象&#xff09; 后面搭配…

LaTex、pdfLaTex、XeLaTex和luaLaTex的区别和联系

之前一直搞不懂这些乱七八糟的Tex到底有啥区别&#xff0c;不同引擎不同编译器换来换去&#xff0c;查了些资料又问了下AI&#xff0c;总算是搞懂了。 大概是这样&#xff0c;很久以前有人写了个Tex排版引擎&#xff0c;输入一些代码命令&#xff0c;输出dvi文件&#xff08;设…