NHibernate es una solución popular de mapeo relacional de objetos (ORM) para aplicaciones .NET porque simplifica la programación de su base de datos. Como resultado, muchas aplicaciones de alto tráfico usan NHibernate y, por lo tanto, enfrentan cuellos de botella de escalabilidad en la base de datos.
Para abordar esto, NHibernate proporciona una infraestructura de almacenamiento en caché para que las aplicaciones puedan usar un almacén de caché en memoria y evitar agotar sus bases de datos con una carga de solicitudes tan alta. El almacenamiento en caché de NHibernate incluye caché de primer nivel y caché de segundo nivel.
NCache Detalles Documentos de almacenamiento en caché de NHibernate Usando Dapper Micro-ORM con NCache
Caché de primer nivel de NHibernate y sus limitaciones
El caché de primer nivel de NHibernate (primer nivel) proporciona un caché básico independiente (en proceso) asociado con el objeto de la sesión y se limita solo a la sesión actual. De forma predeterminada, esta caché de primer nivel reduce la cantidad de consultas SQL en la base de datos por sesión. Sin embargo, existen muchas limitaciones con este caché de primer nivel, como se indica a continuación:
- Cada proceso tiene su propio caché de primer nivel que no está sincronizado con otros cachés de primer nivel, lo que dificulta la integridad de los datos.
- El tamaño de la caché está limitado a la memoria del proceso y no se puede escalar.
- El reciclaje del proceso de trabajo hace que se vacíe la memoria caché. Luego, debe volver a cargarlo, lo que reduce el rendimiento de su aplicación.
NCache Detalles Sincronizar base de datos con NHibernate Almacenamiento en caché de consultas de NHibernate
Solución: una caché distribuida para NHibernate
El caché de segundo nivel de NHibernate existe en Session Factory nivel, lo que significa que múltiples sesiones de usuario pueden acceder a un caché compartido. Además, el caché de segundo nivel de NHibernate tiene una arquitectura conectable para que pueda conectarle un caché distribuido de terceros sin necesidad de programación. NCache ha implementado Proveedor de caché de segundo nivel de NHibernate y puede usarlo como su caché distribuida para NHibernate sin ningún cambio de código.
El siguiente ejemplo le muestra cómo usar NCache en su aplicación NHibernate como su caché de segundo nivel:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<hibernate-configuration> <session-factory> <property name="cache.provider_class">Alachisoft.NCache.Integrations.NHibernate.Cache.NCacheProvider, Alachisoft.NCache.Integrations.NHibernate.Cache </property> <property name="proxyfactory.factory_class"> NHibernate.Bytecode.DefaultProxyFactoryFactory, NHibernate </property> <property name="cache.use_second_level_cache">true </property> </session-factory> </hibernate-configuration> <ncache> <cache-regions> <region name="AbsoluteExpirationRegion" cache-name="myCache" priority="Default" expiration-type="sliding" expiration-period="180" use-async="false"> <region name="default" cache-name="myCache" priority="default" expiration-type="none" expiration-period="0"> </region></region></cache-regions> </ncache> |
Aquí hay algunos beneficios de NCache como caché de segundo nivel de NHibernate:
- NCache sincroniza entre procesos y servidores: NCache es un caché compartido entre varios servidores. Esto garantiza que la memoria caché sea coherente en varios servidores y que todas las actualizaciones de la memoria caché se sincronicen correctamente, lo que evita problemas de integridad de datos.
- Tamaño de caché escalable: NCache agrupa la memoria de todos los servidores de caché juntos. Por lo tanto, puede aumentar el tamaño de la memoria caché simplemente agregando más servidores al clúster de memoria caché. Esto significa que su caché puede crecer hasta cientos de gigabytes e incluso terabytes.
- El reciclaje del proceso de aplicación no afecta a la memoria caché: Los procesos de su aplicación se vuelven sin estado ya que todos los datos están en una memoria caché distribuida fuera del proceso. Por lo tanto, el reciclaje del proceso de la aplicación no tiene impacto en la memoria caché.
- Escalabilidad lineal para manejar cargas de transacciones más grandes: Puede administrar cargas de transacciones más grandes sin preocuparse de que su base de datos se convierta en un cuello de botella. Este rendimiento es posible porque la caché distribuida se escala linealmente y reduce el tráfico de la base de datos hasta en un 90 %.
- Use Client Cache para almacenar datos en proceso: NCache proporciona compatibilidad con la memoria caché del cliente, una memoria caché local sincronizada o memoria caché encima de una memoria caché, que se ejecuta dentro de su proceso de trabajo. Puede usarlo para lograr un mayor rendimiento dentro de sus aplicaciones NHibernate.
NCache Detalles NHibernate & NCache Uso NHibernate Cache-Video
¡Conclusión!
Como puede ver, un caché distribuido como NCache le permite utilizar NHibernate y seguir ejecutando su aplicación en una configuración de varios servidores. También puede escalar su aplicación y manejar altas cargas de transacciones usando NCache como caché de segundo nivel de NHibernate. Descargue una versión de prueba de 60 días totalmente funcional de NCache Enterprise y pruébalo por ti mismo.