跳到主要内容

Apache Doris 表结构设计指南

在 Apache Doris 中,表的设计直接决定了写入性能、查询效率与存储成本。本章节按典型设计场景组织内容,帮助您从零完成一张表的设计,或对已有表进行结构优化。

设计流程

设计一张 Doris 表通常包含以下步骤:

  1. 选择表模型:决定数据如何存储、去重与聚合;
  2. 定义列与数据类型:根据业务字段选择合适的类型;
  3. 规划分区与分桶:让数据均匀分布并便于裁剪;
  4. 添加索引:加速点查、范围扫描或全文检索;
  5. 优化存储:通过压缩、行列混存或冷热分层降低成本;
  6. 演进表结构:随业务变化调整 Schema 或使用自增列。

创建表

使用 CREATE TABLE 语句即可在 Doris 中创建一张表。如果希望基于已有表派生新表,可以使用:

表名规则

Doris 中表名默认大小写敏感,最大长度为 64 字节。可通过以下配置调整:

配置项默认值说明
lower_case_table_names大小写敏感仅在集群首次初始化时配置,后续不可更改
table_name_length_limit64 字节不建议设置过大

关键表属性

建表时可在 PROPERTIES 中指定常用属性,详见 CREATE TABLE

属性作用
buckets决定数据在表中的分布粒度
storage_medium控制存储介质,例如 HDD、SSD 或远程共享存储
replication_num控制数据副本数量,保证冗余与可靠性
storage_policy配置冷热数据分层迁移策略
提示

表属性作用于分区。修改表属性只对未来创建的分区生效,已有分区不受影响。详见 ALTER TABLE PROPERTYALTER TABLE DISTRIBUTION动态分区 可单独设置这些属性。

选择表模型

定义列与数据类型

规划分区与分桶

加速查询:索引

优化存储

演进表结构

特殊表与最佳实践

设计注意事项

设计项说明影响
数据模型建表后不可修改,需提前选择合适的数据模型决定后续写入与查询模式
分桶数已创建分区的分桶数不可修改,可通过替换分区调整;动态分区中未来分区的分桶数可修改影响数据均衡与查询并行度
列变更增删 VALUE 列是轻量级操作(秒级完成);增删 KEY 列或修改数据类型是重量级操作大数据量下应尽量避免 KEY 列变更
存储策略通过冷热分层将冷数据迁移到 HDD、S3 或 HDFS显著降低存储成本