Ich habe ca. 3MB an Informationen, die sehr schwer zu produzieren sind. Es ist eine Kombination aus Join-Abfrage einiger sehr großer Tabellen und starker Verarbeitung nach der Abfrage. Um das zu vervollständigen, werden die resultierenden Informationen häufig gelesen (4-10 mal pro Minute pro Client, was 3000 für alle Clients ergibt).Cache Key-Strategie für große Datenmengen
Sollte ich diese Informationen im Cache unter einem einzigen Schlüssel speichern oder sollte ich sie brechen und die N Stücke jedes Mal abrufen, wenn ich sie brauche?
Details:
- Ich glaube nicht, dass dies eine „Meinung basierte Frage“, weil es möglich ist, mit dem Code zu beweisen, dass es ein besseres/schlechteren Szenarien
- ich nicht-emptively pre wissen kann welcher "Shard" die Informationen enthält, die ich brauche ... denke an es als Kontoauszüge, wo ein Bankmanager sowohl nach "Überweisungen" als auch nach "$ 1400.00" suchen kann ... daher muss ich das Ganze für weitere Filterung/Sortierung abrufen
- Die Daten sind nicht flach, aber es ist nicht , dass verschachtelt. Die meisten Artikel (ca. 70% sind nur 2 lvl, und der Rest geht 3 lvls)
- Ich verwende Redis als Caching-Server, und C# - Asp.Net MVC 4
- Filterung ist Single-Sourcing und angewendet auf 4 Felder (einzelnes Suchfeld, das versucht, den Wert auf 4 Feldern zu vergleichen).
- Die Sortierung erfolgt immer nach dem Datum
Dies klingt wie eine klassische analytische Prozess/Data Warehouse-Situation. Können die resultierenden Daten in einer oder mehreren denormalisierten Datenbanktabellen gespeichert werden oder müssen sie unbedingt im Speicher zwischengespeichert werden? –
@KarlWenzel Ich würde sagen, dass im Cache zwischengespeicherte ist viel performativer als jede Datenbank-Lösung aufgrund der Häufigkeit des Datenzugriffs ... rohe Schätzwerte auf über 3000 Zugriff pro Minute – Leonardo
Ohne eine Datenbankabfrage-Engine, die Optimierung und Zwischenspeicherung zu behandeln von all dem Filtern/Sortieren, dann könnten Sie vielleicht Ihre eigenen Indizes erstellen? Vielleicht haben Sie eine Codebibliothek, die virtuelle Datentabellen in Ihrem Code unterstützt? Wie sehen Ihre Daten aus? Ist es ein flacher Tisch mit vielen Feldern oder gibt es viel Nesting? –