NHibernate est une solution de mappage objet-relationnel (ORM) populaire pour les applications .NET car elle simplifie la programmation de votre base de données. Par conséquent, de nombreuses applications à fort trafic utilisent NHibernate et sont donc confrontées à des goulots d'étranglement d'évolutivité dans la base de données.
Pour résoudre ce problème, NHibernate fournit une infrastructure de mise en cache afin que les applications puissent utiliser un magasin de cache en mémoire à la place et éviter d'épuiser leurs bases de données avec une charge de requêtes aussi élevée. La mise en cache NHibernate comprend un cache de premier niveau et un cache de second niveau.
NCache Détails Documents de mise en cache NHibernate Utilisation de Dapper Micro-ORM avec NCache
NHibernate First Level Cache et ses limites
Le cache de premier niveau (1er niveau) d'Hibernate fournit un cache autonome de base (in-proc) associé à l'objet de session et est limité à la session en cours uniquement. Par défaut, ce cache de 1er niveau réduit le nombre de requêtes SQL sur la base de données par session. Mais, il y a beaucoup de limitations avec ce cache de 1er niveau, comme suit :
- Chaque processus a son propre cache de 1er niveau qui n'est pas synchronisé avec les autres caches de 1er niveau, ce qui rend l'intégrité des données difficile.
- La taille du cache est limitée à la mémoire du processus et ne peut pas évoluer.
- Le recyclage du processus de travail entraîne le vidage du cache. Ensuite, vous devez le recharger, ce qui réduit les performances de votre application.
NCache Détails Synchroniser la base de données avec NHibernate Mise en cache des requêtes Hibernate
Solution : un cache distribué pour NHibernate
NHibernate Second Level Cache existe dans la Session Factory niveau, ce qui signifie que plusieurs sessions utilisateur peuvent accéder à un cache partagé. De plus, le cache de 2ème niveau NHibernate a une architecture plug-able afin que vous puissiez y brancher un cache distribué tiers sans aucune programmation. NCache a mis en place Fournisseur de cache de second niveau NHibernate et vous pouvez l'utiliser comme cache distribué pour NHibernate sans aucun changement de code.
L'exemple suivant vous montre comment utiliser NCache dans votre application NHibernate comme son cache de 2e niveau :
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> |
Voici quelques avantages de NCache comme cache de 2e niveau NHibernate :
- NCache se synchronise entre les processus et les serveurs : NCache est un cache partagé sur plusieurs serveurs. Cela garantit que le cache est cohérent sur plusieurs serveurs et que toutes les mises à jour du cache sont correctement synchronisées, évitant ainsi les problèmes d'intégrité des données.
- Taille de cache évolutive : NCache regroupe la mémoire de tous les serveurs de cache. Ainsi, vous pouvez augmenter la taille du cache en ajoutant simplement plus de serveurs au cluster de cache. Cela signifie que votre cache peut atteindre des centaines de gigaoctets et même des téraoctets.
- Le recyclage du processus applicatif n'affecte pas le cache : Vos processus d'application deviennent sans état car toutes les données se trouvent dans un cache distribué hors processus. Ainsi, le recyclage des processus applicatifs n'a aucun impact sur le cache.
- Évolutivité linéaire pour gérer des charges de transactions plus importantes : Vous pouvez gérer des charges de transactions plus importantes sans craindre que votre base de données ne devienne un goulot d'étranglement. Cette performance est possible car le cache distribué évolue de manière linéaire et réduit le trafic de votre base de données jusqu'à 90 %.
- Utilisez le cache client pour stocker les données dans le processus : NCache prend en charge le cache client, un cache local synchronisé ou un cache sur le dessus d'un cache, qui s'exécute dans votre processus de travail. Vous pouvez l'utiliser pour obtenir plus de performances dans vos applications NHibernate.
NCache Détails NHiberner & NCache Utilisez NHibernate Cache-Vidéo
Conclusion!
Comme vous pouvez le voir, un cache distribué comme NCache vous permet d'utiliser NHibernate tout en exécutant votre application dans une configuration multi-serveurs. Vous pouvez également faire évoluer votre application et gérer des charges de transactions élevées en utilisant NCache en tant que cache de second niveau NHibernate. Téléchargez une version d'essai complète de 60 jours de NCache Enterprise et essayez-le par vous-même.