【技术预研】StarRocks官方文档浅析(3)

2024-01-31 04:20

本文主要是介绍【技术预研】StarRocks官方文档浅析(3),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

背景说明

基于starRocks官方文档,对其内容进行一定解析,方便大家理解和使用。
若无特殊标注,startRocks版本是3.2。
下面的章节和官方文档保持一致。

参考文档

产品简介 | StarRocks

StarRocks

StarRocks 是一款高性能分析型数据仓库,使用向量化、MPP 架构、CBO、智能物化视图、可实时更新的列式存储引擎等技术实现多维、实时、高并发的数据分析。StarRocks 既支持从各类实时和离线的数据源高效导入数据,也支持直接分析数据湖上各种格式的数据。StarRocks 兼容 MySQL 协议,可使用 MySQL 客户端和常用 BI 工具对接。同时 StarRocks 具备水平扩展,高可用、高可靠、易运维等特性。广泛应用于实时数仓、OLAP 报表、数据湖分析等场景。

内容说明
高性能分析型数据仓库相比于oltp,更适合olap
向量化基于CPU层级的优化(clickhouse有相关优化)
MPP 架构相比于hadoop架构更适合olap
CBO优化多表join的执行时,starRocks内部的执行先后顺序
智能物化视图用于实现单表的实时数据转换,类似clickhouse的物化视图
可实时更新的列式存储引擎可支持实时update
兼容 MySQL可使用mysql相关语法和client工具

查询加速

CBO统计信息

采用 Cascades 框架。简单描述,就是判断预估来优化重型SQL的执行策略。具体内容,可以自行了解。
CBO 统计信息 | StarRocks

同步物化视图

同步物化视图和异步物化视图比较。
从下图比较中可以看到,同步物化视图的功能比较简单,基本上是两个场景,分别是map映射和简单聚合。
map映射:实现字段间转换,例如时间戳转换为日期,string转int
简单聚合:计数器类的函数,单表groupby维度信息,计算sum、max、min等可以直接比较的函数

异步物化视图同步物化视图(Rollup)
本质物理表,进行预计算(提升查询效率,先匹配是否命中)基表的索引
处理方式定时或者手动计算实时计算
风险点多张大表关联是否存在执行失败的风险,而且依赖血缘关系,没有外部调度的话,时效性如何确认对单张表做多个同步物化视图,会影响性能(瞬时并发量大)建议:1对1
使用场景理论上可以适用于全部场景,但在单表简单处理上没有同步物化视图效率高
  • map映射:实现字段间转换
  • 简单聚合:计数器类的函数
    |
    | 单表聚合 | 是 | 仅部分聚合函数 |
    | 多表关联 | 是 | 否 |
    | 查询改写 | 是 | 是 |
    | 刷新策略 |
  • 异步刷新
  • 手动刷新
    | 导入同步刷新 |
    | 基表 | 支持多表构建。基表可以来自:
  • Default Catalog
  • External Catalog(v2.5)
  • 已有异步物化视图(v2.5)
  • 已有视图(v3.1)
    | 仅支持基于 Default Catalog 的单表构建 |

同步物化视图支持的函数:

原始查询聚合函数同步物化视图构建聚合函数
sumsum
minmin
maxmax
countcount
bitmap_union, bitmap_union_count, count(distinct)bitmap_union
hll_raw_agg, hll_union_agg, ndv, approx_count_distincthll_union

异步物化视图

和同步物化视图进行比较,比较内容参考从上。

Colocate Join

就是多张表关联,把相同的关联键作为分桶键,这样相关的数据就会出现在相同节点。
能够减少数据多节点分布时 Join 操作引起的数据移动和网络传输,从而提高查询性能。

使用 Lateral Join 实现列转行

实现列拆分,转换为多行数据。

mysql> select * from lateral_test2;+------+-------+------+
| v1   | v2    | v3   |
+------+-------+------+
|    1 | 1,2,3 | 1,2  |
|    2 | 1,3   | 1,3  |
+------+-------+------+
-- 对单行数据进行 Unnest 操作。
mysql> select v1, unnest from lateral_test2, unnest(split(v2, ","));+------+--------+
| v1   | unnest |
+------+--------+
|    1 | 1      |
|    1 | 2      |
|    1 | 3      |
|    2 | 1      |
|    2 | 3      |
+------+--------+-- 对多行数据进行 Unnest 操作,需要指定别名。
mysql> select v1, t1.unnest as v2, t2.unnest as v3 from lateral_test2, unnest(split(v2, ",")) t1, unnest(split(v3, ",")) t2;+------+------+------+
| v1   | v2   | v3   |
+------+------+------+
|    1 | 1    | 1    |
|    1 | 1    | 2    |
|    1 | 2    | 1    |
|    1 | 2    | 2    |
|    1 | 3    | 1    |
|    1 | 3    | 2    |
|    2 | 1    | 1    |
|    2 | 1    | 3    |
|    2 | 3    | 1    |
|    2 | 3    | 3    |
+------+------+------+

Query Cache

2.5版本以后上线的功能,需要配置FE、BE参数启动。查询的执行引擎为 Pipeline。
相当于缓存该表的之前的查询内容。
之后的查询,如果有类似的,可以直接获取,提升查询效率。
如果判断是否类似,需要通过执行计划。

索引

除增长的排序键和前缀索引,还提供bitmap和bloom filter两种索引。
前者适合基数比较低的列(就是枚举值比较少的,例如订单状态),后者适合基数比较高的列(例如店铺id)。
Bloom filter是判断文件中是否包含对应的数据,为了保证不缺失数据,存在下面说的假阳性。
Bloom filter 索引有一定的误判率,也称为假阳性概率 (False Positive Probability),即判断某行中包含目标数据,而实际上该行并不包含目标数据的概率。

这篇关于【技术预研】StarRocks官方文档浅析(3)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/662525

相关文章

Python自动化Office文档处理全攻略

《Python自动化Office文档处理全攻略》在日常办公中,处理Word、Excel和PDF等Office文档是再常见不过的任务,手动操作这些文档不仅耗时耗力,还容易出错,幸运的是,Python提供... 目录一、自动化处理Word文档1. 安装python-docx库2. 读取Word文档内容3. 修改

使用Python快速实现链接转word文档

《使用Python快速实现链接转word文档》这篇文章主要为大家详细介绍了如何使用Python快速实现链接转word文档功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 演示代码展示from newspaper import Articlefrom docx import

浅析如何使用Swagger生成带权限控制的API文档

《浅析如何使用Swagger生成带权限控制的API文档》当涉及到权限控制时,如何生成既安全又详细的API文档就成了一个关键问题,所以这篇文章小编就来和大家好好聊聊如何用Swagger来生成带有... 目录准备工作配置 Swagger权限控制给 API 加上权限注解查看文档注意事项在咱们的开发工作里,API

浅析Rust多线程中如何安全的使用变量

《浅析Rust多线程中如何安全的使用变量》这篇文章主要为大家详细介绍了Rust如何在线程的闭包中安全的使用变量,包括共享变量和修改变量,文中的示例代码讲解详细,有需要的小伙伴可以参考下... 目录1. 向线程传递变量2. 多线程共享变量引用3. 多线程中修改变量4. 总结在Rust语言中,一个既引人入胜又可

Mybatis官方生成器的使用方式

《Mybatis官方生成器的使用方式》本文详细介绍了MyBatisGenerator(MBG)的使用方法,通过实际代码示例展示了如何配置Maven插件来自动化生成MyBatis项目所需的实体类、Map... 目录1. MyBATis Generator 简介2. MyBatis Generator 的功能3

SpringBoot3集成swagger文档的使用方法

《SpringBoot3集成swagger文档的使用方法》本文介绍了Swagger的诞生背景、主要功能以及如何在SpringBoot3中集成Swagger文档,Swagger可以帮助自动生成API文档... 目录一、前言1. API 文档自动生成2. 交互式 API 测试3. API 设计和开发协作二、使用

基于C#实现将图片转换为PDF文档

《基于C#实现将图片转换为PDF文档》将图片(JPG、PNG)转换为PDF文件可以帮助我们更好地保存和分享图片,所以本文将介绍如何使用C#将JPG/PNG图片转换为PDF文档,需要的可以参考下... 目录介绍C# 将单张图片转换为PDF文档C# 将多张图片转换到一个PDF文档介绍将图片(JPG、PNG)转

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预售小鹏汇天分体式飞行汽车,探索分体式飞行汽车城际通勤。阅读原文,获取专题报告合集全文,解锁文末271份飞行汽车相关行业研究报告。 据悉,业内人士对飞行汽车行业

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来