2010-03-01 17 views
0

我有一個應用程序設計問題,用於我們那裏的nhibernate大師。我的應用程序跟蹤提交的文檔列表,並將這些文檔解析的數據作爲可搜索的事務列表顯示給公衆。適用於動態重新創建表的NHibernate友好型數據庫設計

提交這些文檔的人員/實體可以(隨時)用更新後的版本替換文檔的先前版本。只有每個文檔的最新版本的交易應顯示在可搜索的交易列表中。

此應用程序的前端使用NHibernate進行數據訪問以執行事務的顯示和搜索。

我最初的想法是在我的文檔表上放置一個觸發器,該觸發器將在使用存儲過程插入,更新或刪除文檔表後,刪除並重新創建事務處理表。

似乎有是兩個缺點有這樣的想法:

1)由於存儲過程將可能一分鐘運行到再生的交易清單,將有一段時間,其中的交易清單表會不完整或不存在。

2)NHibernate讀取的數據將在事務表重建後變爲無效,並且任何緩存的信息都將失效。

我已經考慮

幾個備選方案:使用次數爲「表」後成功NHibernate的使用從數據庫中讀取,並更新這些意見指向新的數據表重建

1)完成。但這並不能解決可能的緩存問題。

2)通過NHibernate會話來重建事務表,但我無法弄清楚這個機制是如何工作的。 NHibernate需要知道'實時'事務集以及'未決'事務集,而待處理的事務集需要映射到一些動態命名的表。

也許我只是把自己構建成椒鹽脆餅。

任何人都有任何想法,這種問題的NHibernate最佳實踐將是什麼?

+0

你爲什麼要使用一個SQL數據庫呢? – Paco

+0

可能有數百萬筆交易需要從這些文檔中解析出來 –

+0

下一個問題:爲什麼一個sql數據庫的性能要好於其他類型的數據庫? – Paco

回答

2

我建議使用Lucene.net來索引和搜索文檔。你不需要觸發器,任何SP - Lucene會自動更新所有索引。
這裏是關於Lucene的一些教程:
Lucene.Net Best Practices
What are some good resources on using Lucene.Net?
http://www.lucenetutorial.com/lucene-in-5-minutes.html(它是Java版本,但API是一樣的)

+0

Lucene將是一個非常好的方式索引和搜索這些tranasactions,但我確實需要將交易內容解析爲離散的數據字段作爲我的過程的一部分 –

+0

@David,Lucene也將在這種情況下工作,解析事務後,只需添加他們以lucene索引。它將只是一個新的Lucene分析器(詳情請參閱http://lucene.apache.org/java/2_4_0/api/org/apache/lucene/analysis/Analyzer.html)。 – zihotki

相關問題