Effizientes Datenmanagement erfordert die Fähigkeit, schnell nach Anwendungsdaten anhand bestimmter Attribute zu suchen. Mit zunehmendem Datenvolumen wird dieser Bedarf noch wichtiger. Typischerweise verfügen Datenbanken bereits über Felder, die die Kategorisierung von Daten erleichtern, und diese Felder können beim Zwischenspeichern von Daten als Indizes verwendet werden. Es kann jedoch Fälle geben, in denen Sie Daten basierend auf Attributen gruppieren möchten, die nicht im Cache vorhanden sind, z. B. Tags oder andere benutzerdefinierte Attribute.
Mit der NCachekönnen Sie Anwendungsdaten nicht nur basierend auf benutzerdefinierten Attributen kategorisieren, sondern Sie können auch Suchen basierend auf diesen Attributen durchführen. Neben der traditionellen Indizierung NCache bietet die Möglichkeit, Daten mit zu kategorisieren Groups, Schlüsselwörter und Benannte Tags, was eine größere Flexibilität bei der Datenkategorisierung und dem Abruf ermöglicht.
Cache-Datenkategorisierung über Gruppen
Für eine Sammlung von Elementen, die zwischengespeichert wurden und durch einen Gruppennamen identifiziert werden können, können Sie eine Gruppe erstellen. Dieser Name kann dabei helfen, jedes Element abzurufen, das zu einer Gruppe gehört. Sie können beispielsweise eine Gruppe mit allen Produkten erstellen, die einem bestimmten Kunden oder einer bestimmten Produktkategorie zugeordnet sind. Einfach den Namen nennen wird bewirken NCache um alle damit verknüpften zwischengespeicherten Elemente zurückzugeben. Bitte beachten Sie, dass einer einzelnen Gruppe nur ein einzelnes Element zugeordnet werden kann. Das folgende Beispiel zeigt, wie Kunden aus einer anderen Region (in diesem Fall Ostküste) in einem Online-Shop gruppiert werden.
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); } |
Sie können SQL-Abfragen verwenden, um mit dem Schlüsselwort $Group$ nach Cache-Objekten zu suchen, die in Gruppen enthalten sind. Das folgende Codebeispiel zeigt, wie Sie eine SQL-Abfrage verwenden, um alle Kunden aus einer bestimmten Region anzuzeigen – in diesem Fall der Westküste.
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"); } |
Gruppen steigern nicht nur die Effizienz, sondern machen es den Benutzern auch einfach abrufen or löschen Daten basierend auf diesen logischen Kategorien, die die Skalierbarkeit Ihrer Anwendung erhöhen. Darüber hinaus können Gruppen häufig verwendete Daten zwischenspeichern, die bestimmten Suchkriterien entsprechen, wodurch die Kosten für wiederholte Datenbanksuchen vermieden werden.
Cache-Datenkategorisierung über Tags
Schlüsselwörter in NCache bieten eine Möglichkeit, zwischengespeicherte Elemente mithilfe mehrerer Tags zu kategorisieren. Einem zwischengespeicherten Objekt können ein oder mehrere Tags zugewiesen werden, die zum Abrufen des Elements verwendet werden können. Sie können Artikel beispielsweise nach Region, Sprache oder Produktmerkmalen kategorisieren. Der Aufruf des Namens eines Tags bewirkt NCache um alle Elemente zurückzugeben, die dieses Tag haben und zwischengespeichert sind. Mithilfe von Tags können Sie Metadaten mit Ihren zwischengespeicherten Objekten verknüpfen und so die Suche und Datenbearbeitung vereinfachen. Das folgende Beispiel zeigt, wie ein Kunde, der sich aus der Region Ostküste angemeldet hat, dem Cache hinzugefügt wird.
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 |
Auf ähnliche Weise können Sie ein Element mit einem bestimmten Tag-Schlüsselwort $Tag$ abfragen. Die SQL-Abfrage im Beispiel unten gibt alle mit dem Tag verknüpften Elemente zurück VIP-Kunden.
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"); } |
Die Verwendung von Tags gibt dem Benutzer ein hohes Maß an Relevanz für jeden spezifischen Typ. Um mehr über die anderen von Tags angebotenen CRUD-Operationen zu erfahren, lesen Sie bitte die NCache Dokumentation.
Cache-Datenkategorisierung über benannte Tags
Einem zwischengespeicherten Objekt können über eine Liste mehrere benannte Tags gegeben werden, die dann zum Abrufen des Elements verwendet werden können. Jedes benannte Tag hat zwei Parameter: einen Schlüssel, der eine Zeichenfolge ist, die den Namen des Tags darstellt, und einen Wert, der ein beliebiger primitiver Typ ist. Beispielsweise können Sie Artikeln basierend auf ihrer Preisspanne oder Verfügbarkeit benannte Tags zuweisen. Der Aufruf des Tag-Namens und -Werts führt dazu NCache um alle gespeicherten Elemente mit dem angegebenen benannten Tag zurückzugeben, wenn Sie alle Elemente mit diesem Tag abrufen müssen.
Ähnlich wie bei Gruppen und Tags ist dies möglich Gegenstände abrufen aus dem Cache mit Named Tags unter Verwendung von Objektabfragen. Wenn bestimmte benannte Tags bereits zu Elementen im Cache hinzugefügt wurden, NCache bietet dem Benutzer die Möglichkeit, diese benannten Tags zu aktualisieren. Verwenden NCacheder benutzerdefinierten Klasse von , dh CacheItem, können Sie Daten zum Cache hinzufügen. Als Eigentum der Benannte Tags -Klasse ermöglicht CacheItem Ihnen zusätzlich, zusätzliche Spezifikationen in Bezug auf ein Element anzugeben. Im Beispiel unten, einem Kunden mit VIP-Mitgliedschaft (VIP-Mitgliedern wird 10 % Rabatt angeboten), werden die benannten Tags festgelegt, indem sie als Eigenschaft von CacheItem zugewiesen werden.
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); |
Wenn ein Artikel ist mit den benannten Tags zum Cache hinzugefügt, können Sie es einfach über die SQL-Abfrage abrufen. Im folgenden Beispiel möchte der Benutzer alle Kunden sehen, die einen VIP-Mitgliedschaftsrabatt von 12 % haben.
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"); } |
Zusammenfassung
Deutlich NCache bietet eine Vielzahl leistungsstarker Funktionen für das effektive Zwischenspeichern von Daten und das Durchsuchen von Gruppen, Tags und benannten Tags, um zwischengespeicherte Daten anhand bestimmter Attribute zu kategorisieren und mithilfe dieser abzurufen NCache APIs oder SQL-ähnliche Abfragen. Diese Funktionen machen sie zu einer noch überzeugenderen Option für das Caching, da sie einen schnelleren Datenzugriff, eine geringere Datenbanklast und eine höhere Anwendungsleistung ermöglichen. Nutzen Sie diese leistungsstarken Funktionen, die von angeboten werden NCache und starten Sie noch heute Ihre kostenlose Testversion!