druid原理第四篇 查询原理
查询概览:
druid的索引只有一个bitmap索引,主要是用这个实现了倒排。
druid的查询也是分为多种,比如chained,groupby等类型,每种查询类型都有自己的实现方式。
聚合查询使用的是堆外内存,增加了服务的稳定性。多以对于大量的聚合查询,如果historycal机器的processing buffer比较多的话,那查询效率就会高很多。但是这个内存跟实际的jvm的内存要有一个比例对应,这个比例不协调的话,效率都不会很高。
查询的时候有cursor、有agg、有columnSelector,在cursor过程中,主要使用的就是bitmap,mmap的方式加载数据。bitmap构建倒排索引的过程以及对应的原理就是查询的实际原理的反向。
Aggregator接口提供了基于对象的聚合计算 BufferAggregator提供了基于ByteBffer的聚合计算,一般采用堆外内存
根据index和Filter构建Cursor IncrementalIndexStorageAdapter是实时查询的实现 QueryableIndexStorageAdapter是bitmap索引查询实现
参考文章druid的索引原理。就能够明白很多。