O NHibernate é uma solução popular de mapeamento relacional de objeto (ORM) para aplicativos .NET porque simplifica a programação do banco de dados. Como resultado, muitos aplicativos de alto tráfego usam o NHibernate e, portanto, enfrentam gargalos de escalabilidade no banco de dados.
Para resolver isso, o NHibernate fornece uma infraestrutura de cache para que os aplicativos possam usar um armazenamento de cache na memória e evitar o esgotamento de seus bancos de dados com uma carga de solicitação tão alta. O cache NHibernate inclui cache de primeiro nível e cache de segundo nível.
NCache Adicionar ao carrinho Documentos de cache do NHibernate Usando Dapper Micro-ORM com NCache
Cache de primeiro nível do NHibernate e suas limitações
O Cache de Primeiro Nível (1º nível) do NHibernate fornece um cache básico autônomo (in-proc) associado ao objeto de sessão e é limitado apenas à sessão atual. Por padrão, esse cache de 1º nível reduz o número de consultas SQL no banco de dados por sessão. Mas, existem muitas limitações com esse cache de 1º nível, como segue:
- Cada processo tem seu próprio cache de 1º nível que não é sincronizado com outros caches de 1º nível, dificultando a integridade dos dados.
- O tamanho do cache é limitado à memória do processo e não pode ser dimensionado.
- A reciclagem do processo de trabalho faz com que o cache seja liberado. Em seguida, você precisa recarregá-lo, o que reduz o desempenho do aplicativo.
NCache Adicionar ao carrinho Sincronize DB com NHibernate Cache de consulta NHibernate
Solução: Um Cache Distribuído para NHibernate
O Cache de Segundo Nível do NHibernate existe na Session Factory level, o que significa que várias sessões de usuário podem acessar um cache compartilhado. Além disso, o cache de 2º nível do NHibernate possui uma arquitetura plugável para que você possa conectar um cache distribuído de terceiros a ele sem qualquer programação. NCache implementou Provedor de Cache de Segundo Nível NHibernate e você pode usá-lo como seu cache distribuído para NHibernate sem nenhuma alteração de código.
O exemplo a seguir mostra como usar NCache em seu aplicativo NHibernate como seu cache de 2º nível:
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> |
Aqui estão alguns benefícios de NCache como cache de 2º nível do NHibernate:
- NCache sincroniza entre processos e servidores: NCache é um cache compartilhado entre vários servidores. Isso garante que o cache seja consistente em vários servidores e que todas as atualizações de cache sejam sincronizadas corretamente, evitando problemas de integridade de dados.
- Tamanho de cache escalável: NCache agrupa a memória de todos os servidores de cache. Assim, você pode aumentar o tamanho do cache simplesmente adicionando mais servidores ao cluster de cache. Isso significa que seu cache pode crescer para 100 gigabytes e até terabytes.
- A reciclagem do processo do aplicativo não afeta o cache: Seus processos de aplicativo se tornam sem estado, pois todos os dados estão em um cache distribuído fora do proc. Portanto, a reciclagem do processo de aplicativo não tem impacto no cache.
- Escalabilidade linear para lidar com cargas de transações maiores: Você pode gerenciar cargas de transações maiores sem se preocupar com o fato de seu banco de dados se tornar um gargalo. Esse desempenho é possível porque o cache distribuído é dimensionado linearmente e reduz o tráfego do banco de dados em até 90%.
- Use o cache do cliente para armazenar dados no processo: NCache fornece suporte para cache do cliente, um cache local sincronizado ou cache-on-top-of-a-cache, que é executado em seu processo de trabalho. Você pode usá-lo para obter mais desempenho em seus aplicativos NHibernate.
NCache Adicionar ao carrinho NHibernate & NCache Use NHibernate Cache-Vídeo
Conclusão!
Como você pode ver, um cache distribuído como NCache permite que você use o NHibernate e ainda execute seu aplicativo em uma configuração multi-servidor. Você também pode dimensionar seu aplicativo e lidar com altas cargas de transações usando NCache como Cache de segundo nível do NHibernate. Baixe um teste de 60 dias totalmente funcional do NCache Enterprise e experimente você mesmo.
NCache Adicionar ao carrinho Baixar NCache Comparação de edições