【MPP数据库】StarRocks分区、分桶探索与实践

news2024/11/20 9:46:03

1.先学习一下StarRocks的架构图:

在这里插入图片描述

2.基本概念

在这里插入图片描述

2.1 Row & Column

一张表包括行(Row)和列(Column)。Row 即用户的一行数据。Column 用于描述一行数据中不同的字段。

Column 可以分为两大类:Key 和 Value。从业务角度看,Key 和 Value 可以分别对应维度列和指标列。从聚合模型的角度来说,Key 列相同的行,会聚合成一行。其中 Value 列的聚合方式由用户在建表时指定。

2.2 Tablet & Partition

在 StarRocks 的存储引擎中,用户数据被水平划分为若干个数据分片(Tablet,也称作数据分桶)。每个 Tablet 包含若干数据行,各个 Tablet 之间的数据没有交集,并且在物理上是独立存储的。

多个 Tablet 在逻辑上归属于不同的分区(Partition)。一个 Tablet 只属于一个 Partition,而一个 Partition 包含若干个 Tablet。因为 Tablet 在物理上是独立存储的,所以可以视为 Partition 在物理上也是独立。Tablet 是数据移动、复制等操作的最小物理存储单元。

若干个 Partition 组成一个 Table。Partition 可以视为是逻辑上最小的管理单元,数据的导入与删除,都可以或仅能针对一个 Partition 进行。

3.数据模型如何选择

3.1 DUPLICATE KEY 模型?

DUPLICATE KEY 只用于排序,相同 DUPLICATE KEY 的记录会同时存在。DUPLICATE KEY 模型适用于数据无需提前聚合的分析业务。

3.2 小时数据目前是否需要聚合?是否需要采用AGGREGATE KEY 模型?

目前数仓已经聚合了一层,我们这边暂不聚合,看看查询效率后期在考虑是否需要优化。

4. 分区如何选择

4.1 按天分区还是按月分区?

以菜品日表为例子,每天4000w数据量(8g), 一个月12亿数据量(240g),一年144亿数据量(2.8T),因此要按天分区。

4.2 如何动态分区?

由于天数在一直增加,所以分区也是不断增加,因此应该选择动态分区,一年365个分区。

需要2+x年数据,因此一个表大概是730 ~ 1095个分区。

关于动态分区字段的含义,可以参考:StarRocks动态分区

5. 分桶如何选择

5.1 要分多少个桶?

官方建议:压缩后磁盘上每个分桶数据文件大小在 100 MB 至 1 GB 左右。

LZ4压缩比:大概4:1

举例子:

方案一:8g数据、分3个桶 、每个桶2.7g 、压缩后700m

方案二:8g数据、分5个桶、每个桶1.6g、压缩后400m

方案三:8g数据、分13个桶、每个桶600m、压缩后150m。

上面三种方案均可满足官方要求的压缩后数据大小,由于每个桶StarRocks会用一个线程去计算,因此分13个桶理论上可以发挥StarRocks的计算分布式计算能力,充分压榨CPU核心。

5.2 对哪些字段进行分桶Hash?同时要保证数据的离散性?

方案一:只对groupID进行hash分桶(离散性较差)

方案二:对groupID和shopID进行hash分桶(数据相对离散)

方案三:对groupID、brandID、shopID进行hash分桶(数据也相对离散)

6 总结

分区和分桶不是绝对的,要根据具体业务和场景来规划。

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

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

相关文章

leetcode刷题记录总结-7.递归回溯算法(进行中)

文章目录零、回溯算法理论总览什么是回溯法回溯法的效率回溯法解决的问题如何理解回溯法回溯法模板一、组合问题[77. 组合](https://leetcode.cn/problems/combinations/)题解递归实现组合型枚举:每个点选与不选子集问题模板组合问题解决思路回溯思路:遍…

GAMES101笔记:辐射度量学(上)

Radiometry 辐射度量学 如何描述光照,定义了一系列的方法和单位准确度量光的空间属性: Radiant fluxintensityirradianceradiance 以物理正确的方式进行光照计算 Radiant Energy and Flux (Power) Radiant Energy 定义 Radiant Energy 是电磁辐射的能…

6、数据的合并

目录 一、添加变量即横向合并。 二、添加个案即纵向合并 在实际工作中,为了提高效率,经常需要将一份数据分成几部分分别录入,或为了便于分析,又将几个数据文件合并成一个总的数据文件。为此,SPSS提供了两种合并数据文…

【7】【vue】【vue3】

1、项目结构: asserts用来存放静态资源的(一些图片,公共的css文件等) components用来存放vue的组件(vue是组件开发) App.vue是主入口组件 (根组件,所有组件都是从这里开始&#xff…

在 PyTorch 中使用梯度检查点在GPU 上训练更大的模型

作为机器学习从业者,我们经常会遇到这样的情况,想要训练一个比较大的模型,而 GPU 却因为内存不足而无法训练它。当我们在出于安全原因不允许在云计算的环境中工作时,这个问题经常会出现。在这样的环境中,我们无法足够快…

万向节锁问题

以前一直听说过万向节锁当时觉得问题太难就没去认真分析最近在B站找了一些视频看懂了。简单来说旋转是有顺序的,比如transform面板有三个旋转分量,你先调整y,再调整x,最后调整z按照正常思路来说,调整x轴是在y轴旋转的基…

想成为数据分析师,看这里,数据分析必备的43个Excel函数

目录 前言 函数分类: 关联匹配类清洗处理类逻辑运算类计算统计类时间序列类 前言 Excel是我们工作中经常使用的一种工具,对于数据分析来说,这也是处理数据最基础的工具。 很多传统行业的数据分析师甚至只要掌握Excel和SQL即可。 对于初学者…

【DataX】datax | datax-web | win搭建datax-web环境

一、环境准备 1、jdk8 2、maven 3、mysql7 4、python3 5、window10 6、idea 7、2345解压(win支持tar.gz解压) 8、git 二、操作步骤 1、datax操作步骤 1)下载datax http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz 2&am…

ES6 环境下 Openlayers 集成使用 ol-ext 以及在线示例

ES6 环境下 Openlayers 集成使用 ol-ext 以及在线示例ol-ext 简介版本说明打包后体积集成方式在线示例最近打算重新封装一下 Openlayers,方便前端人员使用,基础功能没什么可说的,毕竟 Openlayers 的示例和 API 已经非常友好了。 想增加一些地…

2023-01-31 CSDN问答中如何防止和惩罚 “偷代码操作“

CSDN问答中如何防止和惩罚 "偷代码操作"前言一. 代码隐藏保护(CSDN官方回复目前无此功能)二. 先占位后抄袭的处理三. 编辑记录是照妖镜总结前言 随着问答的参与时间累积, 逐渐的碰到了一些问题, 常在河边走, 怎能不湿鞋, 原先看到抄代码结果原创没被采纳, 只能报以同…

AcWing 10. 有依赖的背包问题(分组背包问题 + 树形DP)

AcWing 10. 有依赖的背包问题(分组背包问题 树形DP)一、问题二、分析1、整体分析2、状态表示3、状态转移4、循环设计5、初末状态三、代码一、问题 二、分析 1、整体分析 这道题其实就是作者之前讲解过的一道题:AcWing 487. 金明的预算方案…

【双向链表】数据结构双向链表的实现

前言: 前一期我们已经学习过单链表了,今天我们来学习链表中的双向链表! 目录1.概念以及结构2.双向链表结点结构体3.接口实现3.1动态申请一个结点3.2初始化链表3.3打印链表3.4双向链表尾插3.5 双向链表尾删3.6双向链表头插3.7双向链表头删3.8双…

Linux常用命令——pvscan命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) pvscan 扫描系统中所有硬盘的物理卷列表 补充说明 pvscan命令会扫描系统中连接的所有硬盘,列出找到的物理卷列表。使用pvscan命令的-n选项可以显示硬盘中的不属于任何卷组的物理卷,这些…

OAuth2代码演示

目录 1 创建项目结构 1.1 客户 1.2 认证服务器 1.3 资源拥有者 1.4 资源服务器 client 客户 authorization-server 认证服务 resource-owner 资源所有者 resource-server 资源服务器 工作流程: 客户向资源所有者申请授权码 资源所有者下发授权码 客户拿到授权…

springboot+mongodb初体验

MongoDB 是一个基于分布式文件存储的数据库。由 C 语言编写,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。 MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。 1、mongodb服务…

JavaScript 算术运算符

JavaScript 算术运算符 加减乘除以及取模&#xff08;求余数&#xff09;、、– <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" />…

代码随想录算法训练营第十六天 | 104.二叉树的最大深度、559.n叉树的最大深度,111.二叉树的最小深度,222.完全二叉树的节点个数

Day15 周日休息一、参考资料二叉树的最大深度 &#xff08;优先掌握递归&#xff09;题目链接/文章讲解/视频讲解&#xff1a; https://programmercarl.com/0104.%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%9C%80%E5%A4%A7%E6%B7%B1%E5%BA%A6.html 二叉树的最小深度 &#xff08…

车载网络 - BootLoader - CAN/CANFD刷写前提

刷写作为车载网络测试极其重要的一个模块一直拖到今天才开始写,之前确实没有一个太好的想法怎么介绍这一块,虽然现在也没有想出来怎么写能够更好的介绍这块的内容,不过我也尽量用通俗的语言让大家看懂。 刷写流程 刷写流程我也根据用例的设计分为3个阶段:前置条件、刷写程序…

UDP+有穷自动状态机构造网络指令系统

UDP有穷自动状态机构造网络指令系统 项目背景 某展厅的小项目&#xff0c;使用Unity制作了一个视频播放器&#xff0c;作为受控端&#xff0c;需要接收解说员手中的“PAD”或“触控屏电脑”等设备发来的控制指令。要求指令系统满足以下功能&#xff1a; 能够随意切换要播放的…

剑指Offer 第17天 Top K问题 优先级队列解决数据流中位数

目录 剑指 Offer 40. 最小的k个数 剑指 Offer 41. 数据流中的中位数 剑指 Offer 40. 最小的k个数 输入整数数组 arr &#xff0c;找出其中最小的 k 个数。例如&#xff0c;输入4、5、1、6、2、7、3、8这8个数字&#xff0c;则最小的4个数字是1、2、3、4。 示例 1&#xff1a; …