用搜索引擎和缓存来缓解读库的压力

用搜索引擎和缓存来缓解读库的压力

数据库做读库的话,常常对模糊查找力不从心,即使做了读写分离,这个问题还未能解决。

以我们所举的交易网站为例,经常根据商品的标题来查找对应的商品。对于这种需求,一般我们都是通过like功能来实现的,但是这种方式的代价非常大。此时我们可以使用搜索引擎的倒排索引来完成。

缓存是一种提高系统读性能的常见技术,对于读多写少的应用场景,我们经常使用缓存来进行优化。

问题:

  • 目前常用的搜索引擎软件有哪些?
  • 缓存与数据库一致性如何保证?
  • 缓存集群机器分配的一致性哈希算法优点?

常用的搜索引擎软件

Lucene

Lucene更像是一个SDK。有完整的API族以及对应的实现。你可以利用这些在自己的应用里实现高级查询(基于倒排索引技术的)。是一套信息检索工具包,但并不包含搜索引擎系统,因此在使用Lucene时你仍需要关注如数据获取、解析、分词等方面的东西。

Solr

Solr是基于Lucene做的。它更接近于我们认识到的搜索引擎系统,它是一个搜索引擎服务,通过各种API可以让你的应用使用搜索服务,而不需要将搜索逻辑耦合在应用中。

Elasticsearch

Elasticsearch也是基于Lucene做的。但它比Solr在实时搜索上性能更高,使用上也更傻瓜简单一些。目前使用者也越来越多,推荐使用

Sphinx

Sphinx是一个基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。

Leave a comment

您的电子邮箱地址不会被公开。 必填项已用 * 标注