Indexation pour une recherche de cache améliorée
Le but de l'utilisation d'un index est d'optimiser la vitesse et les performances dans la recherche de données pertinentes par rapport à la recherche dans le cache. À des fins de recherche, tous les attributs consultables doivent être indexés. Sans index, la recherche analyserait toutes les données, ce qui nécessiterait un temps et une puissance de calcul considérables. Le stockage informatique supplémentaire requis pour stocker l'index, ainsi que l'augmentation considérable du temps nécessaire à une mise à jour, sont troqués contre le temps gagné lors de la recherche de l'information.
NCache utilise en interne l'indexation dans différents modules pour améliorer les performances des opérations internes.
Index de recherche de cache
NCache fournit le Cache Searching Index pour booster l’exécution des requêtes sur le cache. À des fins de recherche, il suffit d’indexer tous les attributs consultables. NCache ne recherchera pas l'attribut non indexé dans le cache car il doit parcourir tout le cache pour trouver les données associées qui affecteront les performances du cache.
En outre, les index sont définis par rapport aux types de données réels des éléments mis en cache. Grâce à l'indexation, NCache sait quel type de données seront stockées et il les stockera de manière consultable.
NCache fournit deux façons de définir des index.
- Index prédéfini (index statique)
- Index d'exécution (index dynamique)
Index prédéfini (index statique)
Notes
Cette fonctionnalité est également disponible dans NCache Professional.
Notes
Il est recommandé d'éviter d'indexer des champs inutiles car l'indexation entraîne une surcharge de mémoire et de performances.
Pour rechercher des objets de classe personnalisés dans un cache clusterisé, les index de requête pour cette classe doivent être définis à l'avance. De cette façon, le cache enregistrera ces données sous une forme où elles pourront être facilement interrogées. Vous pouvez définir des index via les éléments suivants processus de configuration. Les index peuvent être configurés pour les membres de données primitives publiques, privées et protégées.
Notes
Les index ne sont pris en charge que sur les types valeur. Les types de référence ne peuvent pas être indexés.
Les index peuvent être définis via la configuration avant le démarrage du cache. Si vous souhaitez définir de nouveaux index via la configuration, le cache doit d'abord être arrêté et redémarré après les modifications pour déployer les modifications. Les données pertinentes ajoutées ensuite au cache sont automatiquement indexées. Ces données pourront être facilement interrogées à l’avenir.
Marquer explicitement un type de référence comme indexable lèvera une exception.
Index d'exécution (index dynamique)
Si une application contient des attributs définis et utilisés au moment de l'exécution, l'indexation au moment de l'exécution doit être utilisée. Par exemple, certaines valeurs calculées peuvent être attribuées à un produit liées à ses ventes. Lorsqu'un produit est acheté par un client, les détails de la vente sont enregistrés dans le cache pour générer ultérieurement des rapports quotidiens sur les tendances des ventes via les valeurs mises en cache. Cette valeur est définie au moment de l'exécution et constitue donc l'attribut d'exécution du produit.
NCache créera automatiquement des index pour les données ajoutées par le client de cache. Cela signifie que les index n'ont pas besoin d'être configurés avant de les utiliser pour les attributs d'exécution.
Lors de la définition d'index par programmation, les classes ou les champs peuvent être marqués indexables à l'aide d'attributs personnalisés dans le code de l'application. Une fois marqués, toutes les propriétés et champs primitifs sont automatiquement indexés. Étant donné que vous n'aurez peut-être pas besoin d'indexer tous les champs, vous pouvez également les exclure de l'indexation. Outre l'indexation de toute la classe, vous avez également la possibilité de définir des index de manière sélective pour les champs souhaités uniquement.
L'index d'exécution peut être classé dans les types suivants :
- Indice de groupe
- Index des balises
- Index des balises nommées
Indice de groupe
Les éléments peuvent être classés dans le cache à l'aide groupes. NCache vous permet d'interroger les données dans le cache en fonction des groupes, c'est pourquoi les groupes doivent également être indexés. Lorsque des données sont ajoutées à un groupe qui n'existe pas déjà dans le cache, un nouvel index est créé pour le groupe. Toutes les données appartenant à ce groupe sont ensuite affectées au même index pour la recherche.
Index des balises
Une ou plusieurs marques d'identification peuvent être associées à des éléments de cache. Ces marques d'identification sont appelées tags. Grâce à des balises, l'utilisateur peut associer des mots-clés aux éléments du cache. Une collection d'éléments mis en cache peut être trouvée et supprimée du cache en spécifiant également des balises. Les balises ne sont autorisées qu’au format chaîne. Pour chaque nouvelle balise, une nouvelle entrée de balise sera créée dans l'index des balises et tous les éléments mis en cache associés seront associés à cet index.
Index des balises nommées
S'il est nécessaire d'utiliser un niveau élevé de balisage où les balises peuvent avoir différents types de données ou noms et que l'exigence est d'interroger les données liées à un type de balise spécifique, alors les balises nommées doivent être utilisées.
« Balises nommées » est l'amélioration des « Tags ». Les balises nommées permettent à l'utilisateur de stocker des informations supplémentaires (de tout type) nécessaires pour interroger l'objet stocké sous forme de chaîne. Par exemple, la balise nommée « Heure de vente la plus élevée » avec une valeur de temps peut être stockée lorsqu'une vente de produit est la plus élevée d'une journée entière. Les balises nommées permettent d'indexer les données en fonction des attributs requis au moment de l'exécution. Plus tard, une requête peut être construite à l'aide de balises nommées pour récupérer l'ensemble de résultats souhaité. Plusieurs balises nommées peuvent être associées à un élément mis en cache et vice versa.
Lorsque des données sont ajoutées avec une balise nommée qui n'existe pas dans le cache, un nouvel index est créé pour cette nouvelle balise nommée. Toutes les données associées seront affectées à cet index pour la recherche.
Contrairement à Tag, l'index de balise nommé peut être défini pour tous les types primitifs, chaînes et date/heure. Il y a donc plus de flexibilité pour ajouter une large gamme de données consultables avec différents types de données.
Si plusieurs applications partagent le même cache et que toutes sont censées ajouter des balises nommées, assurez-vous que les mêmes balises nommées ont des types de données homogènes, par exemple si un client ajoute la balise nommée "ProductID" avec String. type de données, tous les autres clients doivent ajouter les valeurs de "ProductID" au format String et non au format Integer ou autre pour le même cache.
Index des expulsions
L'expulsion est une fonction utile dans NCache, où lorsque le cache est plein, il décide d'expulser ses données existantes afin d'accueillir les données entrantes. Dans ce scénario, l'expulsion peut faciliter les opérations de cache tout en conservant la limite de taille du cache en supprimant un pourcentage configuré de données.
NCache propose différentes politiques d’expulsion. Ces politiques décident quelles données seront supprimées lorsque le cache est plein. NCache fournit les politiques d'expulsion suivantes :
- Expulsion basée sur la priorité
Notes
Cette fonctionnalité est également disponible dans NCache Professional.
Pour l'expulsion basée sur la priorité, l'index est conservé avec une priorité de haut en bas et lorsque le cache est plein, le thread d'expulsion sélectionne les clés de l'index avec une faible priorité et les expulse du cache.
- Moins récemment utilisé (LRU)
Pour le moins récemment utilisé (LRU), l'index d'expulsion est conservé pendant la durée d'utilisation des clés et lorsque le cache est plein, le thread d'expulsion sélectionne les clés de l'index qui ont été les moins récemment utilisées et les expulse du cache.
- Les moins fréquemment utilisés (LFU)
Pour les moins fréquemment utilisés (LFU), l'index d'expulsion est conservé pour le nombre d'utilisations des clés et lorsque le cache est plein, le thread d'expulsion sélectionne les clés de l'index qui sont les moins fréquemment utilisées et les expulse du cache.
Notes
Pour procéder à l'expulsion, NCache conserve l'index d'éviction pour les données de cache pour l'éviction.
Indice d'expiration
L'expiration est une propriété attachée à chaque élément mis en cache. Cette propriété est attachée à chaque objet afin que chaque objet du cache puisse être évalué selon son âge, cet âge de l'objet décidera de son expiration. temps. Lorsque cet objet d'expiration est invalidé, l'élément associé est supprimé du cache.
NCache garde le DateTime
Indice de péremption pour les clés de cache afin de les supprimer efficacement à l'expiration. Le gestionnaire d'expiration fait expirer les éléments après l'intervalle de nettoyage.
Intervalle de nettoyage est l'intervalle périodique après lequel les éléments expirés sont supprimés du cache. L'intervalle de nettoyage d'un cache peut être modifié dans les paramètres de configuration.
Une fois un intervalle de nettoyage écoulé, le gestionnaire d'expiration récupère les clés de l'index et les éléments expirés sont supprimés du cache. Après avoir supprimé les éléments expirés du cache, le thread d'expiration se met en veille pendant la « durée de l'intervalle de nettoyage » spécifiée dans la configuration du cache. NCache propose deux types d'expirations expliqués dans Stratégies d'invalidation des données :
- Expiration absolue
- Expiration glissante
Voir aussi
Configurer les index de requête
Supprimer-QueryIndex
Expulsion
Partage de données d'exécution