SuperAPI AI 工具集

starrocks-table-design

数据与分析

查看项目

更新于 10-16 07:28

技能介绍

用途:为 StarRocks(亚秒级 MPP OLAP 数据库)设计表结构,覆盖表类型、分区、分桶/分布与索引选择。

主要能力:

  1. 表类型选择:Duplicate Key(原始事件、追加写、无需去重,写入最快但存储最大)、Aggregate Key(写入时预聚合,仅支持 SUM/MAX/MIN/REPLACE)、Unique Key(去重与更新,写延迟高于 Duplicate)、Primary Key(频繁更新与实时分析,点查优化,索引内存占用更高)。
  2. 列类型建议:时间用 DATETIME 而非 VARCHAR,金额用 DECIMAL 而非 DOUBLE,ID 用 BIGINT,半结构化用 JSON,嵌套用 ARRAY/MAP/STRUCT。
  3. 分区:推荐表达式分区,如 PARTITION BY date_trunc('day', event_time),支持 hour/day/week/month 粒度;可做复合分区(时间优先或租户优先)。分区用于粗粒度裁剪与生命周期管理,分桶用于细粒度并行与数据本地化。
  4. 分桶:DISTRIBUTED BY HASH(...) BUCKETS n 或 RANDOM;桶数公式为 (每分区数据量GB / 2GB) × BE 节点数,通常 10–120。
  5. 索引:前缀索引(前 36 字节自动创建)、Bloom Filter(高基数 VARCHAR 等值过滤)、Bitmap(低基数过滤列)、NGram Bloom Filter(LIKE '%keyword%' 全文检索)。
  6. 高级:colocate group 让常 JOIN 的大表本地连接;Primary Key 表可启用 enable_persistent_index。

使用方式:按资料中的 DDL 模式建表;用 SHOW PARTITIONS FROM table_name 查看分区;ALTER TABLE ... DROP PARTITION 删除分区;用 partition_live_number 或 partition_retention_condition 设置 TTL;用 EXPLAIN VERBOSE 验证分区裁剪(如 partitions=7/365)。

适用场景:事件流、指标聚合、用户画像、实时订单、多租户 SaaS、IoT 等 OLAP 表设计。

限制与注意:分区列上套函数会破坏裁剪;总分区数应低于 10 万,单分区建议 ≤100GB、≤2 万 tablet;避免桶过多或过少;仅需去重时不必用 UNIQUE KEY。相关技能:starrocks-query-optimization、starrocks-data-loading。