Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >StarRocks的初步介绍和使用

StarRocks的初步介绍和使用

原创
作者头像
码之有理
发布于 2024-12-09 03:51:46
发布于 2024-12-09 03:51:46
1K00
代码可运行
举报
运行总次数:0
代码可运行

官方文档:https://docs.starrocks.io/zh/docs/quick_start/

快速开始教程:https://docs.starrocks.io/zh/docs/quick_start/shared-nothing/

中文社区:https://forum.mirrorship.cn/

StarRocks 是一款基于 MPP(Massive Parallel Processing)架构的分布式数据仓库产品,旨在为企业提供高性能、低成本的数据分析解决方案。StarRocks 支持 ANSI SQL,可与主流的 BI 工具无缝集成,支持多种数据源接入,满足企业的多样化数据需求。充分吸收关系型 OLAP 数据库分布式存储系统优秀成果。其架构简洁,采用了全面向量化引擎,兼容 MySQL 协议支持标准 SQL 语法,可构建大宽表、星型模型、雪花模型在内的各类模型。

特性

兼容 MySQL 协议

StarRocks 兼容 MySQL 协议,支持标准 SQL。用户可以轻松地通过 MySQL 客户端连接到 StarRocks 实时查询分析数据。

实时导入

StarRocks 能够支持秒级的导入延迟,提供准实时的服务能力。StarRocks 的存储引擎在数据导入时能够保证每一次操作的 ACID。一个批次的导入数据生效是原子性的,要么全部导入成功,要么全部失败。并发进行的各个事务相互之间互不影响,对外提供 Snapshot Isolation 的事务隔离级别。

优化器CBO

StarRocks 从零设计并实现了一款全新的,基于代价的优化器 CBO(Cost Based Optimizer)。该优化器是 Cascades Like 的,在设计时,针对 StarRocks 的全面向量化执行引擎进行了深度定制,并进行了多项优化和创新。该优化器内部实现了公共表达式复用,相关子查询重写,Lateral Join,Join Reorder,Join 分布式执行策略选择,低基数字典优化等重要功能和优化。目前,该优化器已可以完整支持 TPC-DS 99 条 SQL 语句。

由于全新 CBO 的支持,StarRocks 能比同类产品更好地支持多表关联查询,特别是复杂的多表关联查询,让全面向量化引擎能够发挥极致的性能。

分析数据湖

使用 StarRocks 统一管理数据湖和数据仓库,将高并发和实时性要求很高的业务放在 StarRocks 中分析,也可以使用 External Catalog外部表进行数据湖上的分析。

StarRocks 不仅能高效的分析本地存储的数据,也可以作为计算引擎直接分析数据湖中的数据。用户可以通过 StarRocks 提供的 External Catalog,轻松查询存储在 Apache Hive、Apache Iceberg、Apache Hudi、Delta Lake 等数据湖上的数据,无需进行数据迁移。支持的存储系统包括 HDFS、S3、OSS,支持的文件格式包括 Parquet、ORC、CSV。

如上图所示,在数据湖分析场景中,StarRocks 主要负责数据的计算分析,而数据湖则主要负责数据的存储、组织和维护。使用数据湖的优势在于可以使用开放的存储格式和灵活多变的 schema 定义方式,可以让 BI/AI/Adhoc/报表等业务有统一的 single source of truth。而 StarRocks 作为数据湖的计算引擎,可以充分发挥向量化引擎和 CBO 的优势,大大提升了数据湖分析的性能。

Catalog

Catalog 分为 Internal catalog 和 External catalog。Internal catalog 是内部数据目录,用于管理导入至 StarRocks 中的数据以及内部的物化视图等。每个集群都有且只有一个名为 default_catalog 的 Internal catalog,包含一个或多个数据库。StarRocks 作为数据仓库存储数据,能够显著提高查询性能,尤其应对大规模数据的复杂查询分析。

External catalog 是外部数据目录,用于连接数据湖中的数据。您可以将 StarRocks 作为查询引擎,直接查询湖上数据,无需导入数据至 StarRocks。

数据表

StarRocks 中的表分为两类:内部表和外部表。

内部表

内部表归属于 Internal catalog 的数据库,数据保存在 StarRocks 中。内部表由行和列构成,每一行数据是一条记录。

备注

此处内部表的行和列为逻辑概念,在 StarRocks 中数据实际是按列存储的。物理上,一列数据会经过分块编码、压缩等操作,然后持久化存储。

在 StarRocks 中,根据约束的类型将内部表分四种,分别是主键表、明细表、聚合表和更新表,适用于存储和查询多种业务场景中的数据,比如原始日志、实时数据、以及汇总数据。

内部表采用分区+分桶的两级数据分布策略,实现数据均匀分布。并且分桶以多副本形式均匀分布至 BE 节点,保证数据高可用。

外部表

外部表是 External catalog 中的表,实际数据存在外部数据源中,StarRocks 只保存表对应的元数据,您可以通过外部表查询外部数据。

执行 DESCRIBE 查看表结构。

StarRocks 提供四种类型的表,包括明细表、主键表、聚合表和更新表,适用于存储多种业务数据,例如原始数据、实时频繁更新的数据和聚合数据。

  • 明细表简单易用,表中数据不具有任何约束,相同的数据行可以重复存在。该表适用于存储不需要约束和预聚合的原始数据,例如日志等。
  • 主键表能力强大,具有唯一性非空约束。该表能够在支撑实时更新、部分列更新等场景的同时,保证查询性能,适用于实时查询。
  • 聚合表适用于存储预聚合后的数据,可以降低聚合查询时所需扫描和计算的数据量,极大提高聚合查询的效率。
  • 更新表适用于实时更新的业务场景,目前已逐渐被主键表取代。

由于主键表仅支持分桶策略为哈希分桶,因此您还需要通过 DISTRIBUTED BY HASH () 定义哈希分桶键。

在实际的业务场景中,为了加速查询和管理数据,创建主键表时,通常还会用到数据分布、排序键等功能。

自 3.0 起主键表解耦了主键和排序键,因此您可以选择经常作为查询过滤条件的列去构成排序键。假设经常根据订单日期和商户组合维度查询商品销售情况,则您可以通过 ORDER BY (dt,merchant_id) 指定排序键为 dtmerchant_id

注意,如果您使用了数据分布策略,由于目前主键表要求主键必须包括分区列和分桶列,假设采用的数据分布策略是将 dt 作为分区列并且 merchant_id 作为哈希分桶列,则主键还需要包括 dtmerchant_id

视图和物化视图

物化视图分为同步物化视图和异步物化视图。其中异步物化视图能力更加强大,能够存储基于多个基表(内部表和外部表)的预计算结果,并且支持丰富的聚合算子。

StarRocks 支持用户使用物化视图(materialized view)进行查询加速和数仓分层。不同于一些同类产品的物化视图需要手动和原表做数据同步,StarRocks 的物化视图可以自动根据原始表更新数据。只要原始表数据发生变更,物化视图的更新也同步完成,不需要额外的维护操作就可以保证物化视图能够维持与原表一致。不仅如此,物化视图的选择也是自动进行的。StarRocks 在进行查询规划时,如果有合适的物化视图能够加速查询,StarRocks 自动进行查询改写(query rewrite),将查询自动定位到最适合的物化视图上进行查询加速。

StarRocks 的物化视图可以按需灵活创建和删除。用户可以在使用过程中视实际使用情况来判断是否需要创建或删除物化视图。StarRocks 会在后台自动完成物化视图的相关调整。

StarRocks 的物化视图可以替代传统的 ETL 建模流程,用户无需在上游应用处做数据转换,可以在使用物化视图时完成数据转换,简化了数据处理流程。

例如图中,最底层 ODS 的湖上数据可以通过 External Catalog MV 来构建 DWD 层的 normalized table;并且可以通过多表关联的物化视图来构建 DWS 层的宽表 (denormalized table);最上层可以进一步构建实时的物化视图来支撑高并发的查询,提供更加优异的查询性能。

视图是一种灵活的查询工具,它可以将多个表虚拟地组合在一起。用户可以通过视图简单地执行查询操作,而无需了解底层的物理表结构和数据分布。此外,视图还可以根据用户需求进行定制,提供更灵活的查询功能。

物化视图则是用于支持多表关联和丰富的聚合操作。物化视图是预先计算并存储的视图,可以快速地执行复杂的查询操作。与视图不同,物化视图可以存储实际的数据结果,从而提升查询速度。此外,物化视图还支持多种查询重写场景,可以在查询执行时自动或透明地重写查询语句,以提高查询效率。

通过引入视图和物化视图两种技术,StarRocks实现了更高效的查询操作和更复杂的数据处理任务。这两种技术为用户提供了方便快捷的数据查询和处理服务,从而提高数据查询的整体性能和效率。

SR物化视图(即物化视图)会占用额外的存储空间。根据搜索结果中的描述,每一个新的物化视图都是额外的存储负担。因此,虽然物化视图可以提高查询性能和减少资源消耗,但是它们需要额外的存储空间来维护预定义查询的结果。所以,在使用物化视图时,需要合理控制物化视图的数量,以避免过多的存储负担。

参考:https://tech.qimao.com/starrockszhi-shi-tu-ji-wu-hua-shi-tu-de-shi-jian/

Routine Load

Routine Load是一种数据导入技术,主要用于从Kafka消息队列中持续不断地导入数据到支持该技术的数据库中,如Apache Doris和StarRocks。以下是Routine Load的一些关键特性和基本原理:

  1. 持续消费数据:Routine Load会持续消费Kafka Topic中的数据,并将其写入到数据库中。
  2. 作业与任务:创建Routine Load作业后,会生成一个常驻的导入作业(load job)和若干个导入任务(load task)。导入作业是一个持续运行的任务,负责不断地消费Kafka中的数据;而导入任务是导入作业的细分,作为独立的导入基本单位,以Stream Load的方式写入到后端(BE)中。
  3. 导入流程:Client向Frontend(FE)提交Routine Load作业,FE通过Job Scheduler将Routine Load作业拆分成若干个Routine Load任务,这些任务在Backend(BE)上被视为Stream Load任务进行导入,导入完成后向FE汇报,FE根据汇报结果继续生成新的任务或对失败的任务进行重试。
  4. 支持的数据格式:Routine Load支持从Kafka中消费CSV和JSON格式的数据。
  5. 使用限制:Routine Load支持无认证的Kafka访问以及通过SSL方式认证的Kafka集群。支持的消息格式为CSV或JSON文本格式,且CSV中每个message为一行,行尾不包含换行符。
  6. Exactly-Once语义:Routine Load是一个流式导入作业,支持Exactly-Once语义,保证数据不丢不重。
  7. SQL控制:用户可以通过SQL命令控制Routine Load任务的暂停、继续及停止。

Routine Load通过这种方式,提供了一种高效、可靠的数据导入解决方案,特别适用于需要实时处理流数据的场景。

安装和使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker run -p 9030:9030 -p 8030:8030 -p 8040:8040 -itd \
--name quickstart starrocks/allin1-ubuntu

docker exec -it quickstart \
mysql -P 9030 -h 127.0.0.1 -u root --prompt="StarRocks > "

show databases;

集群管理

配置管理

FE 参数分为动态参数和静态参数。

  • 动态参数可通过 SQL 命令进行在线配置和调整,方便快捷。需要注意通过 SQL 命令所做的动态设置在重启 FE 后会失效。如果想让设置长期生效,建议同时修改 fe.conf 文件。
  • 静态参数必须在 FE 配置文件 fe.conf 中进行配置和调整。调整完成后,需要重启 FE 使变更生效。

参数是否为动态参数可通过 ADMIN SHOW CONFIG 返回结果中的 IsMutable 列查看。TRUE 表示动态参数。

静态和动态参数均可通过 fe.conf 文件进行修改。

参考:https://docs.starrocks.io/zh/docs/administration/management/FE_configuration/

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ADMIN SHOW FRONTEND CONFIG;
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ADMIN SHOW FRONTEND CONFIG LIKE '%check_java_version%';
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ADMIN SET FRONTEND CONFIG ("key" = "value");

性能调优

https://docs.starrocks.io/zh/docs/administration/Query_planning/

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
StarRocks学习-初识
StarRocks 是一款高性能分析型数据仓库,使用向量化、MPP 架构、可实时更新的列式存储引擎等技术实现多维、实时、高并发的数据分析。
chimchim
2022/11/13
2.5K0
StarRocks学习-初识
StarRocks x Iceberg:云原生湖仓分析技术揭秘与最佳实践
Lakehouse 湖仓一体架构是一种融合数据湖与数据仓库优势的新型架构,既具备数据湖开放统一的存储能力(支持多源异构数据低成本存储),又拥有数据仓库的高性能分析特性。其核心是构建统一数据存储底座(即 Single Source of Truth),基于同一套标准化数据资产,同时支撑多样化业务负载,覆盖企业 AI 建模、BI 分析等数据应用场景,实现从数据存储、治理到分析的全链路效率提升。
StarRocks
2025/05/30
1070
StarRocks x Iceberg:云原生湖仓分析技术揭秘与最佳实践
技术分享 | ClickHouse & StarRocks 使用经验分享
本篇分享下个人在实时数仓方向的一些使用经验,主要包含了ClickHouse 和 StarRocks 这两款目前比较流行的实时数仓,文章仅代表个人拙见,有问题欢迎指出,Thanks♪(・ω・)ノ
爱可生开源社区
2023/01/17
4.8K0
Flink+StarRocks 实时数据分析实战
摘要:本文整理自 StarRocks 社区技术布道师谢寅,在 Flink Forward Asia 2022 实时湖仓的分享。本篇内容主要分为五个部分:
857技术社区
2023/07/26
1.6K0
Flink+StarRocks 实时数据分析实战
StarRocks Community Monthly Newsletter (Apr)
🔎Release Note: https://docs.mirrorship.cn/zh/releasenotes/release-3.4/
StarRocks
2025/05/18
910
StarRocks Community Monthly Newsletter (Apr)
性能追平存算一体!StarRocks 3.1 重磅发布,真正的云原生湖仓来了
8 月 7 日,StarRocks 3.1 重磅发布。新版本中,StarRocks 将影响性能表现的技术要素全部从存算一体架构引入到了存算分离架构,并针对云原生环境里的易用性、稳定性进行了一系列的优化。
深度学习与Python
2023/09/08
1.4K0
性能追平存算一体!StarRocks 3.1 重磅发布,真正的云原生湖仓来了
快手:从 Clickhouse 到 Apache Doris,实现湖仓分离向湖仓一体架构升级
在当今这个数据洪流的信息时代下,数据已跃升为企业不可或缺的核心资产。深度挖掘并提炼数据内在价值,成为支撑企业战略决策的重要依据。在此背景下,快手建立了 OLAP 系统,该系统在快手应用极为广泛,每天承载近 10 亿的查询请求,为内外多个业务场景提供数据服务。具体场景包括:
SelectDB技术团队
2024/09/27
4470
腾讯天穹 StarRocks 一站式湖仓融合平台架构揭秘
腾讯天穹是协同腾讯内各 BG 大数据能力而生的 Oteam,作为腾讯大数据领域的代名词,旨在拉通大数据各个技术组件,打造一个具有统一技术栈的公司级大数据平台体系。从底层数据接入、数据存储、资源管理、计算引擎、作业调度,到上层数据治理及数据应用等多个环节,支持腾讯内部近 EB 级数据的存储和计算,为业务提供海量、高效、稳定的大数据平台支撑和决策支持。
腾讯大数据
2024/03/07
1.2K0
腾讯天穹 StarRocks 一站式湖仓融合平台架构揭秘
StarRocks 在爱奇艺大数据场景的实践
在爱奇艺的大数据分析场景中,通常需要实现两个核心目标:一是看过去,包括生成报表、分析剧集热度以及会员运营等;二是知未来,即预测用户增长和预估收入。虽然我们的最终目标是精准预测未来,但由于这一任务难度较大,我们更多地是通过精准的报表和历史数据分析,挖掘数据中的潜在价值,从而为未来决策提供支持。
StarRocks
2025/03/03
1410
StarRocks 在爱奇艺大数据场景的实践
StarRocks 是什么? 一文了解(建议收藏)
在日趋实时的数据分析领域,一个开源项目在国内数据库圈逐渐崭露头角,它就是 StarRocks,这个分析型数据库正在重新定义我们对实时数据处理的认知。
悟空聊架构
2024/07/30
4.2K0
StarRocks 是什么? 一文了解(建议收藏)
StarRocks学习-进阶
数据导入功能是将原始数据按照相应的模型进行清洗转换并加载到StarRocks中,方便查询使用。
chimchim
2022/11/13
3K0
StarRocks学习-进阶
干货 | StarRocks在携程大住宿智能数据平台的应用
Wenjun,携程资深软件工程师,负责大住宿数据智能平台的研发与维护,对于大数据领域技术有浓厚兴趣。
携程技术
2021/11/02
1.7K0
网易游戏如何基于 Apache Doris 构建全新湖仓一体架构
随着网易游戏品类及产品的快速发展,游戏数据分析场景面临着越来越多的挑战,为了保证系统性能和 SLA,要求引入新的组件来解决特定业务场景问题。为此,网易游戏引入 Apache Doris 构建了全新的湖仓一体架构。经过不断地发展,目前已扩展至十余集群、为内部上百个项目提供了稳定可靠的数据服务、日均查询量数百万次,整体查询性能得到 10-20 倍提升。
深度学习与Python
2024/07/24
3720
网易游戏如何基于 Apache Doris 构建全新湖仓一体架构
StarRocks 开发环境搭建踩坑指北
最近这段时间在处理一个 StarRocks 的关于物化视图优化的一个问题,在此之前其实我也没有接触过 StarRocks 这类主要处理数据分析的数据库,就更别提在这上面做优化了。
crossoverJie
2024/10/11
6410
从ClickHouse到StarRocks,易点天下数仓平台建设
作者 | 易点天下数据平台团队 近年来数字化搞得如火如荼,越来越多的人意识到数据的重要性。面对爆发式增长的数据,如何让数据有序的存储,快速的查询产生价值是数据仓库考虑的问题,也是 OLAP 引擎主要解决的问题。因此也产生了一批优秀的开源 OLAP 引擎,例如 Kylin、Druid、ClickHouse、StarRocks 等。 易点天下作为一家技术驱动发展的企业国际化智能营销服务公司,公司积极采用大数据和人工智能技术来落地和推动业务的发展。随着公司业务的扩展,数据处理需求日益增多,业务快速迭代和发展的情
深度学习与Python
2023/03/29
1.5K0
从ClickHouse到StarRocks,易点天下数仓平台建设
StarRocks:单表查询速度媲美ClickHouse的云时代极速全场景MPP数据库
大数据时代用户们对数据分析的要求一直都在。早期通过Hadoop的生态圈,用HIVE等语言进行数据分析,虽然很好的解决了数据规模的问题,但是时延却一直不好。
用户1564362
2021/12/17
2.6K0
StarRocks:单表查询速度媲美ClickHouse的云时代极速全场景MPP数据库
StarRocks存算分离在得物的降本增效实践
OLAP引擎在得物的客服、风控、供应链、投放、运营、ab实验等大量业务场景发挥重要作用,在报表、日志、实时数仓等应用场景都有广泛的应用。
得物技术
2024/12/02
4040
滴滴OLAP的技术实践与发展方向
导读本次分享题目为StarRocks物化视图在滴滴的实践,由来自滴滴出行的资深开发工程师刘雨飞老师带来经验分享。
ApacheHudi
2024/02/06
3940
滴滴OLAP的技术实践与发展方向
Apache Doris 3.0 里程碑版本|存算分离架构升级、湖仓一体再进化
亲爱的社区小伙伴们,我们很高兴地向大家宣布,在近期我们迎来了 Apache Doris 3.0 版本的正式发布,欢迎大家下载使用体验!
SelectDB技术团队
2024/10/16
2620
得物基于 StarRocks 的 OLAP 需求实践
在StarRocks里,一张表的数据会被拆分成多个Tablet,而每个Tablet都会以多副本的形式存储在BE节点中,如下图:
得物技术
2022/09/29
2.1K0
得物基于 StarRocks 的 OLAP 需求实践
推荐阅读
相关推荐
StarRocks学习-初识
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验