La voie vers la mise en cache intelligente

Pourquoi ne pas créer le cache vous-même ?

De nombreux développeurs d'applications ne mettent en cache aucune donnée ou tout au plus mettent en cache certaines des données statiques en lecture seule. Certains développeurs vont plus loin et mettent en cache les données dans "Session State" entre les demandes des utilisateurs. Cependant, toutes ces approches manquent l'avantage fondamental de la mise en cache, à savoir mettre en cache et partager des données avec tous les utilisateurs de l'application. Et, ce type de cache doit être très intelligent afin d'éviter les problèmes d'intégrité des données dans le cache (via des données obsolètes).

Si vous souhaitez sérieusement améliorer les performances de votre application grâce à la mise en cache intelligente, vous vous posez la question évidente de l'achat par rapport à la construction. Il existe un certain nombre d'inconvénients à créer votre propre solution de mise en cache.

D'abord et avant tout, vous retirez d'importantes ressources de développement de votre objectif commercial de développement de votre application et vous les consacrez au développement d'une infrastructure que vous pourriez facilement acheter. Deuxièmement, le développement d'une solution de mise en cache correcte et intelligente nécessite beaucoup d'efforts et vous n'avez peut-être pas la bonne expertise dans votre équipe pour concevoir et développer un cache hautes performances capable de gérer les scénarios complexes de concurrence et de synchronisation. Et, enfin, même si vous aviez l'expertise, vous mettez beaucoup d'efforts dans quelque chose qui vous éloigne de votre objectif commercial.

Même si vous décidez finalement d'acheter une solution de mise en cache commerciale, vous devez vous assurer qu'elle fournit toutes les fonctionnalités de mise en cache et de clustering requises dont votre application aurait besoin. Même si vous démarrez aujourd'hui avec une configuration à serveur unique, vous souhaiterez une solution de mise en cache qui peut évoluer avec votre application dans un environnement distribué et en cluster.

Boostez les performances des applications

L'avantage le plus évident de l'utilisation de la mise en cache est une amélioration spectaculaire des performances de votre application. La mise en cache est le processus de stockage des données (à la fois en lecture seule et transactionnelles) à proximité de l'application fréquemment utilisée. En règle générale, ces données sont stockées en mémoire (sous forme d'objets), car la récupération des données de la mémoire est beaucoup plus efficace que leur récupération à partir d'autres emplacements, comme une base de données.

Évoluez le serveur de base de données sans mises à niveau matérielles coûteuses

La plupart des applications effectuent beaucoup plus d'opérations de lecture que d'opérations d'écriture (généralement un rapport 70:30 ou 80:20). De plus, la mise en cache des données au niveau du serveur d'applications permet aux applications de réduire les déplacements de la base de données pour les opérations de lecture. Cela réduit considérablement la charge sur le serveur de base de données.

Il y a deux avantages évidents à cela. Premièrement, le serveur de base de données effectue désormais les opérations d'écriture beaucoup plus rapidement. Et, deuxièmement, le serveur de base de données peut désormais gérer un nombre beaucoup plus important de clients sans nécessiter de mises à niveau matérielles coûteuses. Les serveurs de base de données sont généralement le matériel le plus coûteux dans la plupart des déploiements d'applications N-Tier et, par conséquent, les économies de mise à niveau matérielle ici sont généralement très élevées.

Cacher les données transactionnelles

Traditionnellement, les applications Web ou les services Web ne mettent en cache aucune donnée ou utilisent des mécanismes primitifs comme "l'état de la session" pour mettre en cache les données en lecture seule. Il y a deux problèmes avec cette approche. Premièrement, la plupart des données utilisées par une application critique ne sont pas en lecture seule mais transactionnelles et, par conséquent, la mise en cache des données en lecture seule ne va pas assez loin dans l'amélioration des performances de l'application. Deuxièmement, même ces données en lecture seule ne sont pas partagées entre les utilisateurs, qui, dans une application réelle, se comptent par milliers ou par dizaines de milliers. En conséquence, la plupart de ces applications finissent par aller au serveur de base de données pour la plupart des données dont elles ont besoin et donc les problèmes de performances.

D'autre part, NCache permet aux applications de conserver les données statiques et transactionnelles dans le cache. Et ces données mises en cache sont disponibles pour tous les utilisateurs du cluster de serveurs. NCache fournit ensuite un certain nombre de mécanismes pour garantir que les données mises en cache ne deviennent pas obsolètes et sont toujours mises à jour chaque fois que l'application met à jour les données dans la base de données. NCache vous permet également de gérer les situations où les données doivent être mises à jour depuis l'extérieur de l'application. Ceci est réalisé grâce à un concept de "dépendances".

Gérer les relations

La plupart des applications réelles traitent des données complexes qui ne sont pas seulement transactionnelles, mais contiennent des relations à plusieurs niveaux. Cela signifie que si vous mettez en cache des données, vous devez également gérer leurs relations. Le cache doit connaître ces relations afin de les gérer en cas d'opérations de chargement, d'insertion, de mise à jour ou de suppression.

NCache gère les relations entre les objets afin que les modifications apportées à un objet puissent déclencher des modifications ou des invalidations de tous les objets associés. De même, même si votre application charge d'abord un objet et le place dans le cache, puis charge ensuite ses objets associés, elle peut dire NCache sur ces relations et NCache peut les gérer.

Non seulement vous pouvez gérer les relations entre les objets mis en cache, mais également entre les objets mis en cache et les ressources externes. NCache fournit des dépendances basées sur des clés et des fichiers à cette fin. Et ces dépendances peuvent être appelées à distance à l'aide de .NET Remoting. Cela permet de garder votre cache à jour tout le temps.

Synchroniser les modifications de données dans les clusters

De nombreuses applications Web et services Web s'exécutent dans des configurations de cluster de serveurs/ferme de serveurs afin de gérer un grand nombre d'utilisateurs. Dans ces environnements, si votre cache n'est pas en cluster, les mises à jour d'un serveur ne seront pas disponibles pour les autres serveurs. Par conséquent, vos données mises en cache deviendront incohérentes et obsolètes, entraînant ainsi des problèmes d'intégrité des données.

NCache est un puissant cache en cluster qui synchronise toutes les modifications de données dans le cluster. Il fournit un riche ensemble de topologies de clustering pour vous aider à répondre à vos besoins spécifiques. Vous pouvez choisir parmi les topologies de cache miroir, de cache répliqué, de cache partitionné et de cache de réplica partitionné dans votre cluster. Ceux-ci sont discutés plus en détail dans NCache Topologies de clustering.

NCache garantit que les mises à jour simultanées du cache sont gérées de manière sérialisée afin d'éviter les problèmes d'intégrité des données. De plus, il garantit que toutes les modifications apportées au cache sont immédiatement disponibles pour tous les nœuds du cluster. Cela permet à votre application de traiter NCache comme un cache logique dans tout le cluster.

© Copyright Alachisoft 2002 - . Tous droits réservés. NCache est une marque déposée de Diyatech Corp.