您的位置:首页 > 博客中心 > 数据库 >

(转)HubbleDotNet+Mongodb 构建高性能搜索引擎--概述

时间:2022-03-10 17:07

 HubbleDotNet 从 1.2.3 版本以后开始在官方代码中支持和 Mongodb 对接,Mongodb 是10gen 公司开发的 no-sql 数据库,其读写性能比传统关系数据库要快很多,而且可以非常方便的分布式部署。HubbleDotNet 通过支持 Mongodb 也使其本身同时具备了 no-sql 的解决方案。本文将重点概述Hubble+Mongodb 的功能以及和hubble+sql , lucene.net 的一些性能测试对比。

Mongodb 的安装

        在开始本文之前,我们简单介绍一下 Mongodb 在 windows 下的安装,其他操作系统下的安装也是类似的。

        首先在这个链接 http://www.mongodb.org/downloads 找到对应操作系统的版本,下载下来后解压。我们假设解压到 C:\mongodb

        我们在 c:\mongodb 下建立一个 data 目录和 一个 log 目录。下面是目录结构:

        gxlsystem.com,布布扣

 

从这个测试结果看,平均查询时间上 lucene.net 要比 hubbledotnet 略快,最大查询时间上 hubbledotnet 比 lucene.net 快。平均查询时间 lucene.net 快的原因,我分析是这样的,lucene.net 是单进程运行,而 hubbledotnet 是3个进程互动,即测试进程,hubble 服务进程 和 mongodb 进程(或 sql server 进程) 。三个进程互动时,每次查询都会触发进程的切换,这个过程会消耗一定的系统资源,特别是在查询时间为微妙级时,这个性能的损耗就会比较突出一些。不过这个查询速度无论对于那种环境来说都已经足够,从这个测试来看,如果要达到系统的满负荷,hubbledotnet 大概可以支持到每秒钟200次查询左右,相当于每天查询1600万次,这个对于单机系统性能已经非常高了,如果一个网站的访问量达到这么大,一半是需要考虑分布式解决方案了。

而最大查询时间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 的内存索引方案是无法自动持久化的,需要另外写程序持久化。

转自:http://www.cnblogs.com/eaglet/archive/2012/05/10/2494073.htm

(转)HubbleDotNet+Mongodb 构建高性能搜索引擎--概述,布布扣,bubuko.com

热门排行

今日推荐

热门手游