starrocks-logo.jpg

什么是StarRocks?

    StarRocks 是一款新一代的、超快的、大规模并行处理(MPP)数据库,旨在为企业提供实时分析的便利。它能够大规模地支持亚秒级查询。

    StarRocks 设计优雅。它包括丰富的功能,包括完全向量化引擎、新设计的成本基优化器 (CBO) 和智能物化视图。因此,StarRocks 可以提供远超同类数据库产品的查询速度,尤其是在多表连接方面。

    StarRocks非常适合对新鲜数据进行实时分析。数据可以以高速度摄入,并且可以实时更新和删除。StarRocks使用户能够创建使用各种模式的表,例如扁平、星型和雪花模式。

    兼容 MySQL 协议和标准 SQL,StarRocks 对所有主要的 BI 工具有开箱即用的支持,例如 Tableau 和 Power BI。StarRocks 不依赖任何外部组件。它是一个集成的数据分析平台,允许高可扩展性、高可用性和简化管理与维护。

    StarRocks具有简单的架构。整个系统仅由两种类型的组件组成;前端节点和后端节点。前端节点被称为FE。后端节点有两种类型,BE和CN(计算节点)。当使用本地数据存储时,部署BEs;当数据存储在对象存储或HDFS上时,部署CNs。StarRocks不依赖于任何外部组件,简化了部署和维护。节点可以水平扩展而无需停机服务。此外,StarRocks具有元数据和服务数据的复制机制,这提高了数据可靠性并高效地防止了单点故障(SPOFs)。

    StarRocks 兼容 MySQL 协议并支持标准 SQL。用户可以从 MySQL 客户端轻松连接到 StarRocks,以获得即时且有价值的见解。

特色

    MPP框架

    StarRocks 采用大规模并行处理 (MPP) 框架。一个查询请求被分割成多个物理计算单元,可以在多台机器上并行执行。每台机器都有专用的 CPU 和内存资源。MPP 框架充分利用了所有 CPU 内核和机器的资源。随着集群横向扩展,单个查询的性能可以持续提高。

    完全矢量化执行引擎

    全矢量执行引擎更高效地利用CPU处理能力,因为这个引擎以列式方式组织和处理数据。具体来说,StarRocks以列式方式存储数据、在内存中组织数据和计算SQL运算符。列式组织充分利用了CPU缓存。列式计算减少了虚拟函数调用和分支判断的数量,从而产生了更充分的CPU指令流。

    存储和计算的分离

    从3.0版本开始引入了存储计算分离架构。在该架构中,计算和存储被解耦,以实现资源隔离、计算节点的弹性扩展以及高性能查询。存储计算分离使StarRocks具备更好的灵活性、更高的性能和数据可用性以及更低的成本。

    成本基优化器

    多表连接查询的性能优化非常困难。仅靠执行引擎无法提供出色的性能,因为在多表连接查询的情景中,执行计划的复杂性可能会相差几个数量级。相关表越多,执行计划就越多,这使得选择最佳计划成为NP难题。只有足够优秀的查询优化器才能为高效多表分析选择一个相对最佳的查询计划。

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

    StarRocks 是一种列式存储引擎,允许相同类型的数据连续存储。在列式存储中,数据可以以更高效的方式编码,提高压缩比并降低存储成本。列式存储还减少了总的数据读取 I/O,从而提高查询性能。此外,在大多数 OLAP 场景中,只查询特定的列。列式存储使用户能够仅查询部分列,显著减少磁盘 I/O。

    智能物化视图

    StarRocks 使用智能物化视图来加速查询和数据仓库分层。与其他需要手动数据同步的物化视图不同,StarRocks 的物化视图会根据基表中的数据变化自动更新数据,无需额外的维护操作。此外,物化视图的选择也是自动的。如果 StarRocks 识别到一个合适的物化视图(MV)来提高查询性能,它会自动重写查询以利用该 MV。这个智能过程显著提高了查询效率,无需手动干预。

    数据湖分析

    除了对本地数据进行高效分析之外,StarRocks 还可以作为计算引擎来分析存储在数据湖中的数据,例如 Apache Hive、Apache Iceberg、Apache Hudi 和 Delta Lake。StarRocks 的一个关键特性是其外部目录,它作为与外部维护的元存储的链接。此功能为用户提供了无缝查询外部数据源的能力,消除了数据迁移的需要。因此,用户可以分析来自不同系统的数据,例如 HDFS 和 Amazon S3,以各种文件格式,如 Parquet、ORC 和 CSV 等。

架构选择

    StarRocks 支持共享无状态(每个 BE 在其本地存储上有一部分数据)和共享数据(所有数据在对象存储或 HDFS 上,每个 CN 只有本地存储上的缓存)。您可以根据需要决定数据存储在哪里。

starrocks-架构.jpg

    共享无状态

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

    作为典型的大规模并行处理(MPP)数据库,StarRocks 支持共享无状态架构。在这种架构中,BE(Backend)负责数据存储和计算。直接访问 BE 模式中的本地数据允许进行本地计算,避免了数据传输和数据复制,并提供了超快的查询和分析性能。该架构支持多副本数据存储,增强了集群处理高并发查询的能力,并确保数据可靠性。它非常适合追求最佳查询性能的场景。

    共享数据

    对象存储和HDFS提供了成本、可靠性和可扩展性的好处。除了存储的可扩展性之外,CN节点可以在不需重新平衡数据的情况下添加和删除,因为存储和计算是分开的。

    在共享数据架构中,BE 被替换为“计算节点 (CN)”,这些节点只负责数据计算任务和缓存热数据。数据存储在像 Amazon S3、GCP、Azure Blob Storage、MinIO 等低成本且可靠的远程存储系统中。当缓存命中时,查询性能与共享无状态架构相当。CN 节点可以根据需要在几秒钟内添加或移除。这种架构降低了存储成本,确保了更好的资源隔离,并具有高弹性和可扩展性。

    共享数据架构与无共享架构一样保持简单。它仅由两种类型的节点组成:FE和CN。唯一的区别是用户必须提供后端对象存储。