HubbleDotNet+Mongodb 构建高性能搜索引擎

HubbleDotNet+Mongodb构建高性能搜索引擎

性能测试

测试环境:

       软件版本

       HubbleDotNet 版本 1.2.5.0

       Mongodb 版本 2.0.5

       SQL SERVER 2008

       Lucene.net 2.9.4

       系统环境

       Intel i5 2430M 2.40GHz 8GB windows 7 64bit

       7800 转机械硬盘

测试数据

        测试数据为2000万行互联网网页数据。数据文件大小为4GB。

测试目标:

        测试hubble+sqlserver, Hubble+Mongodb 以及lucene.net 在单机系统高并发时的性能比较。

测试方法:

        通过测试代码每秒钟查询10次,查询840个常用英文单词的搜索,返回前10条title 和 content ,按匹配度排序

测试用例1:

       在这个测试用例中,我们取消hubbledotnet 所有的缓存,让 hubbledotnet 每次都从硬盘读索引,lucene.net 也设置为从文件读取。对840个英文单词的查询全部是首次查询。而且每次测试前重启计算机以清除操作系统的文件缓存。

       测试结果如下:

 

每秒钟查询次数

最大查询时间(ms)

平均查询时间(ms)

最小查询时间(ms)

Hubble+Mongodb

10

1573

431

3

Hubble+SQL SERVER

10

8997

931

4

Lucene.net

10

209196

108665

9430

 

 

测试用例2:

在这个测试用例中,我们在 hubbledotnet 中指定RamIndex 为Full,即将索引全部加载到内存,lucene.net 也设置为内存索引。这个测试主要是测试内存索引的性能。

测试结果如下:

 

每秒钟查询次数

最大查询时间(ms)

平均查询时间(ms)

最小查询时间(ms)

内存(MB)

Hubble+Mongodb

10

148

5.53

1

1,164

Hubble+SQL SERVER

10

157

6.17

0

1,170

Lucene.net

10

230

3.58

0

3,611

 

 

而最大查询时间hubble比lucene快将近1倍,这个基本反映出查询算法性能的优劣。这个和我的另外的测试结果(另文阐述)基本是吻合的,即按照score排序,hubble 的查询速度大概是 lucene.net 的2倍,按其它字段排序,大概为5倍左右。

内 存占用方法,Lucene.net 占用3.6GB内存,hubbledotnet占用 1.1 GB 内存,这个主要是因为 hubbledotnet 的索引比 lucene.net 要小的缘故。HubbleDotNet 的内存占用还可以优化,优化后对于本例来说应该可以减少到800MB 左右。

持久化方面,hubbledotnet的内存索引是可以自动持久化的,就是说运行过程中的增删改的变化会自动存储到文件介质中,并更新到内存中,这样即使机器重启也不会丢失数据。lucene.net 的内存索引方案是无法自动持久化的,需要另外写程序持久化。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值