Aujourd'hui, le cache distribué est largement utilisé pour atteindre l'évolutivité et les performances dans les applications à fort trafic. Le cache distribué décharge vos serveurs de base de données en servant les données mises en cache à partir du magasin en mémoire. De plus, peu de caches distribués vous offrent également une capacité de requête de type SQL, que vous pouvez facilement interroger votre cache distribué de la même manière que vous interrogez votre base de données, c'est-à-dire “SELECT employee WHERE employee.city=‘New York’”
Tout d'abord, la plupart des caches distribués ne fournissent même pas Capacités d'interrogation de type SQL. Même quelques-uns qui fournissent cela ont un support très limité pour cela. Ils fournissent uniquement une recherche de cache distribué basée sur des critères simples. Considérant qu'il existe plusieurs scénarios où vous devez trouver le résultat basé sur des fonctions d'agrégation, c'est-à-dire “SELECT COUNT(employee) WHERE salary > 1000”
or “SELECT SUM(salary) WHERE employee.city = ‘New York’”
. Pour ce faire, vous devez d'abord interroger le cache distribué, puis calculer la fonction d'agrégation sur les données de cache récupérées.
NCache Détails NCache Docs Requête SQL dans NCache Docs
Pourquoi utiliser NCache pour interroger le cache distribué à l'aide de fonctions d'agrégation
Cette approche présente deux inconvénients majeurs. La première est que vous devez exécuter une requête sur le cache distribué, ce qui implique la récupération de toutes les données du cache distribué vers le client de cache. Ces données peuvent varier de Mo à Go, et cette opération devient plus coûteuse lorsque vous payez également pour la bande passante réseau consommée. De plus, la plupart du temps, vous n'avez pas besoin de ces données une fois que vous avez terminé les calculs de la fonction d'agrégation.
Le deuxième inconvénient est qu'il implique une programmation personnalisée pour le calcul de la fonction d'agrégation. Cela ajoute des heures de travail supplémentaires et la plupart des scénarios complexes ne peuvent toujours pas être couverts. Ce serait beaucoup plus agréable si vous pouviez continuer à développer l'application dans le but pour lequel elle est construite et ne pas vous soucier de la conception et de la mise en œuvre de ces fonctionnalités supplémentaires vous-même.
Ce sont les raisons pour lesquelles NCache vous offre la possibilité d'interroger le cache distribué à l'aide de fonctions d'agrégation telles que COUNT, SUM, MIN, MAX et AVG dans le cadre de son langage de requête d'objet (OQL). En utilisant NCache Fonctions d'agrégation OQL, vous pouvez facilement effectuer les calculs d'agrégation requis à l'intérieur du domaine de cache distribué. Cette approche évite non seulement le trafic réseau, mais vous offre également de bien meilleures performances en termes de calcul des fonctions d'agrégation. En effet, toutes les sélections et tous les calculs sont effectués à l'intérieur du domaine de cache distribué et aucun voyage réseau n'est impliqué.
Voici l'exemple de code à rechercher NCache à l'aide de requêtes agrégées OQL :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
public void Main(string[] args) { ... NCache.InitializeCache("myPartitionReplicaCache"); String query = "SELECT COUNT(Business.Product) WHERE this.ProductID > ? AND this.Price < ?"; Hashtable param = new Hashtable(); param.Add("ProductID", 100); param.Add("Price", 50); // Fetch the cache items matching this search criteria IDictionary searchResults = _cache.SearchEntries(query, values); ... } |
Pour un temps d'exécution des requêtes plus réduit, NCache exécute la requête de type SQL en parallèle en la distribuant à tous les serveurs de cache, tout comme le mécanisme de réduction de carte. De plus, vous pouvez utiliser NCache Requêtes agrégées OQL dans les applications .NET et Java.
Conclusion!
En résumé, les NCache vous offre non seulement l'évolutivité et les performances, mais également la flexibilité de rechercher un cache distribué à l'aide d'une fonction d'agrégation de type SQL.