Lucene与HBase的组合使用及HBasene的分析报告

本文探讨了Lucene在大数据存储场景下遇到的性能挑战,提出了利用HBase作为后端存储的解决方案。通过分析HBasene和Lucandra两种实现方式,阐述了它们的优缺点,并指出了HBasene在文档查询、数据同步等方面存在的问题。文章还提出了一种结合内存缓存和HBase的架构设计,以提高数据读写速度和性能。
摘要由CSDN通过智能技术生成

Lucene简介

  Lucene中,以document的形式作为搜索的主体。document由fieldName和fieldValue所组成,每个fieldValue又可以由一个或多个term元素来组成。基于不同的分词及索引规则,可用于搜索fieldValue的term少于组成fieldValue的term。Lucene的搜索基于反向索引,包含着可用于搜索document的field信息。通过Lucene,可以正向查找document,以便了解其包含哪些field信息;也可以通过反向索引,通过搜索字段的term,来查询包含该term的document。

 

[ 图1 ]  Lucene总体架构

 

  由图1所示,IndexSearcher实现了搜索的逻辑,IndexWriter实现了文档的插入与反向索引的建立,IndexReader由IndexSearcher调用以便读取索引的内容。IndexReader和IndexWriter都依赖于抽象类Directory,Directory提供操作索引数据及的API。

  标准的Lucene是基于文件系统和基于内存的。

  标准基于文件系统的后端的缺点在于,随着索引增加性能会下降,人们使用了各种不同的技术来解决这个问题,包括负载均衡和索引分片(index sharding,在多个Lucene实例之间切分索引)。尽管分片功能很强大,但它让总体的实现架构变得更复杂,并且需要大量对期望文档的预测知识,才能对Lucene索引进行合适地分片。另一方面,在大数据量的情况下,segment的合并花销巨大;频繁的update数据将使得Lucene对Disk io产生巨大的影响。一个新的数据的update,可能导致一部分根本没有变化的索引被重写很多次,并且可能导致很多的小的index segment,造成了search的性能下降。

  Lucene的优势在于索引查找的迅速,而非document的存储。为解决上述问题,基于NoSQL数据库存储索引的后端结构应运而生。

 

以下,将基于HBase的实现来进行分析。

实现方法

  在Lucene中,其会操作两个单独的数据集:

  • 文档数据集中存储了所有文档,包括存储的字段等。
  • 索引数据集中存储了所有字段/词汇/词频/位
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值