Oggi, la cache distribuita è ampiamente utilizzata per ottenere scalabilità e prestazioni in applicazioni ad alto traffico. La cache distribuita scarica i server di database servendo i dati memorizzati nella cache dall'archivio in memoria. Inoltre, poche cache distribuite forniscono anche funzionalità di query simili a SQL, che puoi facilmente interrogare sulla tua cache distribuita nel modo in cui interroghi il tuo database, ad es. “SELECT employee WHERE employee.city=‘New York’”
Prima di tutto, la maggior parte delle cache distribuite non fornisce nemmeno Funzionalità di query simili a SQL. Anche alcuni che forniscono questo hanno un supporto molto limitato per esso. Forniscono solo la ricerca della cache distribuita in base a criteri semplici. Considerando che ci sono diversi scenari in cui devi trovare il risultato in base a funzioni aggregate, ad es “SELECT COUNT(employee) WHERE salary > 1000”
or “SELECT SUM(salary) WHERE employee.city = ‘New York’”
. Per ottenere ciò, devi prima interrogare la cache distribuita e quindi calcolare la funzione di aggregazione sui dati della cache recuperati.
NCache Dettagli NCache Docs Query SQL in NCache Docs
Perché usare NCache per eseguire query sulla cache distribuita utilizzando funzioni di aggregazione
Questo approccio ha due grossi inconvenienti. Il primo è che devi eseguire query sulla cache distribuita, che comporta il recupero di tutti i dati dalla cache distribuita al client cache. Questi dati possono variare da MB a GB e questa operazione diventa più costosa quando si paga anche per la larghezza di banda di rete consumata. Inoltre, per lo più, questi dati non sono necessari dopo aver terminato i calcoli delle funzioni aggregate.
Il secondo inconveniente è che comporta una programmazione personalizzata per il calcolo della funzione aggregata. Ciò aggiunge ore uomo extra e tuttavia la maggior parte degli scenari complessi non può essere coperta. Sarebbe molto più bello se potessi continuare a sviluppare l'applicazione per lo scopo in cui è stata creata e non preoccuparti di progettare e implementare queste funzionalità extra da solo.
Questi sono i motivi per cui NCache offre la flessibilità di eseguire query sulla cache distribuita utilizzando funzioni aggregate come COUNT, SUM, MIN, MAX e AVG come parte del relativo Object Query Language (OQL). Usando NCache Funzioni di aggregazione OQL, puoi facilmente eseguire i calcoli aggregati richiesti all'interno del dominio della cache distribuita. Questo approccio non solo evita il traffico di rete, ma fornisce anche prestazioni molto migliori in termini di calcolo delle funzioni aggregate. Questo perché tutte le selezioni e i calcoli vengono eseguiti all'interno del dominio della cache distribuita e non sono coinvolti viaggi di rete.
Ecco l'esempio di codice da cercare NCache utilizzando query aggregate 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); ... } |
Per un tempo di esecuzione della query più ridotto, NCache esegue la query simile a SQL in parallelo distribuendola a tutti i server cache proprio come il meccanismo di riduzione della mappa. Inoltre, puoi usare NCache Le query aggregate OQL nelle applicazioni .NET e Java.
Conclusione!
In sintesi, NCache fornisce non solo la scalabilità e le prestazioni, ma anche la flessibilità della ricerca nella cache distribuita utilizzando la funzione di aggregazione simile a SQL.