设计顺序
根据工作负载的实际情况,做出 四项决策.
稳妥的表设计从确定行的语义开始,再依次选择排序键、分区边界和数据的物理分布方式。
- 表模型相同键值的处理方式
- 排序键读取局部性
- 分区数据范围 + 生命周期
- 分桶数据分片分布
- 验证大小 + 倾斜 + 执行计划
稳妥的表设计从确定行的语义开始,再依次选择排序键、分区边界和数据的物理分布方式。
Duplicate 保留每一行;Unique 为每个键保留一条逻辑记录;Aggregate 则使用声明的函数合并值列。
追加事实数据、日志和明细事件,不按键合并。
通过 UPSERT 更新可变实体,并保留最新的逻辑记录。
使用 SUM、MAX、MIN、REPLACE 或相关函数合并指标值。
Doris 按键列顺序存储数据,因此排序键的前缀对数据裁剪、压缩和扫描成本影响很大。
与常用查询条件相匹配的紧凑列。
与常见访问路径无关的宽列。
分区隔离不同的数据范围或值组,支持生命周期管理,也让查询能够跳过无关数据。
显式指定 RANGE 或 LIST 边界,由用户直接控制。
按计划滚动创建和过期的时间分区。
写入时根据数据值创建 RANGE 或 LIST 分区。
哈希分桶按键确定数据的存放位置;随机分桶无需分布键,也能将行分散开。
相同的键值会按确定的规则映射到数据分片。
无需指定键,也能将行分散开。
好的 DDL 应保持内在一致:行的语义、数据裁剪、分布和写入方式都要契合工作负载。
保留原始行、按时间裁剪数据,并均衡地并行扫描。
使用唯一业务键,通过 UPSERT 写入数据。
使用稳定的维度和声明的值聚合方式。
扩大工作负载规模前,检查分区裁剪、数据分片大小、行分布、查询计划和数据导入表现。