带有nhibernate的memcached或lucene.net

带有nhibernate的memcached或lucene.net,.net,nhibernate,memcached,lucene.net,.net,Nhibernate,Memcached,Lucene.net,是否有人使用memcached作为level2缓存或lucene.net使用nhibernate进行搜索?请分享您在nhibernate缓存和索引/搜索方面的进展 而且,memcached(通过appserver在同一台机器上安装enyim cilent)是使用nhibernate的最快l2cache解决方案吗 致意 sirmak我们成功地使用了Lucene.NET来提高数GB大型数据库的搜索性能。然后将Lucene.NET结果id传递给NHibernate进行获取。NHibernate查询将超

是否有人使用memcached作为level2缓存或lucene.net使用nhibernate进行搜索?请分享您在nhibernate缓存和索引/搜索方面的进展

而且,memcached(通过appserver在同一台机器上安装enyim cilent)是使用nhibernate的最快l2cache解决方案吗

致意
sirmak

我们成功地使用了Lucene.NET来提高数GB大型数据库的搜索性能。然后将Lucene.NET结果id传递给NHibernate进行获取。NHibernate查询将超时,而Lucene.NET将在几秒钟内返回结果。我们没有使用Memcached,所以我无法比较这两种解决方案

最大的缺点是Lucene索引必须与实际数据库保持同步


编辑:您可能需要了解的一点是NHibernate.Search,如果您打算使用Lucene.NET和NHibernate路径,它是一个为您处理Lucene索引创建和同步的项目。它有一些很好的特性,上次我检查它时,它为每个类建立了一个索引,自动为所有属性建立索引。这对我们没有用处,因为我们也想为引用的对象编制索引,但在某些情况下,这就足够了。不知道项目现在处于哪种状态,我已经有一段时间没有看过了。

我已经在实验中使用了这两种方法。 对于二级缓存,我无法将其与任何其他选项进行比较,因为它是我唯一使用的选项,除了可能没有:它将立即提供性能提升,但在处理大型数据集和拥有集群时,在大多数情况下,读比插入/更新更为显著。特别是对于memcached,它是一个完善的解决方案,因为应用程序可以在任何类型的机器上运行(比如廉价的Linux机器)

对于Lucene.NET,我使用了香草(虽然没有nhibernate,但在生产中不只是实验)和nhibernate.Search的形式,而与nhibernate的集成是无缝的:索引是在幕后生成和操作的,一切都是在类声明中配置的(不幸的是,对于类和属性属性,我们更倾向于映射)。与Sql Server的全文搜索引擎相比,我认为它更易于维护,因为您不必编写普通的Sql来使用FT引擎进行获取,您只需使用Criteria机制以及Lucene查询的公开机制

与数据库同步是在更新/插入/删除期间自动完成的。
Lucene.NET引擎的性能既取决于机器的cpu/ram配置,也取决于存储介质的速度,我发现即使不比SqlServer的全文引擎快,也可以与之相比。值得注意的是,NHibernate。搜索索引很简单,每个索引类都有自己的索引文件,可以在索引e中进行开发和查看asier.

只是出于好奇,您想解决什么问题?您好,我只是想找到与nhibernate一起使用的最佳缓存和索引/搜索解决方案。