Das Aufkommen verteilter Caching-Systeme hat das Problem der Überlastung und Verzögerung von Datenbanken behoben. Heutzutage können diese verteilten Caches die Last von Millionen von Datentransaktionen pro Sekunde bewältigen, aber es gibt ein Problem.
Die meisten Anwendungen auf Unternehmensebene basieren auf Änderungen, die in bestimmten Teilen dieser Daten stattfinden. Diese Anwendungen müssen auf der Grundlage dieser Änderungen wichtige Geschäftsentscheidungen treffen. Da die Größe dieser Daten Tausende von Gigabyte beträgt, wird die Überwachung spezifischer Änderungen zu einer riesigen Aufgabe.
Um diesem Problem gerecht zu werden NCache, ein verteilter In-Memory-Cache bringt eine Funktion mit sich, die als bekannt ist Kontinuierliche Abfrage. In diesem Blog wird erklärt, wie Continuous Query funktioniert und wie Sie es konfigurieren können NCacheund welche Vorteile Sie daraus ziehen.
NCache Details NCache Docs Herunterladen NCache
Kontinuierliche Abfrage zur Überwachung von Änderungen in NCache
Die kontinuierliche Abfragefunktion von NCache ermöglicht es Ihnen, Änderungen zu verfolgen, die in einem ausgewählten Datensatz innerhalb des verteilten Cache-Clusters stattfinden. Dieser selektive Datensatz im Cache wird durch SQL-ähnliche Definition definiert OQL (Object Query Language) Abfragen. Die Änderungen, die in diesem Datensatz stattfinden, werden in Form von an die Anwendungen (die Rückrufe für Ereignisse registriert haben) weitergegeben Ereignisse auf Cache-Ebene.
Unabhängig davon, wie groß Ihr Cache-Cluster ist, werden Sie nur über die Änderungen benachrichtigt, die in dem von Ihnen definierten und dann im Cache registrierten Datensatz stattfinden. Auf diese Weise erreicht Continuous Query auch eine Anwendungsentkopplung, da Daten durch OQL-Abfragen herausgefiltert werden. Durch diese Entkopplung wird sichergestellt, dass sich Anwendungen nicht überschneiden.
Beachten Sie außerdem, dass Continuous Query selbst Ihre Anwendungsdaten nicht ändert. Continuous Query bietet stattdessen einen Mechanismus für die Überwachung und gemeinsame Nutzung von Daten zur Laufzeit durch Ereignisse zwischen Anwendungen. Der Entwickler stellt dann sicher, was Anwendungen mit diesen Daten tun, indem er Rückrufe für Continuous Query-Ereignisse registriert und ihre Geschäftslogik definiert.
Kontinuierliche Abfrage SQL ein NCache Cache-Ereignisbenachrichtigungen
Kontinuierliche Abfrage konfigurieren in NCache
Es ist einfach, Continuous Query zu konfigurieren NCache. Sie müssen lediglich einem zweistufigen Prozess folgen. Sobald Sie diese Schritte befolgen, kann Ihre Anwendung Benachrichtigungen zu dem von Ihnen definierten Datensatz empfangen und entsprechend handeln.
Diese beiden Schritte sind wie folgt:
Schritt 1: Registrieren Sie den Rückruf für Ereignisse
Sie müssen einen Rückruf für Ereignisse auf Cache-Ebene registrieren: ArtikelHinzugefügt, Artikelaktualisiert, or ArtikelEntfernt. Durch diese Ereignisse definieren Sie Ihre Geschäftslogik, die vorgibt, was Ihre Anwendung tun soll, wenn eines dieser Ereignisse ausgelöst wird.
Im folgenden Codebeispiel wird ein Rückruf für das Ereignis ItemAdded registriert.
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; } } |
Schritt 2: Abfrage und Benachrichtigungen registrieren
Nachdem Sie die Rückrufe für die Ereignisse registriert haben, müssen Sie eine kontinuierliche Abfrage erstellen, die die Kriterien für den resultierenden Datensatz angibt. Die Ereignisse werden basierend auf dieser kontinuierlichen Abfrage ausgelöst. Danach werden die Rückrufe mit der Abfrage registriert. Sobald dies erledigt ist, wird die Abfrage mithilfe von beim Cache-Server registriert RegistrierenCQ Methode.
Das folgende Codebeispiel zeigt, wie das alles passiert.
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); |
Kontinuierliche Abfrage abmelden
NCache bietet Ihnen die Möglichkeit, Benachrichtigungen von der kontinuierlichen Abfrage abzumelden, wenn Sie sie nicht mehr benötigen. Dies geschieht mit dem UnRegisterNotification Methode.
Im folgenden Codebeispiel wird die Registrierung einer Ereignisbenachrichtigung bei einer kontinuierlichen Abfrage aufgehoben.
1 |
cQuery.UnRegisterNotification(new QueryDataNotificationCallback(QueryItemCallBack), EventType.ItemAdded); |
NCache bietet Ihnen außerdem die Möglichkeit, die kontinuierliche Abfrage selbst vom Cache-Cluster abzumelden. Es ist nicht notwendig, es im Cache laufen zu lassen, wenn Sie es nicht mehr benötigen, da es Ressourcen verbraucht. Um die Registrierung einer kontinuierlichen Abfrage aus dem Cache aufzuheben, NCache gibt Ihnen das UnRegisterCQ Methode.
Im folgenden Codebeispiel wird die Registrierung einer kontinuierlichen Abfrage vom Cache-Server abgemeldet.
1 |
cache.MessagingService.UnRegisterCQ(cQuery); |
NCache: Die beste Lösung da draußen
Bei großen und komplexen Geschäftsanwendungen ist die Datenveredelung eine große Herausforderung. Stream Processing in NCache stellt sich dieser Herausforderung, indem es große und komplexe Daten zur einfachen Verarbeitung in Datenströme umwandelt.
Eine beliebte Anwendung der Stream-Verarbeitung ist die Herausgeber-Abonnent Modell von NCache. Dies bringt jedoch folgende Einschränkungen mit sich:
- Nachrichten werden von den Anwendungen nicht dauerhaft gespeichert, sobald sie an die Abonnenten übermittelt werden.
- Die Datenfilterung findet auf der Client-Seite statt, wodurch die Anwendungsarchitektur komplexer wird.
Continuous Query geht diese beiden Probleme auf folgende Weise an:
- Indem Daten auch nach der Verarbeitung im Cache gespeichert bleiben.
- Durch das Filtern von Daten durch relativ einfache OQL-Anweisungen auf der Serverseite statt auf der Clientseite. Dies gewährleistet eine einfache Anwendungsarchitektur.
Kontinuierliche Abfrage Stream Processing Pub/Sub-Messaging
Zusammenfassung
NCache ist ein extrem schneller, einfach zu skalierender, verteilter Cache, der Datenbankengpässe effizient und effektiv behebt. Genau wie Continuous Query, Stream Processing und Pub/Sub Messaging, NCache verfügt über viele weitere umfangreiche und leistungsstarke Funktionen, die Sie ausprobieren sollten. Diese Funktionen liefern Ihnen sowohl quantitative als auch qualitative Ergebnisse. Versuchen NCache jetzt!