【技术预研】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

相关文章

C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式

《C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式》Markdown凭借简洁的语法、优良的可读性,以及对版本控制系统的高度兼容性,逐渐成为最受欢迎的文档格式... 目录为什么要将文档转换为 Markdown 格式使用工具将 Word 文档转换为 Markdown(.

详解如何使用Python构建从数据到文档的自动化工作流

《详解如何使用Python构建从数据到文档的自动化工作流》这篇文章将通过真实工作场景拆解,为大家展示如何用Python构建自动化工作流,让工具代替人力完成这些数字苦力活,感兴趣的小伙伴可以跟随小编一起... 目录一、Excel处理:从数据搬运工到智能分析师二、PDF处理:文档工厂的智能生产线三、邮件自动化:

Python实现自动化Word文档样式复制与内容生成

《Python实现自动化Word文档样式复制与内容生成》在办公自动化领域,高效处理Word文档的样式和内容复制是一个常见需求,本文将展示如何利用Python的python-docx库实现... 目录一、为什么需要自动化 Word 文档处理二、核心功能实现:样式与表格的深度复制1. 表格复制(含样式与内容)2

Java中的登录技术保姆级详细教程

《Java中的登录技术保姆级详细教程》:本文主要介绍Java中登录技术保姆级详细教程的相关资料,在Java中我们可以使用各种技术和框架来实现这些功能,文中通过代码介绍的非常详细,需要的朋友可以参考... 目录1.登录思路2.登录标记1.会话技术2.会话跟踪1.Cookie技术2.Session技术3.令牌技

Maven项目中集成数据库文档生成工具的操作步骤

《Maven项目中集成数据库文档生成工具的操作步骤》在Maven项目中,可以通过集成数据库文档生成工具来自动生成数据库文档,本文为大家整理了使用screw-maven-plugin(推荐)的完... 目录1. 添加插件配置到 pom.XML2. 配置数据库信息3. 执行生成命令4. 高级配置选项5. 注意事

Python使用python-docx实现自动化处理Word文档

《Python使用python-docx实现自动化处理Word文档》这篇文章主要为大家展示了Python如何通过代码实现段落样式复制,HTML表格转Word表格以及动态生成可定制化模板的功能,感兴趣的... 目录一、引言二、核心功能模块解析1. 段落样式与图片复制2. html表格转Word表格3. 模板生

Web技术与Nginx网站环境部署教程

《Web技术与Nginx网站环境部署教程》:本文主要介绍Web技术与Nginx网站环境部署教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Web基础1.域名系统DNS2.Hosts文件3.DNS4.域名注册二.网页与html1.网页概述2.HTML概述3.

浅析Java如何保护敏感数据

《浅析Java如何保护敏感数据》在当今数字化时代,数据安全成为了软件开发中至关重要的课题,本文将深入探讨Java安全领域,聚焦于敏感数据保护的策略与实践,感兴趣的小伙伴可以了解下... 目录一、Java 安全的重要性二、敏感数据加密技术(一)对称加密(二)非对称加密三、敏感数据的访问控制(一)基于角色的访问

ubuntu系统使用官方操作命令升级Dify指南

《ubuntu系统使用官方操作命令升级Dify指南》Dify支持自动化执行、日志记录和结果管理,适用于数据处理、模型训练和部署等场景,今天我们就来看看ubuntu系统中使用官方操作命令升级Dify的方... Dify 是一个基于 docker 的工作流管理工具,旨在简化机器学习和数据科学领域的多步骤工作流。

Java使用WebView实现桌面程序的技术指南

《Java使用WebView实现桌面程序的技术指南》在现代软件开发中,许多应用需要在桌面程序中嵌入Web页面,例如,你可能需要在Java桌面应用中嵌入一部分Web前端,或者加载一个HTML5界面以增强... 目录1、简述2、WebView 特点3、搭建 WebView 示例3.1 添加 JavaFX 依赖3