2012-12-07 34 views
5

我是團隊架構Java Web應用程序的一員,其中用戶將在關係數據庫中搜索結果,然後在瀏覽器中以表格形式查看它們。用戶隨後還可以選擇隨後在單獨的瀏覽器窗口中使用例如圖表工具查看相同的結果集(或這些結果的子集)。換句話說,我們需要賦予用戶後續可視化相同結果集記錄的能力(最長可達24小時)。由於系統上的搜索將是資源密集型的,並且出於良好的常識,我們希望有一種乾淨的方式來緩存每個結果集,以便稍後可以從內存(RAM或磁盤)中將其拉出。 我們正在尋找一個很好的方法來做這個緩存,我們相信其他人已經做到了這一點,我們更喜歡使用最佳做法或框架,而不是從頭開始構建這樣的事情。服務器將擁有大量內存,但由於可能有數百人在使用該系統,因此我們可能需要一種先存儲到RAM的方法,但如果RAM已滿,也可以緩存到硬盤。需要優秀的設計模式來緩存數據庫查詢結果集

我認爲堅持爲Java對象是最有意義的,但我願意提供更好的建議。我們希望採用獨立於供應商的方法,以便在數據庫團隊選擇稍後切換供應商時,我們不會陷入專有解決方案。謝謝。

+3

ahhh文字牆。請至少格式化,以防止血腥的眼睛 – thatidiotguy

+0

如果你格式化你的問題,並儘可能簡單和儘可能地點,你會得到更好的結果。 –

+0

請編輯您的文章,使其更可讀... –

回答

1

我見過http://www.jboss.org/infinispan/用來做到這一點。它可以緩存到內存,磁盤或數據庫。我不會說我喜歡它(配置不是很容易,文檔有點缺乏),但它肯定是有效的並且得到積極維護。

1

作爲供應商中立的所有人都是爲你的應用程序編寫一個原生的抽象層,然後插入你想在這個層後面使用的緩存服務,同時讓你的主層代碼暴露這些操作。

有很多方法可以緩存。研究使用各種NoSql解決方案。

大多數時候,你會序列化你的對象,並堅持到你的緩存層。

4

我想你可能要找的是Terracotta Ehcache。這可以做你提到的所有事情和更多。它是一個免費的產品,可用於在內存中緩存內容,溢出到磁盤,按MB或項目數指定最大緩存大小,並根據上次訪問時間或輸入時間過期。

+0

EhCache很漂亮。我的經驗一直是「正常工作」。 –