Hast du davon gehört eBay Verwendung von MongoDB als ihre primäre Datenbank? Warum sollte ein multinationales E-Commerce-Unternehmen wie eBay MongoDB und kein traditionelles RDBMS verwenden? Dies liegt daran, dass MongoDB wegen seines verteilten Schlüsselwertspeichers und seiner Dokumentorientierung ein heißes Thema unter den Entwicklern war NoSQL Merkmale. Und wenn eBay es verwendet, bin ich sicher, dass Ihre E-Commerce-Anwendung auch MongoDB verwendet.
Vergiss Ebay. Nehmen wir Ihre E-Commerce-Anwendung und analysieren ihre grundlegenden Daten- und Leistungsanforderungen. Jetzt in Ihrem .NET/.NET Core app, hatten Sie jemals das Gefühl, dass die Leistung beeinträchtigt wird, weil Sie nur begrenzte Anfragen pro Sekunde haben? Haben Sie die Zeitverzögerung bei Lese-/Schreibaufrufen an Ihre festplattenbasierte Datenbank bemerkt? Hatten Sie das Gefühl, dass MongoDB trotz all seiner wunderbaren Funktionen immer noch eine bestimmte Verbindung fehlt, die Ihrer Anwendung Ruhm einbringen könnte?
Hier, mein Freund, stupst dich jemand (ich) an (nur virtuell) und stelle dich vor NCache in Ihrem Leben. NCache ist ein speicherresidentes, verteiltes und hoch skalierbar Cache, der immer direkt neben Ihrer Anwendung bleibt; Verbesserung der Transaktionsrate und damit die perfekte Lösung für alle Ihre Caching-Anforderungen. Lassen Sie uns einen kleinen Rundgang machen, wie Sie das Beste aus Ihrer Anwendung herausholen können NCache.
NCache Details Cache mit Datenbank synchronisieren NCache NoSql Datenspeicher
Die richtigen NCache als verteilter Cache mit MongoDB
Bei einer stark transaktionsorientierten E-Commerce-Anwendung wie Ihrer, die in einer Umgebung mit mehreren Servern ausgeführt wird, können Sie es sich nicht leisten, einen einzigen Server-Cache zu haben, der alle Ihre Datenanforderungen verwaltet. Je größer die Belastung Ihrer Anwendung wird, desto größer ist die Wahrscheinlichkeit, dass Ihr Cache an den Anforderungen erstickt.
Während der Ausführung Ihrer Anwendung kann es vorkommen, dass die Transaktionslast Ihrer Anwendung zunimmt und die anfänglich eingerichtete Anzahl von Cache-Servern nicht ausreicht, um die eingehenden Anforderungen zu bewältigen. Das ist wo NCache skaliert Ihre Anwendung nahtlos indem du es dir erlaubst Fügen Sie zur Laufzeit zusätzliche Cache-Server hinzu So wird der Cache nie zum Engpass für Ihre Anwendung. Um eine optimale Leistung in Ihrem .NET/.NET Core Anwendung.
Um sich ein genaues Bild davon zu machen, wo genau NCache sich in Ihrem Anwendungsstapel befindet, werfen wir einen Blick auf die grundlegende Architektur.
MongoDB gilt im Vergleich zu relationalen Datenbanken als skalierbarer, aber die Tatsache, dass es sich um einen festplattenbasierten Datenspeicher handelt, bleibt ein Nachteil. Also verwenden NCache bietet Ihnen speicherbasiertes Datencaching, während Sie sich entweder innerhalb oder außerhalb des VNET Ihrer App befinden (vollständig Ihr Anruf). Dadurch werden Ihre Anwendungsprozesse viel schneller als gewünscht, wodurch die Latenz verringert wird.
Gibt Ihnen das nicht mehr Gründe für die Verwendung NCache zum Zwischenspeichern der Daten Ihrer Datenbank? Lassen Sie uns hier nicht aufhören und ein wenig tiefer in das eintauchen, was NCache bringt an den Tisch.
NCache Details Cache mit Datenbank synchronisieren NCache NoSql Datenspeicher
So cachen Sie mit MongoDB
Caching mit MongoDB ist extrem einfach. Ob Sie nach bestimmten Daten im Cache suchen möchten, oder die Datenbank selbst abfragen, um die erforderlichen Daten abzurufen, oder einfach nur Hinzufügen neuer Daten zur Datenbank, es kann alles mit größter Leichtigkeit durchgeführt werden NCache.
Das folgende Snippet erläutert, wie Sie all diese oben genannten Vorgänge in Ihrer E-Commerce-Anwendung ausführen. Hier suchen wir einen sehr treuen und intelligenten Kunden von Ihnen, Einstein, im Cache auszuführen CRUD-Operationen darauf. Und falls der Cache den gewünschten Kunden nicht hat, durchsuchen wir die Datenbank danach. Nach dem Abrufen fügen wir diesen Kunden mit einem zum Cache hinzu Ablauf von 5 Minuten. Dies geschieht, damit die cache bietet Ihnen niemals veraltete Daten. Daher die Sicherstellung der Datenkonsistenz.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
var customer = cache.Get("Customer:CustomerID:EINSTEIN"); if (customer == null) { MongoClient mongoClient = new MongoClient("mongodb://20.200.20.10:27017"); IMongoDatabase mongoDatabase = mongoClient.GetDatabase("DemoDatabase"); IMongoCollection <Customer> mongoCollection = mongoDatabase.GetCollection<Customer>("Customers"); response = mongoCollection.FindAsync<Customer>(x => x.Id == "EINSTEIN").GetAwaiter().GetResult().ToList<Customer>(); customer = (Customer)response.FirstOrDefault(); var expiration = new Expiration(ExpirationType.Absolute, TimeSpan.FromMinutes(5)); var cacheItem = new CacheItem(customer) { Expiration = expiration }; cache.Insert($"Customer:CustomerID:{customer.Id}", cacheItem); } |
NCache Details Cache mit Datenbank synchronisieren NCache NoSql Datenspeicher
Caching-Sammlung von Datenbankelementen
Der größte Vorteil der Einführung NCache zu Ihrer Anwendung und der Datenbank ist, dass die Fahrten zur Datenbank speziell für Leseoperationen erheblich reduzieren, wodurch unnötige Netzwerkaufrufe reduziert und die Leistung verbessert werden. Der einzige Grund für diese logische Platzierung ist, dass Sie jedes Mal, wenn Sie Elemente aus der Datenbank abrufen und Operationen darauf ausführen möchten, dies alles in der Caching-Ebene tun können.
Um das zu erreichen, NCache ermöglicht es Ihnen, eine MongoDB-Sammlung als Cache-Element oder ein einzelnes Element als ein Cache-Element. Sehen wir uns an, wie Elemente als Schlüssel-Wert-Paare zwischengespeichert werden NCache von MongoDB.
Cache-Sammlung als einzelnes Element
Caching einer Sammlung von Elementen als einzelnes CacheItem ist praktisch, wenn die Artikel ähnlich sind oder unter dieselbe Kategorie fallen. Nehmen wir zum Beispiel an, dass die Datenbank Ihrer Anwendung eine Liste mit weltweit verteilten Kunden enthält, Sie aber diejenigen abfragen möchten, die in Deutschland leben (weil Ihr Lieblings-Einstein aus Deutschland stammt). Sie möchten, dass diese Abfrage alle diese Kunden in Form einer einzelnen Liste zurückgibt, damit diese Liste dem Cache hinzugefügt werden kann. So machst du das:
1 2 3 4 5 6 7 |
var customersInGermany = mongoCollection.FindAsync(x => x.Country == 'Germany').GetAwaiter().GetResult().ToList(); if(customersInGermany > 0) { var expiration = new Expiration(ExpirationType.Absolute, TimeSpan.FromMinutes(5)); var cacheItem = new CacheItem(customersInGermany) { Expiration = expiration }; cache.Insert("CustomersInGernamy", cacheItem); } |
Sammelobjekte separat zwischenspeichern
Falls Sie jedem Artikel zusätzliche Informationen zuordnen möchten, z Tags, Namensschilder und Gruppen Um den Datenabruf zu vereinfachen, sollten Sie jedes Element separat zwischenspeichern, indem Sie eindeutige Kennungen verwenden. Auf diese Weise können Sie mehrere Elemente basierend auf einem logischen Tag abrufen, z. B. alle Kunden mit Wohnsitz in Deutschland.
Um alle in Deutschland lebenden Kunden zwischenzuspeichern, können Sie das Tag hinzufügen Customer:Country:Germany
mit dem Datensatz der Abfrage. Hier ist ein Beispiel dafür, wie alle deutschen Kunden mit dem Tag „Deutschland“ zwischengespeichert werden.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
var customersInGermany = mongoCollection.FindAsync(x => x.Country == 'Germany').GetAwaiter().GetResult().ToList(); if(customersInGermany > 0) { var expiration = new Expiration(ExpirationType.Absolute, TimeSpan.FromMinutes(5)); foreach (var customer in customersInGermany) { cacheItem = new CacheItem(customer) { Tags = new[] { new Tag("Customer:Country:Germany") }, Expiration = expiration }; cache.Add($"Customer:CustomerID:{customer.Id}", cacheItem); } } |
Bis zu diesem Punkt haben wir ausführlich besprochen, wie Sie mit Daten zwischen Ihrer Anwendung und MongoDB jonglieren können NCache. Sie können feststellen, wie einfach es ist, auf Daten zuzugreifen und sie zu manipulieren, indem Sie sie ausführen CRUD-Operationen auf alles wegen NCache. Lassen Sie mich Sie nun auf eine kurze Tour mitnehmen, wie NCache bringt Effizienz ins Gericht; die Kirsche obendrauf, wenn du darfst.
Hier sind einige der Funktionen, die NCache bietet zur Verbesserung der Leistung Ihrer E-Commerce-Anwendung, die MongoDB verwendet.
NCache Details Cache mit Datenbank synchronisieren NCache NoSql Datenspeicher
Eliminieren Sie Serialisierungskosten mit JSON Serialized Cache
MongoDB speichert Daten in Form von Binäres JSON (BSON), bei der es sich um die binär codierte Serialisierung von JSON-ähnlichen Dokumenten handelt. Das funktioniert ganz gut mit NCache wie es unterstützt die JSON-Serialisierung von Objekten. Diese MongoDB-NCache Collaboration verbessert nicht nur die Leistungszeit Ihrer Anwendung, indem die Notwendigkeit der Serialisierung/Deserialisierung von Daten vermieden wird, sondern erhält auch die Genauigkeit Ihrer Daten.
1 2 3 4 5 |
var response = mongoCollection.FindAsync<Customer>(x => x.Id == "EINSTEIN").GetAwaiter().GetResult().ToList<Customer>(); Customer customer = (Customer)response.FirstOrDefault(); JObject customerJson = JObject.Parse(JsonSerializer.Serialize(customer)); cache.Insert($"Customer:CustomerID:{customer.Id}", customerJson); customer = cache.Get<Customer>($"Customer:CustomerID:EINSTEIN "); |
Datenquellenanbieter für die Ressourcenoptimierung
NCache bietet Anbieter von Datenquellen um einen Single-Point-Einstieg in die Datenzugriffsschicht Ihrer Anwendung sicherzustellen; der Einstiegspunkt ist Ihr Cache. Falls die Daten nicht im Cache verfügbar sind, a Durchlesen Der Anbieter ist dafür verantwortlich, auf die Datenbank zuzugreifen, die erforderlichen Daten zu suchen und abzurufen, sie für die zukünftige Verwendung zwischenzuspeichern und sie der Anwendung zu präsentieren.
1 |
var customer = cache.Get<Customer>( "EINSTEIN", new ReadThruOptions(ReadMode.ReadThru, "mongoDBReadThroughProvider")); |
Ebenso haben Sie eine Durchschreiben Anbieter, wenn Sie einen Schreibvorgang auf der Datenbank ausführen möchten. Sie müssen lediglich die erforderliche Operation auf dem Cache ausführen und der Cache schreibt die Daten automatisch für Sie in die Datenbank. Lassen Sie uns „Einstein 2“ im Cache hinzufügen, damit es die 2.0-Version Ihres Lieblingskunden in die Datenbank einfügt WriteThru
.
1 2 3 4 |
Customer customer = new Customer(); customer.Id = "EINSTEIN2"; ... cache.Insert(customer.Id,new CacheItem(customer),new WriteThruOptions(WriteMode.WriteThru,"mongoDBWriteThroughProvider"); |
NCache Details Cache mit Datenbank synchronisieren NCache NoSql Datenspeicher
Cache-Daten abfragen
Beim Benutzen NCache als zwischengeschaltete Caching-Schicht zwischen Ihrer .NET-Anwendung und MongoDB, NCache bietet Ihnen die Möglichkeit dazu Durchsuchen von indizierten zwischengespeicherten Daten durch Abfragen. Das direkte Abfragen von In-Memory-Cache-Daten reduziert die Reisekosten, die eine Abfrage normalerweise für ein Netzwerk übernehmen sollte.
Ein beispielhafter Codeausschnitt, der die Verwendung der Abfrage indizierter Daten in darstellt NCache wird hier gezeigt:
1 2 3 4 5 6 7 8 9 10 11 12 |
string query = "SELECT * FROM Models.Customer WHERE Country == ?"; var queryCommand = new QueryCommand (query); queryCommand.Parameters.Add("Country", "Germany"); ICacheReader reader = cache.SearchService.ExecuteReader(queryCommand); if (reader.FieldCount > 0) { while (reader.Read()) { string result = reader.GetValue("ContactName"); // Perform operations } } |
Alles zum Abschluss
In Anbetracht all dessen Funktionalitäten und Features, die NCache Bietet Ihnen an, kann mit Sicherheit der Schluss gezogen werden, dass keine bessere Übereinstimmung gefunden werden kann als NCache MongoDB zwischenspeichern. Hier ist der Grund. MongoDB liegt außerhalb Ihrer Anwendung; Sie benötigen eine Lösung, die nah beieinander bleibt, um die Leistung zu steigern: NCache sorgt dafür, dass es sich im Speicher befindet. Sie benötigen eine Lösung, mit der Sie zur Laufzeit beliebig viele Server hinzufügen können: linear skalierbar NCache bringt dir das. Sie suchen nach einer flexiblen Lösung, die Ihre Daten dynamisch automatisch neu ausgleicht: NCache macht genau das plus ohne Client-Interferenz.
NCache bietet viel zu viel in Form von Leistung, Kostensenkung, Flexibilität, Skalierbarkeit, also wonach suchen Sie dann noch? Geh holen NCache und viel Spaß beim Caching!