Signification de la mise en cache
La mise en cache conserve en mémoire des copies réutilisables des données fréquemment consultées afin que les applications évitent les appels répétés à la base de données et renvoient les résultats plus rapidement.
La mise en cache conserve en mémoire des copies réutilisables des données fréquemment consultées afin que les applications évitent les appels répétés à la base de données et renvoient les résultats plus rapidement.
La mise en cache est la pratique consistant à stocker des données clé-valeur dans une mémoire temporaire (telle qu'une base de données en langage de requête structuré non relationnel (NoSQL)) afin que les applications puissent les récupérer plus rapidement qu'elles ne le pourraient à partir d'un stockage conventionnel. Dans les architectures de stockage cloud, où les requêtes traversent souvent les réseaux et touchent des services partagés, la mise en cache peut contribuer à maintenir des temps de réponse faibles et à réduire le travail répété.
La plupart des systèmes conservent une « source de vérité » durable (une base de données) pour les ensembles de données complets, puis conservent un cache pour les sous-ensembles transitoires qui sont souvent lus. Lorsqu’une requête arrive, l’application vérifie d’abord le cache ; si les données sont présentes, elles sont retournées rapidement sans interroger à nouveau le back end. Les développeurs mettent également en cache les données traitées et les réutilisent pour répondre aux requêtes plus rapidement que les requêtes standard vers des bases de données relationnelles, des bases de données SQL ou des bases de données PostgreSQL open source.
Les bons candidats incluent les données lues à plusieurs reprises et les données qui changent rarement (par exemple, les informations de produit et de tarification ou les ressources statiques partagées qui sont coûteuses à construire).
Si une opération transforme des données ou effectue un calcul complexe, la mise en cache du résultat peut éviter de les recalculer pour les requêtes suivantes.
Les développeurs utilisent des caches multiniveaux (“couches de” cache) pour stocker différents types de données dans des caches distincts en fonction de la requête. L’ajout d’une ou de plusieurs couches de cache peut améliorer le débit et la latence dans une couche de données.
Les magasins en mémoire sont souvent utilisés pour contenir de grands volumes de données de session, comme des entrées utilisateur, des entrées de panier d’achat ou des préférences de personnalisation pendant de courtes périodes. Pour les applications avec état, les équipes stockent également l’état de session dans le cache afin que l’application puisse être sans état.
La mise en cache peut améliorer les performances de plusieurs manières concrètes :
Dans de nombreuses conceptions cloud, un cache se trouve à côté d'un magasin de données principal (comme une base de données). Le magasin principal contient l'ensemble de données complet et durable sur le serveur cloud, tandis que le cache conserve un sous-ensemble plus petit et temporaire, plus rapide à lire.
Une configuration courante est une couche de cache autonome, ou un cache qui se trouve dans le niveau—d’application ou de base de données choisi en fonction de l’endroit où vous avez besoin de lectures rapides.
Certains systèmes utilisent la mise en cache multiniveaux (“couches” de cache) de sorte que différents types de données résident dans différents caches en fonction de la requête. L’ajout d’une ou de plusieurs couches de cache peut améliorer le débit et la latence de la couche de données et réduire le coût global en réduisant la charge back-end.
Les équipes mettent généralement en cache les données qui se trouvent dans quelques compartiments :
Il existe plusieurs façons standard pour les applications de lire et d’écrire dans un cache. Voici les modèles les plus courants et ce qu’ils signifient dans la pratique.
L’utilisation de couches de cache peut améliorer le débit et la latence en traitant les requêtes courantes du cache au lieu d’interroger à plusieurs reprises le magasin principal. Cela peut réduire la nécessité de mettre à l’échelle l’infrastructure de base de données, car moins de requêtes atteignent la base de données en premier lieu.
Pour les applications présentant des pics d’utilisation, les caches en mémoire peuvent contribuer à atténuer la latence en conservant les données fréquemment demandées à proximité de l’endroit où elles sont utilisées.
Utilisez ces éléments comme point de départ lorsque vous choisissez un flux de travail :
La mise en cache améliore les performances des applications, car la lecture à partir d’un cache en mémoire est plus rapide que la lecture à partir d’un magasin de données piloté par disque. Lorsque davantage de requêtes sont traitées à partir du cache, les systèmes envoient moins de requêtes aux bases de données principales, ce qui peut réduire la nécessité de mettre à l’échelle l’infrastructure de base de données et réduire les coûts associés.
La mise en cache permet de couper le travail répété. Les données lues à plusieurs reprises (ou coûteuses à construire) peuvent être stockées une seule fois et réutilisées. Si une opération effectue un calcul complexe ou transforme des données, la mise en cache du résultat réduit le calcul répété pour les requêtes suivantes.
De nombreux sites mettent en cache la sortie de page (par exemple, les scripts HTML et clients) afin que le serveur puisse retourner la sortie mise en cache au lieu de réexécuter le code de page à chaque fois. La mise en cache prend également en charge les scénarios multimédias web via les caches web et la mise en cache réseau, tels que les réseaux de distribution de contenu (CDN).
Les applications stockent souvent des sous-ensembles temporaires de données dans un cache pour une récupération rapide, tandis que la base de données primaire conserve le jeu de données durable complet. La mise en cache des données traitées et leur réutilisation peuvent traiter des requêtes plus rapidement que les requêtes de base de données standard.
Les équipes ajoutent souvent une ou plusieurs couches de cache pour améliorer le débit et la latence, en traitant les requêtes courantes du cache et en réduisant la charge de la base de données. Les caches en mémoire peuvent aider lorsque les pics d’utilisation et la requête de débit augmentent, réduisant ainsi la latence pendant ces périodes.
La mise en cache est souvent utilisée pour stocker de grands volumes de données de session de courte durée (telles que les préférences d’entrée utilisateur ou de personnalisation) dans un magasin en mémoire. Certaines équipes stockent également l’état de session dans le cache afin que les applications avec état puissent conserver le niveau d’application sans état. Pour les systèmes opérationnels, les données qui changent—rarement, telles que les informations—de produit et de tarification, constituent une cible de mise en cache courante.
Un cache de navigateur stocke des copies de ressources statiques sur l'appareil d'un utilisateur afin que les visites répétées puissent réutiliser ces fichiers au lieu de les télécharger à nouveau.
La mise en cache côté serveur s'effectue dans les processus qui exécutent les services métier à distance, plutôt que sur l'appareil de l'utilisateur final. Les caches côté serveur sont souvent privés (locaux à une instance d’application) ou partagés (utilisés par de nombreuses instances d’application).
Un CDN met en cache le contenu sur des serveurs périphériques plus proches des utilisateurs finaux, de sorte que les requêtes ne reviennent pas toujours à l'origine. Contrairement au cache d'un navigateur (un utilisateur), un cache CDN est partagé : la requête d'un utilisateur peut remplir le contenu qu'un autre utilisateur recevra ultérieurement.
La mise en cache n’est pas seulement un modèle de cloud computing : les couches matérielles et mémoire l’utilisent également.
Le cache du processeur est une petite zone de mémoire rapide à proximité (ou sur) du processeur qui stocke des copies des données et des instructions fréquemment utilisées afin de réduire le temps d'attente dans la mémoire principale.
Le cache mémoire (en mémoire) est le type de cache logiciel le plus simple : un magasin en mémoire conservé dans l'espace d'adressage d'un seul processus et accessible directement par ce processus.
Un cache distribué s’étend sur plusieurs serveurs afin que le cache puisse augmenter et augmenter sa capacité transactionnelle au-delà d’un seul ordinateur. De nombreux services de cache partagé utilisent un cluster de serveurs et distribuent les données mises en cache sur le cluster . La mise à l’échelle du cache peut être aussi simple que l’ajout de serveurs supplémentaires. Certaines conceptions distribuées étant également mises en cache de couche, une erreur d’une couche extrait d’un fournisseur en amont, puis stocke le résultat localement pour la requête suivante.
La mise en cache maintient les données fréquemment consultées plus près de l'endroit où elles sont utilisées, ce qui peut améliorer les temps de réponse et aider un système à gérer davantage de requêtes simultanées. Elle peut également réduire la contention dans le magasin de données d’origine, par exemple lorsqu’une base de données a des connexions limitées.
Dans les applications distribuées, la mise en cache se produit souvent dans plusieurs emplacements—côté client (par exemple, un navigateur) et côté serveur (dans une application ou un service de cache partagé).
Commencez petit et concentrez-vous sur les données qui vous donnent le retour le plus clair :
Un cache contient généralement des copies de données d’un magasin principal, donc l’actualisation nécessite votre attention :
La mise en cache est un élément essentiel pour les systèmes modernes, car elle s’adapte à de nombreuses architectures, des services uniques aux applications distribuées—et à la livraison en périphérie. Pour un fournisseur cloud de cache en mémoire géré, vous pouvez explorer Azure.