Una gestione efficiente dei dati richiede la possibilità di cercare rapidamente i dati dell'applicazione in base ad attributi specifici. Man mano che il volume dei dati cresce, questa esigenza diventa ancora più cruciale. In genere, i database dispongono già di campi che facilitano la categorizzazione dei dati e questi campi possono essere utilizzati come indici durante la memorizzazione nella cache dei dati. Tuttavia, potrebbero esserci casi in cui si desidera raggruppare i dati in base ad attributi che non sono presenti nella cache, ad esempio tag o altri attributi personalizzati.
Con NCache, non solo puoi classificare i dati dell'applicazione in base agli attributi personalizzati, ma puoi anche eseguire ricerche basate su questi attributi. Oltre all'indicizzazione tradizionale, NCache offre la possibilità di classificare i dati utilizzando ATTIVITA' E GRUPPI, tage Tag con nome, consentendo una maggiore flessibilità nella categorizzazione e nel recupero dei dati.
Categorizzazione dei dati nella cache tramite gruppi
Per una raccolta di elementi che sono stati memorizzati nella cache e possono essere identificati da un nome di gruppo, è possibile creare un gruppo. Questo nome può aiutare a recuperare qualsiasi elemento che appartiene a un gruppo. Ad esempio, puoi creare un Gruppo con tutti i prodotti associati a un determinato cliente oa una determinata categoria di prodotti. Semplicemente chiamando il nome causerà NCache per restituire tutti gli elementi memorizzati nella cache ad esso associati. Si prega di notare che può esserci un solo elemento associato a un singolo gruppo. L'esempio fornito di seguito mostra come i clienti di una regione diversa (in questo caso la costa orientale) vengono raggruppati in un negozio online.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
// Pre-conditions: Cache is already connected. // Create a unique cache key for this customer. string customerKey = $"Customer:ALFKI"; // Get customer from cache Customer customer = cache.Get<Customer>(customerKey); // Get customer from database if not found in cache if (customer == null) { customer = FetchCustomerFromDB("ALFKI"); // Create a new CacheItem var cacheItem = new CacheItem(customer); // Specify the group cacheItem.Group = "East Coast Customers"; // Add customer object to cache with group cache.Add(customerKey, cacheItem); } |
È possibile utilizzare le query SQL per cercare gli oggetti della cache contenuti nei gruppi utilizzando la parola chiave $Group$. L'esempio di codice che segue mostra come utilizzare una query SQL per visualizzare tutti i clienti di una particolare regione, in questo caso la costa occidentale.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
// Pre-conditions: Items with groups exist in the cache // Custom class is query indexed through the NCache Manager or config.ncconf // Create an SQL Query with the specified criteria // Make sure to use the Fully Qualified Name (FQN) string query = "SELECT CustomerID,ContactName FROM Alachisoft.NCache.Samples.Data.Customer WHERE $Group$ = ? "; // Use QueryCommand for query execution var queryCommand = new QueryCommand(query); // Providing parameters for query queryCommand.Parameters.Add("$Group$", "West Coast Customers"); // Executing the Query ICacheReader reader = cache.SearchService.ExecuteReader(queryCommand); // Read results if result set is not empty if (reader.FieldCount > 0) { while (reader.Read()) { // Get the value of the result set string customerID = reader.GetValue<string>("CustomerID"); string customerName = reader.GetValue<string>("ContactName"); Console.WriteLine($"Customer '{customerName}' having ID '{customerID}' belongs to West Coast."); } } else { Console.WriteLine($"No customers from West Coast found"); } |
Oltre ad aumentare l'efficienza, Gruppi rende semplice per gli utenti richiamare or delete dati basati su queste categorie logiche che aumentano la scalabilità della tua applicazione. Inoltre, Gruppi può memorizzare nella cache i dati di uso comune che corrispondono a determinati criteri di ricerca, evitando il costo dell'esecuzione ripetuta di ricerche nel database.
Categorizzazione dei dati nella cache tramite tag
tag in NCache fornire un modo per classificare gli elementi memorizzati nella cache utilizzando più tag. A un oggetto memorizzato nella cache possono essere assegnati uno o più tag, che possono essere utilizzati per recuperare l'elemento. Ad esempio, puoi classificare gli articoli in base alla regione, alla lingua o alle caratteristiche del prodotto. Chiamare il nome di un tag causerà NCache per restituire tutti gli elementi che hanno quel tag e sono memorizzati nella cache. I tag ti consentono di collegare i metadati agli oggetti memorizzati nella cache, facilitando la ricerca e la manipolazione dei dati. L'esempio seguente mostra come verrà aggiunto alla cache un cliente che ha effettuato l'accesso dalla regione East Coast.
1 2 3 4 5 6 7 8 9 10 11 |
// Create an array of tags assigned to customer Tag[] tags = new Tag[2]; tags[0] = new Tag("East Coast Customers"); tags[1] = new Tag("VIP Customers"); // Setting the tag property of the cacheItem cacheItem.Tags = tags; cache.Add(customerKey, cacheItem); // CacheItem added successfully |
Allo stesso modo, puoi interrogare un elemento con una parola chiave tag specifica $Tag$. La query SQL nell'esempio seguente restituisce ogni elemento collegato al tag Clienti VIP.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
// Create a query for search string query = "Select CustomerID,ContactName FROM Alachisoft.NCache.Samples.Data.Customer WHERE $Tag$ = ?"; // Use QueryCommand for query execution var queryCommand = new QueryCommand(query); queryCommand.Parameters.Add("$Tag$", "VIP Customers"); // Executing Query ICacheReader reader = cache.SearchService.ExecuteReader(queryCommand); // Read results if result set is not empty if (reader.FieldCount > 0) { while (reader.Read()) { // Get the value of the result set string customerID = reader.GetValue<string> ("CustomerID"); string contactName = reader.GetValue<string>("ContactName"); Console.WriteLine($"Customer '{contactName}' having ID '{customerID}' is a VIP Customer."); } } else { Console.WriteLine($"No VIP Customers found"); } |
L'uso dei tag offre all'utente un alto livello di pertinenza con ogni tipo specifico. Per conoscere le altre operazioni CRUD offerte dai Tag, fare riferimento al NCache documentazione.
Categorizzazione dei dati nella cache tramite tag con nome
A un oggetto memorizzato nella cache possono essere assegnati più tag con nome, tramite un elenco, che possono quindi essere utilizzati per recuperare l'elemento. Ogni tag con nome ha due parametri: una chiave che è una stringa che rappresenta il nome del tag e un valore che è qualsiasi tipo primitivo. Ad esempio, puoi assegnare tag con nome agli articoli in base alla fascia di prezzo o alla disponibilità. Chiamare il nome e il valore del tag causerà NCache per restituire tutti gli elementi archiviati che hanno il tag denominato specificato quando è necessario ottenere tutti gli elementi con quel tag.
Simile a gruppi e tag, puoi recuperare gli oggetti dalla cache con i tag denominati utilizzando query di oggetti. Quando alcuni tag con nome sono già stati aggiunti agli elementi nella cache, NCache offre all'utente l'opportunità di aggiornare quei tag denominati. Usando NCacheclasse personalizzata, ovvero CacheItem, puoi aggiungere dati alla cache. In quanto proprietà del NamedTag class, CacheItem consente inoltre di specificare specifiche aggiuntive relative a un articolo. Nell'esempio riportato di seguito, un cliente con abbonamento VIP (ai membri VIP viene offerto uno sconto del 10%), i Named Tag vengono impostati assegnandoli come proprietà di CacheItem.
1 2 3 4 5 6 7 8 9 |
// Creating a Named Tags Dictionary var namedTags = new NamedTagsDictionary(); // Adding Named Tags to the Dictionary where Keys are the names of the tags as string type and Values are of primitive type namedTags.Add("VIP_Membership_Discount", 0.10); // Setting the named tag property of the cacheItem cacheItem.NamedTags = namedTags; cache.Add(customerKey, cacheItem); |
Quando un oggetto è aggiunto alla cache con i Named Tags, puoi recuperarlo facilmente tramite la query SQL. Nell'esempio seguente, l'utente desidera vedere tutti i clienti che hanno uno sconto del 12% sull'abbonamento VIP.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
// Create an SQL Query with the specified criteria string query = "SELECT CustomerID,ContactName FROM Alachisoft.NCache.Samples.Data.Customer WHERE VIP_Membership_Discount = 0.12 "; // Use QueryCommand for query execution var queryCommand = new QueryCommand(query); // Executing the Query ICacheReader reader = cache.SearchService.ExecuteReader(queryCommand); // Read results if the result set is not empty if (reader.FieldCount > 0) { while (reader.Read()) { // Get the value of the result set string customerID = reader.GetValue<string>("CustomerID"); string customerName = reader.GetValue<string>("ContactName"); Console.WriteLine($"Customer '{customerName}' with ID '{customerID}' has VIP membership discount."); } } else { Console.WriteLine($"No VIP members found"); } |
Conclusione
chiaramente NCache offre una varietà di potenti funzionalità per un'efficace memorizzazione nella cache dei dati e la ricerca tramite gruppi, tag e tag denominati per classificare i dati memorizzati nella cache in base ad attributi specifici e recuperarli utilizzando NCache API o query simili a SQL. Queste funzionalità li rendono un'opzione ancora più convincente per la memorizzazione nella cache poiché consentono un accesso ai dati più rapido, un carico del database ridotto e prestazioni dell'applicazione migliorate. Approfitta di queste potenti funzionalità offerte da NCache e inizia oggi la tua prova gratuita!