2009-06-13 8 views
7

uso ORM desarrollado a medida actualmente y estoy planeando para mover a nhibernate.caducidad del caché NHibernate

Actualmente, utilizo tanto L1 - caché de nivel de sesión como L2 - Nivel de aplicación de caché.

Cuando se solicita un objeto desde la memoria caché L2 por caché L1, comprueba la base de datos para la modificación desde la última carga y solo se carga si se ha modificado.

Puedo hacer esto con NHibernate. En resumen, el almacenamiento en caché no me duele, ya que siempre obtiene la información más reciente y me ahorra creación de objetos y tiempos de carga.

Respuesta

14

En mi humilde opinión, no tiene sentido tener un caché L2 si es necesario para golpear el DB de todos modos. Ese es precisamente el punto completo del almacenamiento en caché, evite golpear el DB tanto como sea posible.

AFAIK no hay una estrategia de almacenamiento en caché implementada como la que describe, pero las memorias caché NHibernate L2 son totalmente conectables para que pueda implementarlo. Sin embargo, no lo haría, por las razones que mencioné anteriormente.

Obtener datos desactualizados es solo un problema si hay otras aplicaciones u otros DAL que llegan a la misma base de datos además de NHibernate. Si ese es el caso, puede usar la implementación SysCache2, que internamente usa SqlCacheDependencies para invalidar regiones de caché cuando cambian los datos en la tabla subyacente.

Si se trata de una aplicación única que se ejecuta en una granja, use Velocity provider.

Si solo hay una instancia de la aplicación NHibernate que golpea la base de datos, any cache strategy hará y no tendrá que preocuparse por obtener datos desactualizados.

Consulte también:

0

La acumulación en la memoria caché Nivel 1 en NHibernate no es muy sofisticado, ya que está sola y en -proc en la naturaleza. Por lo tanto, definitivamente necesita tener un caché de segundo nivel para mejorar el rendimiento de la aplicación NHibernate. Reduce el tiempo de viajes a la base de datos. Hay muchas integraciones de terceros disponibles que se conectan a la memoria caché de nivel secundario de NHibernate. NCache es un buen ejemplo de ello donde no se requiere cambio de código. Lea más desde aquí,

http://www.alachisoft.com/ncache/nhibernate-l2cache-index.html

Cuestiones relacionadas