Indizierung für verbesserte Cache-Suche
Der Zweck der Verwendung eines Index besteht darin, die Geschwindigkeit und Leistung beim Auffinden relevanter Daten im Vergleich zur Cache-Suche zu optimieren. Zu Suchzwecken sollten alle durchsuchbaren Attribute indiziert werden. Ohne einen Index würde die Suche alle Daten durchsuchen, was viel Zeit und Rechenleistung erfordern würde. Der zusätzliche Computerspeicher, der für die Speicherung des Index erforderlich ist, sowie die erhebliche Verlängerung der Zeit, die für die Durchführung einer Aktualisierung erforderlich ist, werden durch die Zeitersparnis beim Informationsabruf aufgewogen.
NCache Intern nutzt die Indizierung in verschiedenen Modulen, um die Leistung interner Vorgänge zu steigern.
Cache-Suchindex
NCache stellt den Cache-Suchindex bereit, um die Ausführung von Abfragen im Cache zu beschleunigen. Zu Suchzwecken müssen lediglich alle durchsuchbaren Attribute indiziert werden. NCache durchsucht nicht das nicht indizierte Attribut im Cache, da der gesamte Cache durchsucht werden muss, um zugehörige Daten zu finden, die sich auf die Cache-Leistung auswirken.
Außerdem werden Indizes für die tatsächlichen Datentypen der zwischengespeicherten Elemente definiert. Durch die Indizierung NCache weiß, welche Art von Daten gespeichert werden, und speichert sie auf durchsuchbare Weise.
NCache bietet zwei Möglichkeiten zum Definieren von Indizes.
- Vordefinierter Index (statischer Index)
- Laufzeitindex (Dynamischer Index)
Vordefinierter Index (statischer Index)
Note
Diese Funktion ist auch in verfügbar NCache Professional.
Note
Es wird empfohlen, die Indizierung unnötiger Felder zu vermeiden, da die Indizierung Speicher- und Leistungsaufwand verursacht.
Um benutzerdefinierte Klassenobjekte in einem Cluster-Cache zu durchsuchen, müssen die Abfrageindizes für diese Klasse im Voraus definiert werden. Auf diese Weise speichert der Cache diese Daten in einer Form, in der sie leicht abgefragt werden können. Sie können Indizes wie folgt definieren Konfigurationsprozess. Indizes können für die öffentlichen, privaten und geschützten primitiven Datenelemente konfiguriert werden.
Note
Indizes werden nur für Werttypen unterstützt. Referenztypen können nicht indiziert werden.
Indizes können durch Konfiguration vor dem Cache-Start definiert werden. Wenn Sie über die Konfiguration neue Indizes definieren möchten, muss der Cache zunächst gestoppt und nach Änderungen neu gestartet werden, um Änderungen bereitzustellen. Die anschließend zum Cache hinzugefügten relevanten Daten werden automatisch indiziert. Diese Daten können in Zukunft problemlos abgefragt werden.
Warnung
Das explizite Markieren eines Referenztyps als indizierbar löst eine Ausnahme aus.
Laufzeitindex (Dynamischer Index)
Wenn es in einer Anwendung Attribute gibt, die zur Laufzeit definiert und verwendet werden, sollte die Laufzeitindizierung verwendet werden. Beispielsweise können einem Produkt im Zusammenhang mit seinen Verkäufen einige berechnete Werte zugewiesen werden. Wenn ein Kunde ein Produkt kauft, werden die Verkaufsdetails im Cache gespeichert, um später anhand der zwischengespeicherten Werte tägliche Berichte über Verkaufstrends zu erstellen. Dieser Wert wird zur Laufzeit definiert und ist daher das Laufzeitattribut des Produkts.
NCache erstellt automatisch Indizes für Daten, die vom Cache-Client hinzugefügt werden. Das bedeutet, dass Indizes nicht konfiguriert werden müssen, bevor sie für Laufzeitattribute verwendet werden.
Bei der programmgesteuerten Definition von Indizes können die Klassen oder Felder mithilfe benutzerdefinierter Attribute im Anwendungscode als indexierbar markiert werden. Nach der Markierung werden alle Grundeigenschaften und Felder automatisch indiziert. Da Sie möglicherweise nicht alle Felder indizieren müssen, können Sie sie auch von der Indizierung ausschließen. Neben der Indizierung der gesamten Klasse haben Sie auch die Flexibilität, Indizes selektiv nur für die gewünschten Felder zu definieren.
Der Laufzeitindex kann weiter in die folgenden Typen kategorisiert werden:
- Gruppenindex
- Tag-Index
- Benannter Tag-Index
Gruppenindex
Elemente können im Cache mithilfe von kategorisiert werden Gruppen. NCache ermöglicht die Abfrage von Daten im Cache basierend auf Gruppen, weshalb Gruppen ebenfalls indiziert werden müssen. Wenn Daten zu einer Gruppe hinzugefügt werden, die noch nicht im Cache vorhanden ist, wird ein neuer Index für die Gruppe erstellt. Alle zu dieser Gruppe gehörenden Daten werden dann für die Suche demselben Index zugewiesen.
Tag-Index
Cache-Elementen können eine oder mehrere Identifikationsmarkierungen zugeordnet werden. Diese Erkennungszeichen werden Tags genannt. Über Tags kann der Benutzer Schlüsselwörter mit Cache-Elementen verknüpfen. Eine Sammlung zwischengespeicherter Elemente kann auch durch Angabe von Tags gefunden und aus dem Cache entfernt werden. Tags sind nur im String-Format zulässig. Für jedes neue Tag wird ein neuer Tag-Eintrag im Tag-Index erstellt und alle zugehörigen zwischengespeicherten Elemente werden diesem Index zugeordnet.
Benannter Tag-Index
Wenn ein hohes Maß an Tagging erforderlich ist, bei dem Tags unterschiedliche Datentypen oder Namen haben können und die Anforderung darin besteht, Daten abzufragen, die sich auf einen bestimmten Tag-Typ beziehen, sollten benannte Tags verwendet werden.
„Benannte Tags“ ist die Erweiterung von „Tags“. Mit benannten Tags kann der Benutzer zusätzliche Informationen (jeglicher Art) speichern, die zum Abfragen des als Zeichenfolge gespeicherten Objekts erforderlich sind. Beispielsweise das benannte Tag „Höchste Verkaufszeit“ mit Ein Zeitwert kann gespeichert werden, wenn ein Produktverkauf an einem ganzen Tag am höchsten ist. Benannte Tags ermöglichen die Indizierung der Daten nach erforderlichen Attributen zur Laufzeit. Später kann eine Abfrage mithilfe benannter Tags erstellt werden, um die gewünschte Ergebnismenge abzurufen. Einem zwischengespeicherten Element können mehrere benannte Tags zugeordnet werden und umgekehrt.
Wenn Daten mit einem benannten Tag hinzugefügt werden, der nicht im Cache vorhanden ist, wird ein neuer Index für diesen neuen benannten Tag erstellt. Alle zugehörigen Daten werden diesem Index für die Suche zugewiesen.
Im Gegensatz zu Tag kann der benannte Tag-Index für alle Grundtypen, Zeichenfolgen und Datums- und Uhrzeitangaben definiert werden. Dadurch besteht mehr Flexibilität beim Hinzufügen einer breiten Palette durchsuchbarer Daten mit unterschiedlichen Datentypen.
Wenn mehrere Anwendungen denselben Cache gemeinsam nutzen und alle benannte Tags hinzufügen sollen, stellen Sie sicher, dass dieselben benannten Tags homogene Datentypen haben, z. B. wenn ein Client das benannte Tag „ProductID“ mit String hinzufügt Wenn Sie einen Datentyp verwenden, sollten alle anderen Clients für denselben Cache Werte von „ProductID“ im String-Format hinzufügen, nicht im Integer- oder anderen Format.
Räumungsindex
Die Räumung ist eine nützliche Funktion in NCacheWenn der Cache voll ist, beschließt er, die vorhandenen Daten zu entfernen, um eingehende Daten unterzubringen. In diesem Szenario kann die Räumung Cache-Vorgänge glätten und gleichzeitig die Cache-Größenbeschränkung beibehalten, indem ein konfigurierter Prozentsatz der Daten entfernt wird.
NCache bietet unterschiedliche Räumungsrichtlinien. Diese Richtlinien entscheiden, welche Daten entfernt werden, wenn der Cache voll ist. NCache stellt die folgenden Räumungsrichtlinien bereit:
- Prioritätsbasierte Räumung
Note
Diese Funktion ist auch in verfügbar NCache Professional.
Bei der prioritätsbasierten Eviction wird der Index von hoch nach niedrig priorisiert. Wenn der Cache voll ist, wählt der Eviction-Thread Schlüssel aus dem Index mit niedriger Priorität aus und entfernt sie aus dem Cache.
- Zuletzt verwendet (LRU)
Für die LRU (Least Recent Used) wird der Eviction-Index für die Zeit der Schlüsselverwendung aufbewahrt. Wenn der Cache voll ist, wählt der Eviction-Thread Schlüssel aus dem Index aus, die am längsten nicht verwendet wurden, und entfernt sie aus dem Cache.
- Am wenigsten häufig verwendet (LFU)
Bei Least Frequently Used (LFU) wird der Eviction-Index für die Anzahl der Schlüsselnutzungen beibehalten. Wenn der Cache voll ist, wählt der Eviction-Thread Schlüssel aus dem Index aus, die am seltensten verwendet werden, und entfernt sie aus dem Cache.
Note
Um eine Räumung durchzuführen, NCache Behält den Räumungsindex für Cache-Daten zur Räumung bei.
Ablaufindex
Der Ablauf ist eine Eigenschaft, die jedem zwischengespeicherten Element zugeordnet ist. Diese Eigenschaft wird jedem Objekt zugeordnet, sodass jedes Cache-Objekt nach seinem Alter ausgewertet werden kann. Dieses Alter des Objekts entscheidet über seine Ablaufzeit. Wenn dieses Ablaufobjekt ungültig wird, wird das zugehörige Element aus dem Cache entfernt.
NCache hält die DateTime
Ablaufindex für Cache-Schlüssel, um diese bei Ablauf effizient zu entfernen. Der Ablaufmanager lässt Elemente nach dem Reinigungsintervall ablaufen.
Reinigungsintervall ist das periodische Intervall, nach dem die abgelaufenen Elemente aus dem Cache entfernt werden. Das Reinigungsintervall für einen Cache kann in den Konfigurationseinstellungen geändert werden.
Nach Ablauf eines Bereinigungsintervalls ruft der Ablaufmanager Schlüssel aus dem Index ab und abgelaufene Elemente werden aus dem Cache entfernt. Nachdem abgelaufene Elemente aus dem Cache entfernt wurden, ruht der Ablaufthread für die in der Cache-Konfiguration angegebene „Bereinigungsintervalldauer“. NCache stellt zwei Arten von Abläufen bereit, die in Dateninvalidierungsstrategien erläutert werden:
- Absoluter Ablauf
- Gleitender Ablauf
Siehe auch
Abfrageindizes konfigurieren
Remove-QueryIndex
Vertreibung
Gemeinsame Nutzung von Laufzeitdaten