2009-11-11 22 views
0

我最近問了一個關於存儲數據庫搜索結果的問題,在這個數據庫搜索結果中,我將超過100,000條記錄的數據放入會話對象,然後在另一個頁面上檢索該會話並將其綁定到一個gridview並顯示結果。這顯然不是很好,所以不是這樣做,而是將搜索參數存儲在會話對象中並將其傳遞到結果頁面,然後在該頁面上運行搜索查詢。將類參數放入會話對象中是個好主意嗎?

回答

1

好多了!只需訪問其他頁面上的Session對象 - 無需「傳遞」任何內容。

+0

謝謝,通過「通過」,我真的意味着訪問。只是想得到一些鼓勵。 – Xaisoft 2009-11-11 21:00:17

1

這是一個很好的想法,任何其他。如果有限制的特定數量的術語,您可能希望將它們作爲URL的一部分並使用Response.QueryString查詢它們。

+0

我想過這個,但是大概有20個不同的搜索參數。我認爲這對查詢字符串來說太長了。 – Xaisoft 2009-11-11 21:00:57

0

我認爲這個解決方案更輕巧,適用於大多數場景。但是,有時我遇到了一種情況,我希望大量數據比請求更長,但不一定要將它存儲在會話或應用程序狀態中。

例如,有時用戶運行查詢並獲取他/她查看某些摘要信息的某些結果。那時,他/她只想處理這些結果,而不是在幾秒鐘內運行另一個查詢的結果。有時候這些數據是非常不穩定的,查詢之間甚至很小的時間間隔可能意味着100條記錄和108條記錄之間的差異,或者這些100條記錄與某些狀態X之間的差異,以及相同的100條記錄在稍後時間具有狀態Y.

輸入OODB/RDBMS雜交模式
雖然,這幾方面進行了解決,我想出的最好的方法是使用RDBMS和麪向對象數據庫的混合體,以消除存儲的記憶擴張會話狀態中的記錄。基本上,我將一個db4o數據庫文件放在Web服務器上,並將RDBMS中的記錄讀入對象圖中,然後將此圖保存到db4o中。用戶完成結果後,我從db4o中刪除圖形。利用db4o的透明激活和持久性,它非常出色!

對象數據庫已經解決了很多這樣的問題,甚至當我的應用程序坐落在RDBMS上時,像db4o這樣的庫允許我彌合內存消耗與「壽命更短」(或「更長壽命」)數據之間的差距。

相關問題