什么是EMR Serverless StarRocks

EMR Serverless StarRocks是开源StarRocks在阿里云上的全托管服务,您可以通过其灵活地创建和管理实例以及数据。本文为您介绍StarRocks的核心特性,并详述EMR Serverless StarRocks在此基础之上所引入的诸多增强功能与服务优势。

前置概念

阅读本文前,您可能需要了解如下概念:

StarRocks介绍

StarRocks是一款支持MySQL协议的分析型数据库,它集成了向量化处理、MPP架构、代价基础优化器(CBO)、智能物化视图和实时更新的列式存储技术,从而实现了快速、实时、高效的多维数据分析。您可以轻松地将实时或离线数据源导入到StarRocks中,也可以直接对数据湖中的多种数据格式进行分析。由于其与MySQL协议的兼容性,您可以简便地使用MySQL客户端和常用BI工具进行接入。此外,StarRocks还提供水平扩展能力,并具备高可用、高可靠和易于运维的特点,适用于实时数据仓库、OLAP报表、数据湖分析等多种业务场景。

StarRocks特性

MPP分布式执行框架

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

全面向量化引擎

StarRocks的计算层全面采用了向量化技术,将所有算子、函数、扫描过滤和导入导出模块进行了系统性优化。向量化引擎最大化了CPU的处理能力,通过列式数据组织和处理方式极大地提升效率。数据的存储和内存中的组织、SQL算子的计算都基于列式实现,使得CPU缓存使用更有效,减少了虚函数调用和分支判断,从而实现更顺畅的CPU指令流水线操作。

利用CPU提供的SIMD(Single Instruction Multiple Data)指令,StarRocks的全面向量化引擎以更少的指令执行更多的数据操作,标准测试集验证表明,这能够让执行算子的性能整体提升3到10倍。

除了算子全面向量化之外,StarRocks执行引擎中还包含了额外的优化技术,例如“Operation on Encoded Data”。此技术允许直接在编码后的字段上,无需解码,执行各类算子,包括关联、聚合、表达式计算等。这显著降低了SQL执行过程中的计算复杂度,使相关查询速度提升了2倍以上。

存储计算分离

StarRocks 3.0版本支持了全新的存算分离模式,实现了计算资源与存储资源的完全解耦,提升了系统的灵活性、性能和可靠性,同时降低了成本。

在存储计算分离模式中,存储和计算成为了独立服务,可以单独进行伸缩,有效避免了传统存算一体模式中由于等比例扩缩容带来的资源浪费问题。这种解耦使计算节点能在几秒内动态伸缩,极大地提高了资源利用率。

对于存储层,StarRocks利用了对象存储的几乎无限容量和高可用性特点,不仅支持多种云上对象存储,也兼容HDFS,确保数据的大规模存储和持久化。

StarRocks的存储计算分离模式保留了与传统存算一体模式相同的功能,无论是数据写入还是热数据查询性能均可相比肩。在此模式下,您同样能够应对数据更新、数据湖分析、物化视图加速等多样化的数据场景需求。

CBO优化器

在多表关联查询场景下,即使拥有高性能的执行引擎也不足以保证最佳的执行效能。这是因为在此类场景中,不同执行计划的效率差异可能相差极大,尤其是随着关联表数量的增加,有效执行计划的数量也呈指数级增长,从而使得寻找最优执行计划成为一个复杂度极高的NP-Hard问题。因此,一款能够准确选择最佳查询计划的优秀查询优化器对于实现最优的多表查询性能至关重要。

StarRocks设计并实现了一个全新的、基于代价的优化器(CBO,Cost Based Optimizer)。该优化器采用Cascades-like架构,深度定制以充分利用StarRocks全面向量化的执行引擎,并引入了众多创新优化措施。CBO不仅能实现公共表达式的复用和相关子查询的重写,还支持Lateral Join、Join Reorder以及针对Join操作的分布式执行策略选取,以及优化了低基数词典编码等关键性能提升功能。目前,这款优化器已经能够全面支持TPC-DS的99条SQL语句。

得益于这款先进的CBO,StarRocks相较于同类产品在应对多表关联查询,尤其是复杂多表关联查询方面表现出色,极大地发挥了向量化执行引擎的性能潜力。

可实时更新的列式存储引擎

StarRocks采用了先进的列式存储引擎,将相同类型的数据以按列的方式进行连续存放。这种存储方法使数据能够采用更为高效的编码策略,不仅提升了数据的压缩率,降低了存储成本,同时也减少了查询过程中的磁盘I/O需求,显著提升查询速度。在典型的OLAP场景中,由于查询通常只聚焦于特定几个列,列式存储额外减少了读取非必要列的数据量,从而能够在很大程度上削减磁盘I/O的负担,实现大幅度的吞吐量节省。

StarRocks能够实现秒级的导入延迟,提供近乎实时的数据处理能力。其存储引擎在导入数据的同时保障了ACID事务特性,保证了批量导入的原子性,确保操作要么全部导入成功,要么全部导入失败。这种设计允许多个事务并行处理,同时提供快照隔离(Snapshot Isolation)级别的事务隔离保护。

StarRocks的存储引擎还特别适用于Partial Update和Upsert等操作。使用Delete-and-Insert的实现方式,通过主键索引快速过滤数据,避免读取阶段的Sort和Merge操作。此外,该引擎还能够利用其他二级索引,在大规模数据更新的场景下,依然能够保持对查询请求的超高速响应。

智能物化视图

  • 自动化数据同步与实时更新:StarRocks支持使用物化视图进行查询加速和数仓分层。StarRocks的物化视图能够实现自动同步。每当原始表中的数据发生任何变更,物化视图能即时感知并自动完成相应的更新操作,确保与原表数据始终保持一致。此外,StarRocks还具备智能选择物化视图的功能。在查询规划阶段,若检测到有能够提升查询效率的物化视图存在,StarRocks将自动执行查询改写,确保使用最优物化视图进行查询。

  • 灵活创建与管理物化视图:StarRocks物化视图支持按需灵活创建与删除。您可以在使用过程中视实际使用情况来判断是否需要创建或删除物化视图。整个过程在后台自动完成,无需人工干预。

  • 简化ETL流程与数据处理:StarRocks的物化视图能够替代传统的ETL建模流程。您无需在上游应用中进行数据转换操作,便可以直接在使用物化视图的过程中实现数据的转换与加工,简化了数据处理流程。

数据湖分析

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

在数据湖分析场景中,StarRocks主要负责数据的计算分析,而数据湖则主要负责数据的存储、组织和维护。使用数据湖的优势在于可以使用开放的存储格式和灵活多变的Schema定义方式,可以让BI、AI、AdHoc、报表等业务维持在统一的单点身份可信(Single Source of Truth),而StarRocks作为数据湖的计算引擎,可以充分发挥向量化引擎和CBO(Cost Based Optimizer)的优势,大大提升了数据湖分析的性能。

Serverless StarRocks增强特性

EMR Serverless StarRocks主要在企业级功能方面做了以下增强:

  • 全托管的免运维产品服务形态,大大降低了运维和使用的复杂度以及成本。

  • 可视化的StarRocks实例管理控制台,使得实例的整体运维和管理更加方便。

  • 可视化的监控及运维能力。

  • 支持大、小版本自动升级,方便StarRocks进行版本升级管理。

  • 增加EMR StarRocks Manager,提供了企业级的StarRocks管理能力:

    • 安全能力:支持用户及权限管理。

    • 诊断分析:支持可视化慢SQL,及SQL查询分析能力。

    • 数据管理:提供数据库、表、分区、分片、任务的查询能力,方便运维管理。