StarRocks表类型能力全面解析:关键特性与使用场景

StarRocks表类型能力全面解析:关键特性与使用场景

【免费下载链接】starrocks StarRocks是一个开源的分布式数据分析引擎,用于处理大规模数据查询和分析。 - 功能:分布式数据分析;大规模数据查询;数据分析;数据仓库。 - 特点:高性能;可扩展;易于使用;支持多种数据源。 【免费下载链接】starrocks 项目地址: https://gitcode.com/GitHub_Trending/st/starrocks

前言

在StarRocks分布式分析型数据库中,表设计是影响查询性能和数据管理效率的关键因素。StarRocks提供了四种主要的表类型:主键表(Primary Key)、重复键表(Duplicate Key)、聚合表(Aggregate)和唯一键表(Unique Key)。本文将深入解析这四种表类型的关键能力差异,帮助用户根据业务场景选择最合适的表类型。

一、键列与排序键特性对比

1.1 键列约束特性

特性主键表重复键表聚合表唯一键表
唯一约束主键具有UNIQUE和NOT NULL约束无唯一约束聚合键具有唯一约束唯一键具有唯一约束
数据变更逻辑主键冲突时新行替换旧行允许键值重复,保留所有行键值相同时按聚合函数合并键值冲突时新行替换旧行
键列数据类型数值、字符串、日期(DATE/DATETIME)数值、字符串、日期(DATE/DATETIME)、DECIMAL数值、字符串、日期(DATE/DATETIME)、DECIMAL数值、字符串、日期(DATE/DATETIME)、DECIMAL

技术要点

  • 主键表在存储引擎层面进行了优化,性能优于唯一键表
  • 聚合表可视为使用特定聚合函数的特殊唯一键表
  • 主键表不支持DECIMAL类型的键列,而其他表类型支持

1.2 排序键与键列关系演进

从StarRocks 3.0版本开始,各表类型逐步实现了排序键与键列的分离:

  • 主键表:3.0+版本排序键与主键解耦
  • 重复键表:3.3+版本支持通过ORDER BY指定排序键
  • 聚合表:3.3+版本支持分别指定排序键(ORDER BY)和聚合键(AGGREGATE KEY)
  • 唯一键表:3.3+版本支持分别指定排序键(ORDER BY)和唯一键(UNIQUE KEY)

设计建议

  • 对于频繁范围查询的场景,可单独设计排序键优化查询性能
  • 键列和排序键的列集合需要相同,但顺序可以不同

二、列数据类型支持矩阵

2.1 键列与值列数据类型

键列支持:

  • 数值类型(整型、BOOLEAN、DECIMAL)
  • 字符串类型
  • 日期类型(DATE/DATETIME)

值列支持:

  • 所有基本数据类型
  • 特殊类型支持情况如下表:
类型主键表重复键表聚合表唯一键表
BITMAP支持不支持需配合bitmap_union/replace函数支持
HLL支持不支持需配合hll_union/replace函数支持
PERCENTILE支持不支持需配合percentile_union/replace函数支持
JSON/ARRAY/MAP/STRUCT支持支持需配合replace函数支持

使用建议

  • 需要高级聚合计算时优先考虑主键表或聚合表
  • 半结构化数据在各表类型中都有良好支持

三、数据变更操作支持情况

3.1 数据加载操作

操作主键表重复键表聚合表唯一键表
INSERT支持(通过__op=0配置)支持支持(自动聚合)支持(自动更新)
UPDATE支持(视为UPSERT)不支持通过replace函数实现内置支持
DELETE支持(通过__op=1配置)不支持不支持不支持

3.2 列值完整性要求

表类型默认要求例外情况
主键表需加载所有列值1. 启用partial_update
2. 列有默认值
重复键表需加载所有列值列有默认值
聚合表需加载所有列值1. 使用REPLACE_IF_NOT_NULL函数
2. 列有默认值
唯一键表需加载所有列值列有默认值

3.3 DML操作支持

  • INSERT:所有表类型均支持
  • UPDATE
    • 主键表:全面支持键列/值列作为过滤条件
    • 其他表类型:不支持
  • DELETE
    • 主键表:全面支持复杂条件删除
    • 重复键表:支持简单键列/值列条件
    • 聚合表/唯一键表:仅支持简单键列条件

最佳实践

  • 需要频繁更新的场景首选主键表
  • 纯追加写入场景可考虑重复键表
  • 需要自动聚合的场景选择聚合表

四、与其他特性的兼容性

4.1 索引支持

索引类型主键表重复键表聚合表唯一键表
键列索引全支持全支持全支持全支持
值列索引支持支持不支持不支持

4.2 分区与分桶

  • 分区:所有表类型支持表达式分区和列表分区
  • 随机分桶:仅重复键表从3.1版本开始支持

4.3 物化视图

  • 异步物化视图:全支持
  • 同步物化视图:主键表不支持,其他表类型支持

4.4 其他特性

特性主键表重复键表聚合表唯一键表
CTAS支持支持不支持不支持
备份恢复2.5+支持全支持全支持全支持

五、表类型选型指南

根据业务场景选择最合适的表类型:

  1. 主键表

    • 需要频繁更新的场景
    • 需要完整DELETE能力的场景
    • 对查询性能要求极高的场景
  2. 重复键表

    • 纯追加写入的日志类数据
    • 需要保留所有原始记录的场景
    • 需要随机分桶的场景
  3. 聚合表

    • 需要自动预聚合的指标数据
    • 需要节省存储空间的场景
    • 需要高级聚合函数(HLL/BITMAP等)的场景
  4. 唯一键表

    • 需要去重保证的场景
    • 历史版本兼容考虑
    • 相对简单的键值更新场景

通过本文的详细对比分析,相信您已经能够根据自身业务特点,在StarRocks中选择最适合的表类型,充分发挥其高性能分析能力。

【免费下载链接】starrocks StarRocks是一个开源的分布式数据分析引擎,用于处理大规模数据查询和分析。 - 功能:分布式数据分析;大规模数据查询;数据分析;数据仓库。 - 特点:高性能;可扩展;易于使用;支持多种数据源。 【免费下载链接】starrocks 项目地址: https://gitcode.com/GitHub_Trending/st/starrocks

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值