In-Memory-Stufe – Übersicht
Die In-Memory-Stufe ist eine Einstellung auf Clusterebene, die spezielle Knoten verwendet. Bevor Sie diese Seite lesen, sollten Sie sich mit Instanzen, Clustern und Knoten vertraut machen. Wir empfehlen Ihnen außerdem, sich mit den Einschränkungen vertraut zu machen.
Die In-Memory-Stufe von Bigtable ist eine integrierte Speicherstufe, die Teil des Bigtable-Knotens ist. Sie ermöglicht ein nahtloses, kostenoptimiertes Daten-Tiering basierend auf Zugriffsmustern und Leistungsanforderungen, alles über eine einzige API. Durch die Verwendung von Remote Direct Memory Access (RDMA) reduziert die In-Memory-Stufe von Bigtable die Antwortzeiten erheblich, verringert Hotspots und sorgt für einen hohen Durchsatz bei latenzempfindlichen Daten. Weitere Informationen finden Sie unter Leistung verstehen.
Wann die In-Memory-Stufe verwendet werden sollte
Wir empfehlen, die In-Memory-Stufe für die folgenden Anwendungsfälle zu aktivieren:
- Latenzanforderungen im Submillisekundenbereich: Arbeitslasten, die Leselatenzen von weniger als 1 ms erfordern, werden in der Regel durch eine selbstverwaltete Cache-Lösung vor einer Datenbank abgedeckt.
- Punktlesevorgänge mit hohem Durchsatz: Anwendungen mit hohen Anforderungen an den Lesetraffic-Durchsatz für bestimmte Teilmengen von Daten.
- Hotspot-Minderung: Arbeitslasten mit hohem Durchsatz, die Traffic-Spitzen oder Hotspots auf bestimmten Zeilenschlüsseln enthalten können.
- Kostenoptimierung: Szenarien, in denen Sie die Anzahl der Bigtable-Knoten reduzieren möchten, indem Sie hohe Lesevolumen auf eine kostengünstigere In-Memory-Ebene auslagern.
So funktioniert die In-Memory-Stufe
Die Unterstützung der In-Memory-Stufe wird von Hybrid-Speicherknoten bereitgestellt. Diese spezialisierten Knoten erweitern die Rechen- und Speicherdisaggregation von Bigtable um eine Speicherebene mit vertikal skalierbarem Durchsatz. Es kann bis zu 30 Minuten dauern, bis Bigtable die spezialisierten In-Memory-Tier-Knoten bereitstellt. Während dieser Zeit verarbeitet Bigtable weiterhin Traffic aus dem nichtflüchtigen Speicher.
Sie können die In-Memory-Stufe auf Clusterebene aktivieren.
Die In-Memory-Stufe funktioniert so:
- Daten in die Speicherebene abrufen: Die In-Memory-Ebene bietet ein Read-Through-Caching-Verhalten. Eine Zeile wird mit Lesevorgängen über ein Anwendungsprofil, das Sie für die In-Memory-Stufe konfigurieren, in die In-Memory-Stufe verschoben. Ein Schreibvorgang aus einem beliebigen Anwendungsprofil aktualisiert die Speicherstufe, wenn sich die Zeilendaten bereits in der In-Memory-Stufe befinden.
- Entfernungs- und Entwertungsrichtlinien: Die In-Memory-Stufe verwendet die LRU-Entfernung (Least Recently Used) auf Zeilenebene und wendet eine TTL-Entwertungsrichtlinie (Time to Live) an, um die Trefferquote der In-Memory-Stufe zu maximieren.
- Negatives Caching: Die speicherinterne Ebene merkt sich für einen bestimmten Zeitraum, ob eine Ressource fehlt, um eine Überlastung des Backends zu verhindern.
- Sicherheit: Die In-Memory-Stufe unterstützt die Verschlüsselung ruhender Daten und die Verschlüsselung bei der Übertragung (TLS).
- Replikation: In einer Multi-Cluster-Instanz sind die Speicherstufen verschiedener Cluster nicht synchronisiert. Da jede Speicherebene unabhängig bestimmt, welche Daten basierend auf dem empfangenen Lesetraffic in den Speicher geladen werden sollen, können verschiedene Cluster unterschiedliche Zeilenschlüssel in ihren Speicherebenen enthalten. Bigtable lädt Daten aus der SSD-Stufe des lokalen Clusters in den Arbeitsspeicher. Ein Schreibvorgang in eine Zeile aktualisiert diese schließlich in allen Speicherebenen, in denen sie vorhanden ist, gemäß dem standardmäßigen Bigtable-Replikationsmodell der Eventual Consistency.
- Vertikales Autoscaling: Die In-Memory-Stufe unterstützt vertikales Autoscaling auf Knotenebene, das zusammen mit Bigtable-Autoscaling funktioniert.
Die In-Memory-Stufe ist für den Hochleistungszugriff auf aktuelle Daten optimiert. Damit diese Leistung beibehalten wird, befinden sich nur die neuesten Versionen einer Zeile mit Zeitstempel auf der Speicherebene. Anfragen für frühere Versionen von Daten, auch als Verlaufszellen bezeichnet, umgehen automatisch die Speicherebene und werden aus dem nichtflüchtigen Speicher bereitgestellt.
Datenkohärenz
Bigtable sorgt dafür, dass die Daten der In-Memory-Stufe mit den persistenten Daten auf der SSD- oder der Speicherstufe für seltenen Zugriff konsistent sind. Dank dieser Hybridarchitektur kann Bigtable ein konsistentes Speichermodell über alle Speicherebenen hinweg bereitstellen. So können Sie über dieselbe semantische Schnittstelle auf Ihre Daten zugreifen, unabhängig davon, ob sie sich physisch im RAM oder im nichtflüchtigen Speicher befinden. Wenn die In-Memory-Stufe von Bigtable aktiviert ist, bleibt die Read-Your-Write-Konsistenz auf Clusterebene erhalten.
Vertikale Skalierung
Wenn Sie die In-Memory-Stufe aktivieren, kann jeder Knoten die vertikale Skalierung verwenden, um die Durchsatzkapazität der In-Memory-Stufe zu ändern. Wenn die In-Memory-Stufe aktiviert ist, beginnt jeder Knoten mit einer Basiskapazität von 40.000 Lesevorgängen pro Sekunde. Um Spitzen beim Punktlese-Traffic zu bewältigen, können Knoten automatisch in Schritten von 40.000 Lesevorgängen pro Sekunde skaliert werden, bis zu einem Maximum von 120.000 Lesevorgängen pro Sekunde und Knoten.
Diese Funktion zur vertikalen Skalierung ist in Bigtable Autoscaling integriert. Wenn die maximale Kapazität der In-Memory-Stufe auf allen Knoten im Cluster erreicht ist und Autoscaling aktiv ist, stellt Bigtable automatisch zusätzliche Knoten bereit, um den Durchsatz der In-Memory-Stufe weiter zu erhöhen.
Die vertikale Skalierung auf einem Knoten gilt nur für Lesevorgänge pro Sekunde auf der In-Memory-Stufe und funktioniert unabhängig davon, ob Autoscaling auf Clusterebene aktiviert ist oder nicht. Die vertikale Skalierung über die Basis von 40.000 Lesevorgängen pro Sekunde hinaus wird durch Anwendung eines Multiplikators auf die stündlichen Kosten des Knotens abgerechnet. Weitere Informationen finden Sie unter Preise und Limits.
Beschränkungen
Für die In-Memory-Stufe gelten die folgenden Einschränkungen:
- Für die In-Memory-Stufe ist SSD-Speicher erforderlich.
- Die In-Memory-Stufe unterstützt nur einzelne Lesevorgänge auf Zeilenebene.
- Die In-Memory-Stufe dient nicht zum Scannen von Daten und unterstützt keine SQL-Abfragen.
- Anwendungsprofile mit In-Memory-Stufe unterstützen nur Single-Cluster-Routing.
- In der In-Memory-Stufe ist die Zeilengröße auf 1 MiB pro Zeilenschlüssel begrenzt. Bigtable liest Zeilen, die dieses Limit überschreiten, aus dem nichtflüchtigen Speicher.
Für die In-Memory-Stufe sind die folgenden Versionen der Bigtable-Clientbibliotheken erforderlich:
- Java-Version 2.77.0 oder höher
- BOM-Version 26.80.0 oder höher
- Go-Version 1.52.0 oder höher
Andere Clientbibliotheken werden nicht unterstützt.
Cluster, für die kundenverwaltete Verschlüsselungsschlüssel (CMEK) aktiviert sind, unterstützen die In-Memory-Stufe nicht.
Die In-Memory-Stufe ist auf maximal 10 Knoten pro Cluster beschränkt.