Panoramica delle query continue
NCache fornisce query continue per il monitoraggio in fase di esecuzione e la condivisione di dati relativi a set di dati osservabili. Ciò consente alle applicazioni di ricevere una notifica di tutte le modifiche che si verificano all'interno del set di risultati interrogati nella cache.
Ad esempio, un'applicazione web di borsa ha molti clienti interessati ai valori delle azioni delle società in cui detengono azioni. Tale applicazione deve riflettere il cambiamento molto frequente nella sua visione poiché i valori delle azioni cambiano rapidamente per qualsiasi azienda. In questo caso, le query continue tornano utili, poiché invece di mostrare i valori azionari di tutte le società, puoi interrogare la cache solo per le società specifiche a cui i clienti sono interessati. Pertanto, ogni volta che il set di risultati viene modificato, il cliente verrà informato esso e la vista del cliente verranno aggiornati con gli ultimi valori azionari.
Tipi di eventi
Le modifiche nel set di risultati di una query possono essere attivate dalle seguenti operazioni:
Aggiungi: l'aggiunta di un elemento nella cache o l'aggiornamento di un elemento esistente può aggiungere l'elemento in qualsiasi query.
Aggiornanento: aggiornamento di qualsiasi elemento della cache esistente ma rimane nel set di risultati della query.
Rimuovere: rimozione di un elemento dalla cache o aggiornamento di qualsiasi elemento esistente nella cache in modo tale da causare la rimozione dell'elemento dal set di risultati della query. Gli elementi possono anche essere rimossi a causa di scadenza, eliminazione, modifica delle dipendenze o rimozione esplicita dell'API.
Supponiamo che la cache abbia un set di risultati per la query "SELECT * FROM FQN.Product WHERE Category = 'Beverages'"
.
"Key1" esiste nella cache per seguire Prodotto oggetto di classe:
var product = new Product
{
ProductID = 1001,
ProductName = "Coffee",
UnitsAvailable = 55,
Category = "Food Items"
};
Questo elemento esiste nella cache ma non ancora nel set di risultati, poiché non corrisponde ai criteri. Pertanto, l'oggetto è ora aggiornato e Categoria è cambiato in "Le bevande". Ciò significa che soddisfa i criteri ed è ora aggiunto al set di risultati. Questo attiverà il
ItemAdded
Tipo di evento.
L'oggetto è ora aggiornato per modificare il Nome del prodotto APPREZZIAMO "Caffè" a "Caffè ghiacciato". Ciò significa che l'oggetto è stato modificato in modo tale che i criteri non siano influenzati. Pertanto, rimane nel set di risultati e attiva il file
ItemUpdated
Tipo di evento.
L'oggetto è ora aggiornato di nuovo e il Categoria il valore viene modificato da "Le bevande" a "Bevande fredde". Ciò riflette il fatto che i criteri della query non vengono più soddisfatti, quindi "Chiave1" deve essere rimossa dal set di risultati ma non dalla cache. Ciò innesca il
ItemRemoved
Tipo di evento.
Filtri dei dati degli eventi
EventDataFilter è specificato per quantificare la quantità di informazioni restituite all'esecuzione di un evento. Gli eventi registrati forniscono quindi all'utente le informazioni basate su questi filtri di dati.
Nessuna
Questo filtro restituisce solo le chiavi interessate dall'operazione nella notifica dell'evento. Viene utilizzato se l'applicazione è interessata solo a sapere quali chiavi sono state interessate, ad esempio, un sito di e-commerce desidera sapere quali chiavi prodotto sono state aggiunte e non i valori stessi.
Metadati
Con questo filtro, le chiavi interessate insieme ai metadati degli elementi della cache vengono restituiti nella notifica dell'evento. I metadati restituiti includono i gruppi, la priorità dell'elemento della cache e il valore di scadenza associato all'elemento. Ad esempio, un'applicazione desidera sapere quali chiavi sono state rimosse dalla cache e a quali gruppi appartenevano.
Dati con metadati
Questo filtro restituisce le chiavi insieme agli elementi memorizzati nella cache e ai metadati associati. Questo può essere utilizzato nei casi in cui un'applicazione bancaria potrebbe richiedere di conoscere quali informazioni sul cliente sono state modificate. Pertanto, può registrare le notifiche per le operazioni di aggiornamento degli elementi con questo filtro in modo che anche la chiave dell'elemento e l'elemento modificato vengano restituiti all'utente una volta attivato l'evento. L'uso di questo filtro salva il viaggio di recupero degli elementi di nuovo con il Get
API. Tuttavia, questo filtro deve essere utilizzato laddove necessario poiché si tratta di un viaggio costoso in rete.
avvertimento
EventDataFilter
deve essere impostato con cura per evitare un consumo non necessario della larghezza di banda della rete.
Condivisione dei dati per strutture di dati portatili
Potresti avere un'applicazione con client .NET e Java. Abilitando il condivisione dei dati funzione nella cache in cluster, puoi indicizzare gli stessi oggetti per entrambi i client anche con la stessa query. Le notifiche verranno inviate a ciascun client indipendentemente da Java o .NET per gli elementi memorizzati nella cache aggiunti, aggiornati o rimossi da entrambi i client in qualsiasi set di risultati di query registrati.
Costi operativi
Sebbene la query continua sia molto utile per creare applicazioni in tempo reale con dati operativi in forte evoluzione, è necessaria un'elaborazione aggiuntiva per il monitoraggio e la notifica ai client che consuma risorse. I client della cache non sono interessati poiché questo processo è asincrono. Pertanto, per utilizzare in modo efficiente questa funzionalità, se le tue applicazioni non richiedono il tracciamento di alcun set di risultati di query, annulla la registrazione delle notifiche e annulla anche la registrazione della query dalla cache.
Vedere anche
Utilizzo della query continua
Riferimento SQL per NCache
Notifiche di eventi nella cache
Messaggistica Pub/Sub