2022年美团技术年货 合辑
Merge,减少倒排链 Merge 耗时。 后端 < 939 ● 内存占用少,需要处理千万数量级的倒排链。 在给出具体的解决方案之前,先介绍一下 Lucene 对于倒排合并的原生实现、 RoaringBitMap、Index Sorting。 4.2.1 原生实现 Lucene 在不同场景上使用了不同的倒排格式,提高整体的效率(空间 / 时间),通过 火焰图可以发现,在我们的场景上,TermInSetQuery 情况下,耗时明显。 我们采用线上流量和数据压测发现该部分平均耗时约 7 ms。 4.2.2 RoaringBitmap 当前 Elasticsearch 选择 RoaringBitMap 做为 Query Cache 的底层数据结构缓存 倒排链,加快查询速率。 940 > 2022年美团技术年货 RoaringBitmap 是一种压缩的位图,相较于常规的压缩位图能提供更好的压缩,在 稀疏数据的场景下空间更有优势。以存放 null 节省空间。 RoaringBitmap 有不同的实现方式,下面 以 Lucene 实现(RoaringDocIdSet)进行详细讲解: 如原理图中所示,RoaringBitmap 中存在两种不同的 Container:Bitmap Contain- er 和 Array Container。 图 3 Elasticsearch 中 Roaringbitmap 的示意图 这两种 Container0 码力 | 1356 页 | 45.90 MB | 1 年前3
共 1 条
- 1