自己怎样做公司广告视频网站,网站代码在哪看,网站后台模板关联自己做的网站,网站前端需要会什么目录
一、StarRocks数据划分
1.1 分区
1.2 分桶
二、Colocation Join实现原理
2.1 Colocate Join概述
2.2 Colocate Join实现原理
三、应用案例 注#xff1a;本篇文章阐述的是StarRocks-3.2版本的Colocation Join
官网文章地址#xff1a;
Colocate Join | StarRoc…目录
一、StarRocks数据划分
1.1 分区
1.2 分桶
二、Colocation Join实现原理
2.1 Colocate Join概述
2.2 Colocate Join实现原理
三、应用案例 注本篇文章阐述的是StarRocks-3.2版本的Colocation Join
官网文章地址
Colocate Join | StarRocks
一、StarRocks数据划分 在介绍Colocation Join之前再回顾下StarRocks的数据划分及tablet多副本机制。 StarRocks支持两层的数据划分第一层是Range Partition第二层是Hash BucketTablet。StarRocks的数据表按照分区分桶规则被水平切分成若干个数据分片Tablet也称作数据分桶 Bucket存储在不同的be节点上每个tablet都有多个副本默认是3副本。各个 Tablet 之间的数据没有交集并且在物理上是独立存储的。Tablet 是数据移动、复制等操作的最小物理存储单元。 一个 Tablet 只属于一个数据分区Partition而一个 Partition 包含若干个 Tablet。 下图说明 Table、Partition、BucketTablet 的关系 假设Table 按照 Range 的方式按照 date 字段进行分区得到了 N 个 Partition 每个 Partition 通过相同的 Hash 方式将其中的数据划分为 M 个 BucketTablet 从逻辑上来说Bucket 1 可以包含 N 个 Partition 中划分得到的数据比如下图中的 Tablet 11、Tablet 21、Tablet N1 1.1 分区 逻辑概念分区用于将数据划分成不同的区间主要作用是将一张表按照分区键拆分成不同的管理单元。查询时通过分区裁剪可以减少扫描的数据量显著优化查询性能。
1.2 分桶 物理概念StarRocks一般采用Hash算法作为分桶算法。在同一分区内分桶键哈希值相同的数据会划分到同一个tablet数据分片tablet以多副本冗余的形式存储是数据均衡和恢复的最⼩单位数据导入和查询最终都下沉到所涉及的 tablet副本上。
二、Colocation Join实现原理
2.1 Colocate Join概述 在数据分布满足一定条件的前提下计算节点只需做本地 Join减少跨节点的数据移动和网络传输开销提高查询性能。Colocate Join 十分适合几张大表按照相同字段分桶的场景这样可以将数据预先存储到相同的分桶中实现本地计算。 要理解这个算法需要先了解以下几个概念 Colocation GroupCG同一 CG 内的表需遵循相同的 Colocation Group SchemaCGS即表对应的分桶副本具有一致的分桶键、副本数量和副本放置方式。如此可以保证同一 CG 内所有表的数据分布在相同一组 BE 节点上。Colocation Group SchemaCGS用于描述一个 CG 中的Table和Colocation相关的通用 Schema 信息。包括分桶列类型分桶数以及副本数等。分桶编号Bucket Seq一个表的数据根据分桶列 Hash、对桶数取模后落在某一个分桶内。假设一个 Table 的分桶数为 8则共有 [0, 1, 2, 3, 4, 5, 6, 7] 8 个分桶Bucket。因此【分桶列 Hash %桶数 】一致的数据会划分到同一个桶中。
2.2 Colocate Join工作原理 Colocation Join 功能是将一组拥有相同CGS 的 Table 组成一个 CG。并保证这些 Table 对应的数据分片会落在同一个 BE 节点上。使得当 CG 内的表进行分桶列上的 Join 操作时可以通过直接进行本地数据 Join减少数据在节点之间的传输耗时。 因此核心问题直接转变成【如果保证这些table对应的数据分片会落在同一个be节点上】 同一 CG 内的Table必须保证以下属性 1分桶列和分桶数 同一 CG内表的分桶键的类型、数量和顺序完全一致并且桶数一致从而保证多张表的数据分片能够一一对应地进行分布控制。 分桶列即在建表语句中distributed by hash(col1, col2, ...) 中指定的列。分桶列决定了一张表的数据通过哪些列的值进行Hash划分到不同的Tablet 中。同一 CG内的 Table 必须保证分桶列的类型和数量完全一致并且桶数一致才能保证多张表的数据分片能够一一对应的进行分布控制。 2副本数 同一个 CG内所有表的所有分区Partition的副本数必须一致。如果不一致可能出现某一个 Tablet 的某一个副本在同一个 BE 上没有其他的表分片的副本对应。不过同一个 CG 内的表分区的个数、范围以及分区列的类型不要求一致。 ps同一个 CG 内所有表的分区键分区数量可以不同。因为Partition只是一个逻辑上的分区真正影响数据分布在哪一个BE节点的是由Bucket决定的。 综上在固定了分桶列和分桶数后同一个CG内的表会拥有相同的Buckets Seq。而副本数决定了每个分桶内的 Tablet 的多个副本分别存放在哪些 BE 上。假设Buckets Seq为 [0, 1, 2, 3, 4, 5, 6, 7]BE 节点有 [A, B, C, D] 4个。则一个可能的数据分布如下 CG 内表的一致的数据分布定义和tablet副本映射能够保证分桶列值相同的数据都在同一个 BE 节点上可以进行本地数据 Join。其核心思想是「两次映射」保证相同的 Distributed Key 的数据会被映射到相同的 Bucket Seq再保证 Bucket Seq对应的 Bucket 映射到相同的 BE 节点 三、应用案例 Colocation Join的使用案例见官网
Colocate Join | StarRocks本小节介绍如何使用 Colocate Join。https://docs.starrocks.io/zh/docs/3.1/using_starrocks/Colocate_join/
参考文章
Apache Doris的Colocation join本地join实现_colocation 怎么做-CSDN博客
Apache Doris的Colocation join本地join实现_colocation 怎么做-CSDN博客
系统架构 | StarRocks
第2.9章StarRocks表设计--Colocation Join_show colocation_group-CSDN博客
Colocate Join | StarRocks
Apache Doris Join 优化原理介绍 - 掘金
编程小梦|Apache Doris Colocate Join 原理与实践