持久層設計中,往往需要考慮幾個不同層次中的數據緩存策略。這些層次的劃分標準針對不同情況有所差異,一般而言,ORM的數據緩存應包含如下幾個層次:
1、事務級緩存(Transaction Layer Cache)
緩存只能被當前事務訪問。緩存的生命週期依賴於事務的生命週期,當事務結束時,緩存也就結束生命週期。
2、應用級/進程級緩存(Application/Process Layer Cache)
緩存被進程內的所有事務共享。這些事務有可能是併發訪問緩存,因此必須對緩存採取必要的事務隔離機制。
3、集羣級緩存(Cluster Layer Cache)
在集羣環境中,緩存被一個機器或者多個機器的進程共享。緩存中的數據被複制到集羣環境中的每個進程節點,進程間通過遠程通信來保證緩存中的數據的一致性,緩存中的數據通常採用對象的鬆散數據形式。對大多數應用來說,應該慎重地考慮是否需要使用集羣範圍的緩存,因爲訪問的速度不一定會比直接訪問數據庫數據的速度快多少。
持久層提供以上多種層次的緩存。如果在事務級緩存中沒有查到相應的數據,還可以到進程級或集羣級緩存內查詢,如果還是沒有查到,那麼只有到數據庫中查詢。事務級緩存是持久化層的第一級緩存,通常它是必需的;進程級或集羣級緩存是持久化層的第二級緩存,通常是可選的。