簡體   English   中英

使用nhibernate的memcached或lucene.net

[英]memcached or lucene.net with nhibernate

有沒有人使用memcached作為level2緩存或lucene.net用於搜索nhibernate? 您能否分享一下nhibernate緩存和索引/搜索的進展。

並且,使用nhibernate的memcached(使用appserver在同一台機器上使用enyim cilent)是最快的l2cache解決方案嗎?

最好的問候sirmak

我已經通過實驗使用過。 對於二級緩存,我無法將它與任何其他選項進行比較,因為它是我使用的唯一選項,除非可能沒有一個:它將立即提供性能提升,但對於其中的情況,它們將更加明顯在處理大型數據集和擁有集群時,您主要閱讀的不是插入/更新。 特別是對於memcached來說它是一個合理的解決方案,因為應用程序可以在任何類型的機器上虛擬運行(比如廉價的Linux機器)

對於Lucene.NET,我既使用了vanilla(雖然沒有nhibernate,但生產不僅僅是實驗)和NHibernate.Search的形式,而與nhibernate的集成是無縫的:索引是在窗簾后面生成和操作的在類聲明中配置(遺憾的是具有類和屬性屬性,在映射上會有首選)。 與Sql-Server的全文搜索引擎相比,我認為它更易於維護,因為您不必使用FT引擎編寫正常的SQL來獲取,您只需使用Criteria機制以及Lucene查詢的公開機制。

在更新/插入/刪除期間自動完成與數據庫的同步。 Lucene.NET引擎的性能取決於機器的cpu / ram配置以及存儲介質的速度,我發現它可以比SqlServer的FullText引擎更快。 需要注意的是,NHibernate.Search索引很簡單,每個索引類都有自己的索引文件,使索引中的開發和查看更容易。

我們已成功使用Lucene.NET來提高幾GB大型數據庫的搜索性能。 然后將Lucene.NET結果id傳遞給NHibernate進行讀取。 NHibernate查詢會超時,但Lucene.NET會在幾秒鍾內返回結果。 我們還沒有使用Memcached,所以我無法比較兩種解決方案。

最大的缺點是Lucene索引必須與實際數據庫保持同步。

編輯:你可能想看的一件事是NHibernate.Search,如果你要去Lucene.NET和NHibernate路線,它是一個為你處理Lucene索引創建和同步的項目。 它有一些不錯的功能,上次我檢查它為每個類創建一個索引,自動索引所有屬性。 這對我們沒用,因為我們也想索引引用的對象,但在某些情況下這應該足夠了。 不知道該項目現在處於哪個狀態,從我看一看已經有一段時間了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM