StarRocks入门基础概念介绍

一:什么是 StarRocks?

  • 简介:StarRocks 是一个高性能的实时分析型数据库,旨在为复杂的 SQL 查询提供极高的性能,尤其适用于数据分析场景。
  • 场景:可以满足企业级用户的多种分析需求,包括 OLAP (Online Analytical Processing) 多维分析、定制报表、实时数据分析和 Ad-hoc 数据分析等。
  • 背景:StarRocks 的诞生背景在大数据和实时数据分析需求的快速增长,特别是在企业级应用中,广告投放、用户行为分析、推荐系统等场景都要求具备高并发、大规模数据的实时分析能力。
    • 初期的痛点
      • 传统关系型数据库(如 MySQL、PostgreSQL)难以应对海量数据的复杂查询。
      • Hadoop 等批处理框架虽适合大规模数据处理,但在实时分析和低延迟查询方面表现不足。
      • 现有 OLAP(Online Analytical Processing)系统,如 Apache Druid、ClickHouse 等,在性能或功能上存在不足,不能完全解决企业级应用对复杂 SQL 查询和实时分析的需求。
    • StarRocks 的设计目标是针对这些痛点,创建一个兼具高性能、灵活性、低延迟的分析型数据库,能够在大数据环境中实现复杂查询和实时处理。

二:核心特性

  •   MPP 分布式执行框架  (Massively Parallel Processing)

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

如上图所示,StarRocks 会将一个查询在逻辑上切分为多个逻辑执行单元(Query Fragment)。根据逻辑执行单元的计算量,每个逻辑执行单元会由一个或者多个物理执行单元来具体实现。一个逻辑执行单元可以包括一个或者多个执行算子,如图中的 Fragment 包括了 Scan,Project,Aggregate。每个物理执行单元只处理部分数据。由于每个逻辑执行单元处理的复杂度不一样,所以每个逻辑执行单元的并行度是不一样的,即,不同逻辑执行单元可以由不同数目的物理执行单元来具体执行,以提高资源使用率,提升查询速度。

  • 全面向量化执行引擎

    向量化引擎的基本概念:

    在传统的数据库查询引擎中,数据处理往往是基于“行”来进行的,即逐行处理数据。这种方法虽然直观,但在处理大量数据时,效率较低,尤其是在执行复杂查询或聚合操作时。向量化引擎通过批量处理数据来替代逐行处理,大幅减少了 CPU 和内存的使用,从而提高了查询的整体性能。

    • 行处理 vs 向量化处理

      • 行处理:一次处理一行数据,每个操作(如加法、比较等)分别应用于每一行,这种方式的上下文切换开销较大,且处理器难以充分利用其 SIMD(单指令多数据)指令集。

      • 向量化处理:一次处理多个数据元素(如一批行中的某一列数据),利用处理器的 SIMD 指令集来并行处理多个数据,这样可以显著提高处理效率。

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

充分的利用 CPU 提供的(Single Instruction Multiple Data)指令,可以用更少的指令数目,完成更多的数据操作。StarRocks的全面向量化引擎可以将执行算子的性能,整体提升 3~10 倍。

除了使用向量化技术实现所有算子外,StarRocks 实现了 Operation on Encoded Data 的技术。对于字符串字段的操作,StarRocks 在无需解码情况下就可以直接基于编码字段完成算子执行,比如实现关联算子、聚合算子、表达式算子计算等。这可以极大的降低 SQL 在执行过程中的计算复杂度。通过这个优化手段,相关查询速度可以提升 2 倍以上。

  • 存储计算分离

StarRocks 3.0 版本支持了全新的存算分离模式,实现了计算与存储的完全解耦、计算节点弹性扩缩容、高性能热数据缓存。存算分离模式下 StarRocks 具备灵活弹性、高性能、高可靠、低成本等特点。

FE 节点负责元数据管理、客户端连接管理、查询计划和查询调度。每个 FE 在其内存中存储和维护完整的元数据副本,确保每个 FE 都能提供无差别的服务。

CN 节点在存算分离存算一体集群中负责执行查询。

BE 节点在存算一体集群中负责数据存储和执行查询。

  • CBO 优化器

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

三:架构选择

  • 存算一体

  • FE 负责元数据管理和构建执行计划。
  • BE 执行查询计划并存储数据。BE 利用本地存储加速查询,并使用多副本机制确保高数据可用性。

本地存储为实时查询提供了更低的查询延迟。在存算一体架构中,避免了数据传输和复制,从而提供极快的查询和分析性能。非常适合追求最佳查询性能的场景。

  • 存算分离

优点:降低了存储成本,确保更好的资源隔离,并具有高度的弹性和可扩展性。

在存算分离架构中,FE 提供的功能与存算一体架构中的相同。

BE 被 CN (计算节点) 取代,存储功能被转移到对象存储或 HDFS。CN 是无状态的计算节点,可以执行除存储数据外所有 BE 的功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值