2011-05-27 78 views
1

我認爲緩存鍵值列表存儲在數據庫中。現在爲了渲染JSF頁面,會執行大量冗餘查詢來查找某些鍵的顯示名稱(O/R-Mapper:Eclipselink)。 這些值是準靜態的,但可以通過使用應用程序非常少地更改(數據庫中沒有更改(除了有問題的應用程序除外)。使用相干性緩存的開銷

僅使用一個應用程序服務器時,簡單緩存就足夠了。但是,應該可以使用多個服務器進行負載平衡,避免在使用一臺服務器更改數據並因此不反映其他服務器時返回過時值。

一個想法是使用oracle coherence作爲分佈式緩存。我不確定這是否過分,因爲數據只是非常少地改變,緩存本身不需要分發,只有失效應該是。

在內存,執行時間和網絡通信方面的一致性開銷是多少?有沒有更適合我的用例的替代方案?

我說的是50.000個鍵值對,主要是短字符串。

回答

2

如果失效是非常罕見的,那麼您可以使用本地緩存和類似JMS主題的東西,每個人都訂閱以處理失效。

還有一些類似EHCache的替代品,因爲它是OSS並可以免費使用vs Coherence,如果這很重要的話。我喜歡使用EHCaches通過能力。

1

連貫性的開銷相對較低,並且可以輕鬆管理50,000個(或50,000,000個)對象。但是,如果您的用例非常簡單,並且您不介意自己完成失效工作,並且不需要Coherence提供的各種QoS,那麼它可能是矯枉過正的。另外,使用Coherence標準版可以很容易地完成這個簡單的用例,該版本的價格要低得多(每個服務器而不是每個處理器許可,而且價格要低得多)。

爲了充分披露,我在Oracle工作。本文所表達的意見和觀點屬於我自己的觀點,並不一定反映我的僱主的意見或看法。