了解更多Greenplum技术干货,欢迎访问Greenplum中文社区网站
一、背景
Apache Solr是被广泛使用的开源搜索引擎,Greenplum DB的全文检索组件Greenplum Text就是基于其构建的:Greenplum Text简写为GPText,它将Greenplum数据库与Apache SolrCloud企业搜索和MADlib分析库进行紧密集成,从而为客户提供了大规模分析处理和业务决策支持,主要功能包括免费的文本搜索以及对文本分析的支持。
广义来说,solr中的cache可以分为2大部分:solr系统的内部cache和留给操作系统的文件cache。对于前者来说,如果设置不当,不但不会提升性能,还将浪费大量内存。
根据长期为客户调优的经验,本文作者将对solr cache进行简要介绍并陈述solr cache最佳实践。
二、分类
solr内部cache分为4类:
- QueryResult Cache:缓存query对应的docid拉链,数据结构:query => docid list
- Filter Cache:缓存filter对应的bitmap索引,数据结构:filter => bitmap (total doc number bit)
- Doc Cache:缓存doc id对应的stored的doc文档内容,数据结构:doc id => doc content
- Custom Cache,自定义cache,默认关闭,本文档中不再介绍
大家需要留意的是这里给出的数据结构只是朴素实现,而solr实际的内部实现比朴素实现更精良(如节省内存),特别是对于filter cache,