架构深渊

慢慢走进程序的深渊……关注领域驱动设计、测试驱动开发、设计模式、企业应用架构模式……积累技术细节,以设计架构为宗。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

第三章 3.4 缓存 Search Engine Caching

Posted on 2009-01-02 00:22  chen eric  阅读(389)  评论(0编辑  收藏  举报

第三章 3.4 缓存 Search Engine Caching

缓存优化的核心思想是从避免无谓和重复的CPU计算、I/O调度来提高查询器的吞吐量。传统的缓存有两级:一是对结果集的缓存,纪录了查询的关键词和返回结果。如果相同的关键词被再次访问将得到快速地响应,同时过滤导致重复查询的计算量,提高系统的吞吐量。另外一个是对倒排索引的缓存,索引通常只保留最近、频繁被访问的索引段在内存中。这样的两级体系的优点在Rank-Preserving Two-Level Caching for Scalable Search Engines一文中做了详细地分析。
要介绍的是三级缓存结构:
第一级是结果缓存
查询分析器在内存和磁盘保存了大量的查询结果。分析所有的访问日志可以确定所有高频查询的关键词结果,然后保存起来。
第二级为集合缓存
一般查询的关键词为一些词的组合,例如:查询的关键词为A B C(检索的逻辑为AND),包含关键词A、B的各自命中文档列表都很大,而包含C的文档很少,不在一个数量级上,于是对A、B的交集结果进行缓存,并跟踪这些缓存数据在集群中的分布。这样的优化是针对大于等于三个词的情况,一般意义上看是在第一级缓存基础上的提升。
第三级为索引列表缓存
内存总是有限的,无法导入整个索引表,于是总是把最近/频繁访问到的索引置于内存中。