2013-10-27 18 views
0

我們有需要存儲有關數據的200MB的價值,將整個用戶請求以只讀方式訪問的web應用程序跨請求只讀數據。數據當前存儲在數據庫中。我們希望將它帶入內存以加速讀取。解決這個問題的最好方法是什麼? 我們是否應該使用某種靜態數據結構來共享請求?我們是否應該有一個獨立的進程來初始化內存中的數據並通過IPC與請求進行通信?還是有什麼我失蹤? memcached會有幫助嗎? 我不知道這是否有差別,但應用是常規/ Grails和爪哇與阿帕奇Postgres後端的混合。哪些選項我給大家分享一個Web應用程序

編輯:一旦加載的數據將不再需要任何更新。它在Web應用程序的生命週期中保持不變。

回答

1

如果你已經是Postgres數據庫200MB的數據,那麼你可以有一個初始化階段(或當數據被更新後同步相位)讀取所有數據到內存中的Java的POJO。你的Web應用程序可以使用這些POJO來處理傳入的HTTP請求。除非你發現你不能將所有東西放在一個服務器的內存空間中,否則不需要memcached。

+0

將如何跨越的POJO請求可以共享? –

+1

我假設你正在使用Servlet來處理所有的HTTP請求。然後使用ServletContext來放置所有Java POJO類的Map,ArrayList或專用緩存對象。這可以允許其他servlet從servlet上下文獲取緩存對象。在使用更高級的EHCache的[post](http://stackoverflow.com/questions/699996/java-web-application-how-to-implement-caching-techniques)中檢查第二個答案。 –

+0

在同樣的背景下的另一個問題......如果緩存增長到大於2GB,再次只讀,沒有更新或使用類似memcached的更好的方法,這仍然是一個很好的解決方案嗎? –

相關問題