L'avènement des systèmes de mise en cache distribués a résolu le problème des bases de données devenant surchargées et lentes. Aujourd'hui, ces caches distribués peuvent gérer la charge de millions de transactions de données effectuées par seconde, mais il y a un problème.
La plupart des applications au niveau de l'entreprise reposent sur des modifications apportées à certaines parties spécifiques de ces données. Ces applications doivent prendre des décisions commerciales critiques en fonction de ces changements et, comme la taille de ces données se chiffre en milliers de gigaoctets, la surveillance de changements spécifiques devient une tâche énorme.
Pour répondre à ce problème NCache, un cache distribué en mémoire apporte avec lui une fonctionnalité appelée Requête continue. Ce blog vous expliquera comment fonctionne la requête continue, comment vous pouvez le configurer dans NCache, et quels avantages vous en retirerez.
NCache Détails NCache Docs Télécharger NCache
Requête continue pour surveiller les changements dans NCache
La fonction de requête continue de NCache vous permet de suivre les modifications apportées à un ensemble de données sélectif au sein du cluster de cache distribué. Cet ensemble de données sélectif dans le cache est défini par SQL-like OQL (langage de requête d'objet) requêtes. Les modifications qui ont lieu dans cet ensemble de données sont propagées aux applications (qui ont enregistré des rappels pour les événements) sous la forme de Événements au niveau du cache.
Quelle que soit la taille de votre cluster de cache, vous ne serez informé que des modifications apportées à l'ensemble de données que vous avez défini puis enregistré dans le cache. C'est également ainsi que Continuous Query réalise le découplage des applications lorsque les données sont filtrées via des requêtes OQL. Ce découplage garantit que les applications ne se chevauchent pas.
Il convient également de noter que la requête continue elle-même ne modifie pas les données de votre application. La requête continue fournit à la place un mécanisme permettant de surveiller et de partager les données entre les applications lors de l'exécution via des événements. Le développeur vérifie ensuite ce que les applications font de ces données en enregistrant des rappels pour les événements de requête continue et en définissant leur logique métier.
Requête continue SQL dans NCache Notifications d'événement de cache
Configuration de la requête continue dans NCache
Il est facile de configurer la requête continue dans NCache. Il vous suffit de suivre un processus en deux étapes. Une fois que vous aurez suivi ces étapes, votre application pourra recevoir des notifications concernant l'ensemble de données défini par vous et agir en conséquence.
Ces deux étapes sont les suivantes :
Étape 1 : Enregistrez le rappel pour les événements
Vous devez enregistrer un rappel pour les événements au niveau du cache : ArticleAjouté, Article mis à jour, or ArticleSupprimé. Grâce à ces événements, vous définirez votre logique métier qui dictera ce que votre application doit faire si l'un de ces événements est déclenché.
Dans l'exemple de code suivant, un rappel est enregistré pour l'événement ItemAdded.
1 2 3 4 5 6 7 8 9 |
static void QueryItemCallBack(string key, CQEventArg arg) { switch (arg.EventType) { case EventType.ItemAdded: Console.WriteLine(“Item has been added”); break; } } |
Étape 2 : enregistrer la requête et les notifications
Une fois que vous avez enregistré les rappels pour les événements, vous devez créer une requête continue qui spécifiera les critères de l'ensemble de données résultant. Les événements se déclencheront en fonction de cette requête continue. Après cela, les rappels sont enregistrés avec la requête. Une fois cela fait, la requête est enregistrée sur le serveur de cache à l'aide de la S'inscrireCQ méthode.
L'exemple de code ci-dessous illustre comment tout cela se produit.
1 2 3 4 5 6 7 8 9 10 11 12 |
string query = "SELECT $VALUE$ FROM FQN.Product WHERE Category = ?"; var queryCommand = new QueryCommand(query); queryCommand.Parameters.Add("Category", "Beverages"); // Create Continuous Query var cQuery = new ContinuousQuery(queryCommand); // Item add notification cQuery.RegisterNotification(new QueryDataNotificationCallback(QueryItemCallBack), EventType.ItemAdded, EventDataFilter.None); cache.MessagingService.RegisterCQ(cQuery); |
Désinscrire la requête continue
NCache vous donne la possibilité de désinscrire les notifications de la requête continue lorsque vous n'en avez plus besoin. Cela se fait à l'aide du Annuler l'enregistrement de la notification méthode.
Dans l'exemple de code suivant, une notification d'événement est désinscrite d'une requête continue.
1 |
cQuery.UnRegisterNotification(new QueryDataNotificationCallback(QueryItemCallBack), EventType.ItemAdded); |
NCache vous donne également la possibilité de désinscrire la requête continue elle-même du cluster de cache. Il est inutile de le laisser fonctionner dans le cache lorsque vous n'en avez plus besoin car il consomme des ressources. Pour désinscrire une requête continue du cache, NCache vous donne la DésinscrireCQ méthode.
Dans l'exemple de code suivant, une requête continue est désinscrite du serveur de cache.
1 |
cache.MessagingService.UnRegisterCQ(cQuery); |
NCache: La meilleure solution qui existe
Lorsqu'il s'agit d'applications métier volumineuses et complexes, l'affinement des données est un énorme défi. Traitement de flux in NCache répond à ce défi en convertissant des données volumineuses et complexes en flux de données pour un traitement facile.
Une application populaire de Stream Processing est le Abonné de l'éditeur modèle de NCache. Cependant, cela s'accompagne des limitations suivantes :
- Les messages ne sont pas conservés par les applications une fois qu'ils sont livrés aux abonnés.
- La filtration des données a lieu côté client, ce qui rend l'architecture de l'application plus complexe.
La requête continue résout ces deux problèmes de la manière suivante :
- En conservant les données dans le cache même après le traitement.
- En filtrant les données via des instructions OQL assez simples côté serveur au lieu du côté client. Cela garantit une architecture d'application simple.
Requête continue Traitement de flux Messagerie Pub/Sub
Conclusion
NCache est un cache distribué extrêmement rapide et facile à mettre à l'échelle qui traite efficacement et efficacement les goulots d'étranglement de la base de données. Tout comme les requêtes continues, le traitement de flux et la messagerie Pub/Sub, NCache possède de nombreuses autres fonctionnalités riches et puissantes que vous devriez essayer. Ces fonctionnalités vous donnent des résultats à la fois quantitatifs et qualitatifs. Essayer NCache dès maintenant ! Réservez votre place aujourd'hui!