MAPREDUCE服务 MRS-StarRocks基本原理:StarRocks基本概念

时间:2024-10-24 17:02:38

StarRocks基本概念

在StarRocks中,数据都以表(Table)的形式进行逻辑上的描述。

StarRocks中的表由行和列构成,每行数据对应用户一条记录,每列数据具有相同的数据类型。所有数据行的列数相同,可以动态增删列。在StarRocks中,一张表的列可以分为维度列(也称为Key列)和指标列(也称为Value列),维度列用于分组和排序,指标列的值可以通过聚合函数sumcountminmaxhll_union_aggbitmap_union等累加起来。

  • 列式存储

    在StarRocks中,表数据按列存储。物理上,一列数据会经过分块编码、压缩等操作,然后持久化存储到非易失设备上。但在逻辑上,一列数据可以看成是由相同类型的元素构成的一个数组, 一行数据的所有列值在各自的数组中按照列顺序排列,即拥有相同的数组下标。数组下标是隐式的,不需要存储。表中所有的行按照维度列,做多重排序,排序后的位置就是该行的行号。

  • 索引

    StarRocks通过前缀索引 (Prefix Index) 和列级索引,能够快速找到目标行所在数据块的起始行号。

  • 加速处理

    StarRocks通过预先聚合、分区分桶、物化视图、列级索引等机制实现数据的加速处理。

  • 数据模型

    StarRocks支持四种数据模型,分别是明细模型(Duplicate Key Model)、聚合模型(Aggregate Key Model)、更新模型(Unique Key Model)和主键模型(Primary Key Model)。

    这四种数据模型能够支持多种数据分析场景,例如 日志分析 、数据汇总分析、实时分析等。创建表时,您需要指定数据模型(Data Model),当数据导入至数据模型时,StarRocks会按照排序键对数据进行排序、处理和存储。四种数据模型介绍如下:

    • 明细模型

      明细模型是StarRocks默认的建表模型。如果在建表时未指定任何模型,默认创建明细类型的表。

    • 聚合模型

      建表时,支持定义排序键和指标列,并为指标列指定聚合函数。当多条数据具有相同的排序键时,指标列会进行聚合。在分析统计和汇总数据时,聚合模型能够减少查询时所需要处理的数据,提升查询效率。

    • 更新模型

      建表时,支持定义主键和指标列,查询时返回主键相同的一组数据中的最新数据。相对于明细模型,更新模型简化了数据导入流程,能够更好地支撑实时和频繁更新的场景。

    • 主键模型

      主键模型支持分别定义主键和排序键。数据导入至主键模型的表中时,先按照排序键排序后再存储。查询时返回主键相同的一组数据中的最新数据。相对于更新模型,主键模型在查询时不需要执行聚合操作,并且支持谓词和索引下推,能够在支持实时和频繁更新等场景的同时,提供高效查询。

  • 数据分布

    建表时,您可以通过设置合理的分区和分桶,实现数据均匀分布和查询性能提升。数据均匀分布是指数据按照一定规则划分为子集,并且均衡地分布在不同节点上。查询时能够有效裁剪数据扫描量,最大限度地利用集群的并发性能,从而提升查询性能。

support.huaweicloud.com/productdesc-mrs/mrs_08_0178.html