• StarRocks:一款开源的高性能分析型数据仓库

StarRocks:一款开源的高性能分析型数据仓库

2025-04-27 10:39:51 栏目:宝塔面板 1 阅读

StarRocks 是一个 Linux 基金会开源项目,采用 Apache 2.0 许可证。它和另一款数据仓库产品Apache Doris有着相同的起源,最初都是来自百度广告报表业务的 Palo 项目。

StarRocks 可以满足企业级用户的多种分析需求,包括 OLAP 多维分析、定制报表、实时数据分析和 Ad-hoc 数据分析等,目前已经在大量各种行业的企业中获得了应用。

架构设计

StarRocks 架构简洁明了,整个系统仅由两种组件组成:前端和后端。前端节点称为 FE。后端节点有两种类型,BE 和 CN (计算节点)。当使用本地存储数据时,需要部署 BE;当数据存储在对象存储或 HDFS 时,需要部署 CN。StarRocks 不依赖任何外部组件,简化了部署和维护。节点可以水平扩展而不影响服务正常运行。此外,StarRocks 具有元数据和服务数据副本机制,提高了数据可靠性,有效防止单点故障 (SPOF)。

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

存算一体

本地存储为实时查询提供了更低的查询延迟。

作为典型的大规模并行处理 (MPP) 数据库,StarRocks 支持存算一体架构。在存算一体架构中,BE 负责数据存储和计算。将数据存储在 BE 中使得数据可以在当前节点中计算,避免了数据传输和复制,从而提供极快的查询和分析性能。该架构支持多副本数据存储,增强了集群处理高并发查询的能力并确保数据可靠性,非常适合追求最佳查询性能的场景。

在存算一体架构中,StarRocks 由两种类型的节点组成:FE 和 BE。

  • FE 负责元数据管理、客户端连接管理、查询规划和查询调度。每个 FE 使用 BDB JE (Berkeley DB Java Edition)在其内存中存储和维护元数据的完整副本,从而确保所有 FE 之间的服务一致。FE 可以作为领导者、追随者和观察者。如果 leader 节点崩溃,follower 根据 Raft 协议选举 leader。
  • BE 负责数据存储和 SQL 执行。数据存储:BE 具有等效的数据存储能力。FE 根据预定义规则将数据分发到各个 BE。BE 转换导入的数据,将数据写入所需格式,并为数据生成索引。SQL 执行:FE 根据查询的语义将每个 SQL 查询解析为逻辑执行计划,然后将逻辑计划转换为可以在 BE 上执行的物理执行计划。BE 在本地存储数据以及执行查询,避免了数据传输和复制,极大地提高了查询性能。

存算分离

在存算分离架构中,BE 被“计算节点 (CN)”取代,后者仅负责数据计算任务和缓存热数据。数据存储在低成本且可靠的远端存储系统中,如 Amazon S3、GCP、Azure Blob Storage、MinIO 等。当缓存命中时,查询性能可与存算一体架构相媲美。CN 节点可以根据需要在几秒钟内添加或删除。这种架构降低了存储成本,确保更好的资源隔离,并具有高度的弹性和可扩展性。

存算分离架构与存算一体架构一样简单。它仅由两种类型的节点组成:FE 和 CN。唯一的区别是用户必须配置后端对象存储。对象存储和 HDFS 提供低成本、高可靠性和可扩展性等优势。除了可以扩展存储外,还可以随时添加和删除 CN 节点。因为存储和计算分离,增删节点也无需重新平衡数据。

功能特性

MPP

StarRocks 采用 MPP (Massively Parallel Processing) 分布式执行框架。在 MPP 执行框架中,一条查询请求会被拆分成多个物理计算单元,在多机并行执行。每个执行节点拥有独享的资源(CPU、内存)。MPP 执行框架能够使得单个查询请求可以充分利用所有执行节点的资源,所以单个查询的性能可以随着集群的水平扩展而不断提升。

向量化

StarRocks 通过实现全面向量化引擎,充分发挥了 CPU 的处理能力。全面向量化引擎按照列式的方式组织和处理数据。StarRocks 的数据存储、内存中数据的组织方式,以及 SQL 算子的计算方式,都是列式实现的。按列的数据组织也会更加充分的利用 CPU 的 Cache,按列计算会有更少的虚函数调用以及更少的分支判断从而获得更加充分的 CPU 指令流水。

另一方面,StarRocks 的全面向量化引擎通过向量化算法充分的利用 CPU 提供的 SIMD(Single Instruction Multiple Data)指令。这样 StarRocks 可以用更少的指令数目,完成更多的数据操作。经过标准测试集的验证,StarRocks的全面向量化引擎可以将执行算子的性能,整体提升 3~10 倍。

CBO

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

列式存储

StarRocks 实现了可实时更新的列式存储引擎,数据以按列的方式进行存储。通过这样的方式,相同类型的数据连续存放。一方面,数据可以使用更加高效的编码方式,获得更高的压缩比,降低存储成本。另一方面,也降低了系统读取数据的 I/O 总量,提升了查询性能。此外,在大部分 OLAP 场景中,查询只会涉及部分列。相对于行存,列存只需要读取部分列的数据,能够极大地降低磁盘 I/O 吞吐。

StarRocks 存储引擎不仅能够提供高效的 Partial Update 操作,也能高效处理 Upsert 类操作。使用 Delete-and-insert 的实现方式,通过主键索引快速过滤数据,避免读取时的 Sort 和 Merge 操作,同时还可以充分利用其他二级索引,在大量更新的场景下,仍然可以保证查询的极速性能。

智能物化视图

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

数据湖分析

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

官方网址:https://www.starrocks.io/

本文地址:https://www.yitenyun.com/145.html

搜索文章

Tags

Deepseek 宝塔面板 Linux宝塔 Docker JumpServer JumpServer安装 堡垒机安装 Linux安装JumpServer Windows Windows server net3.5 .NET 安装出错 宝塔面板打不开 宝塔面板无法访问 esxi esxi6 root密码不对 无法登录 web无法登录 Windows宝塔 Mysql重置密码 SSL 堡垒机 跳板机 HTTPS 无法访问宝塔面板 HTTPS加密 查看硬件 Linux查看硬件 Linux查看CPU Linux查看内存 修改DNS Centos7如何修改DNS scp Linux的scp怎么用 scp上传 scp下载 scp命令 工具 sqlmock SQL Serverless 无服务器 语言 MySQL B+Tree ID 字段 防火墙 服务器 黑客 网络架构 网络配置 IT运维 Linux 安全 List 类型 Redis InnoDB LRU HexHub 数据库 SQLite-Web SQLite 数据库管理工具 速度 服务器中毒 Rsync 同城 双活 聚簇 非聚簇 索引 API FastAPI QPS 高并发 频繁 Codis Oracle 处理机制 mini-redis INCR指令 Web 应用 异步数据库 StarRocks 开源 数据仓库 数据集成工具 数据 业务 AI 助手 Ftp RocketMQ 长轮询 配置 数据库锁 监控 prometheus Alert Redka 单线程 线程 IT 不宕机 MVCC 事务隔离 Caffeine CP 分库 分表 Spring 动态查询 Python Web Calcite 电商系统 序列 核心机制 缓存 架构 数据备份 信息化 智能运维 分布式架构 分布式锁​ MySQL 9.3 dbt 数据转换工具 部署 开发 MongoDB 容器 双引擎 优化 响应模型 PostgreSQL 存储引擎 sftp 服务器 参数 缓存方案 缓存架构 缓存穿透 SpringAI 虚拟服务器 虚拟机 内存 Milvus 向量数据库 万能公式 原子性 云原生 线上 库存 预扣 数据结构 Entity Netstat Linux 服务器 端口 悲观锁 乐观锁 openHalo OB 单机版 对象 Testcloud 云端自动化 Doris SeaTunnel