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

请说明 Apache Druid 在数据存储层面采用的压缩机制,并列举其常用的压缩算法。

数据技术原理Apache Druid

考察说明

考察对 Druid 存储引擎压缩原理和常用算法的掌握程度。

回答思路

  1. 【回答框架 1】Druid 对数据进行列式存储,并对不同类型的数据采用不同压缩策略。字符串使用字典编码,数值使用增量编码或位压缩,时间戳使用增量编码,这些编码技术本身就能显著减少存储空间,并为后续压缩做准备。
  2. 【回答框架 2】在编码基础上,Druid 支持多种通用压缩算法,默认使用 LZ4,因其解压速度快,适合查询密集场景;也支持 Zstandard(zstd),压缩率更高但解压稍慢;还可配置 Snappy 或 Deflate,用户可根据存储成本和查询性能要求选择。
  3. 【回答框架 3】Druid 的压缩发生在段(Segment)的生成和合并过程中,压缩粒度是列(Column)级别,不是整个段统一压缩,这样在查询时能只解压涉及的列,提高 I/O 效率。
  4. 【回答框架 4】除了列级压缩,Druid 还利用位图索引(如 Roaring 位图)来压缩维度值的匹配结果,减少查询中间数据量,这也是提升查询性能的重要手段。
  5. 【关键点 1】Druid 采用列式存储,并优先进行编码(字符串字典编码、数值增量编码)来减小数据基数,再配合通用压缩算法。
  6. 【关键点 2】默认压缩算法为 LZ4,常用备选包括 Zstandard、Snappy、Deflate,选择需权衡压缩率与解压速度。
  7. 【关键点 3】压缩发生在段生成和合并阶段,按列进行,查询时按需解压,减少 I/O 开销。
  8. 【关键点 4】维度列使用位图索引(如 Roaring)进一步压缩匹配结果,提升查询性能。
  9. 【易错点 1】不要将压缩理解为全段统一压缩,实际是列级压缩和编码的组合。
  10. 【易错点 2】不要误以为 LZ4 压缩率最高,它更侧重解压速度,Zstandard 通常在压缩率上更有优势。
  11. 【易错点 3】不能忽略编码与压缩的配合,直接压缩未经编码的数据会降低压缩效果。