数据岗位面试题更新 2026-08-05

请说明在 Apache Druid 中,通过数据合并策略来优化查询性能的具体做法和原理。

数据性能优化技术原理方案权衡Apache Druid

考察说明

考查对 Druid 数据合并(rollup)机制及其对查询性能影响的理解。

回答思路

  1. 【回答框架 1】Druid 的 rollup 是一种预聚合策略,在摄入数据时按维度分组,对指标列进行聚合(如求和、计数、最大值等),从而减少存储的行数。其核心是维度组合作为聚合键,相同键的原始记录合并为一行,指标值按聚合函数合并。
  2. 【回答框架 2】rollup 能显著减少数据量,降低存储和扫描开销,从而提升聚合查询速度。但代价是丢失原始明细数据,无法查询未聚合的细节,且聚合粒度固定,需在摄入前设计好维度组合和聚合函数。
  3. 【回答框架 3】使用 rollup 时需注意维度基数:高基数维度(如用户 ID)会导致合并效果差,甚至行数不减反增。建议对高基数维度使用近似聚合(如 HyperLogLog)或拆分为低基数维度,并合理设置 rollup 粒度(如小时、天)。
  4. 【回答框架 4】实际应用中,可结合 segment 粒度、分区和排序来优化。例如按时间分区,将常用过滤维度放在前列,配合位图索引和压缩,进一步提升查询性能。
  5. 【回答框架 5】对于需要明细查询的场景,可保留原始数据或使用其他存储,避免 rollup 造成信息丢失。
  6. 【关键点 1】rollup 通过预聚合减少行数,提升聚合查询性能。
  7. 【关键点 2】维度基数过高会削弱 rollup 效果,需谨慎设计。
  8. 【关键点 3】rollup 会丢失明细,需权衡查询需求。
  9. 【关键点 4】结合分区、排序和索引可进一步优化。