In-Memory-Stufe – Übersicht
Die In-Memory-Stufe ist eine Einstellung auf Clusterebene, für die spezielle Knoten verwendet werden. 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.
Bigtable In-Memory ist eine integrierte Speicherebene als Teil des Bigtable-Knotens, die ein nahtloses, kostenoptimiertes Daten-Tiering basierend auf Zugriffsmustern und Leistungsanforderungen über eine einzige API ermöglicht. Durch die Verwendung von Remote Direct Memory Access (RDMA) werden die Antwortzeiten in der Bigtable-In-Memory-Ebene erheblich verkürzt, Hotspots werden vermieden und ein hoher Durchsatz für latenzempfindliche Daten wird gewährleistet. Weitere Informationen finden Sie unter Leistung verstehen.
Wann sollte In-Memory verwendet werden?
Wir empfehlen, die In-Memory-Ebene für die folgenden Anwendungsfälle zu aktivieren:
- Anforderungen an die Latenz im Submillisekundenbereich: Arbeitslasten, die Leselatenzen von weniger als 1 ms erfordern. Dies wird in der Regel durch eine selbstverwaltete Cachelösung vor einer Datenbank erreicht.
- Punktlesevorgänge mit hohem Durchsatz: Anwendungen mit hohem Lesetraffic-Durchsatz für bestimmte Teilmengen von Daten.
- Hotspot-Minderung: Arbeitslasten mit hohem Durchsatz, die Trafficspitzen oder Hotspots für bestimmte Zeilenschlüssel enthalten können.
- Kostenoptimierung: Szenarien, in denen Sie die Anzahl der Bigtable-Knoten reduzieren möchten, indem Sie hohe Lesevorgänge auf eine kostengünstigere In-Memory-Ebene auslagern.
Funktionsweise der In-Memory-Ebene
Die In-Memory-Unterstützung wird von Hybrid-Speicherknoten bereitgestellt. Diese spezialisierten Knoten erweitern die Entkopplung von Computing und Speicher in Bigtable um eine Speicherebene mit vertikal skalierbarem Durchsatz. Bei In-Memory kann es bis zu 30 Minuten dauern, bis die speziellen Knoten bereitgestellt werden. Während dieses Zeitraums verarbeitet Bigtable weiterhin Traffic aus dem persistenten Speicher.
Sie können die In-Memory-Ebene auf Clusterebene aktivieren.
Die In-Memory-Stufe funktioniert so:
- Daten in die Speicherebene übertragen: In-Memory bietet Read-Through-Caching. Eine Zeile wird in die Speicherebene mit Lesevorgängen über ein Anwendungsprofil verschoben, das Sie für den In-Memory-Speicher konfigurieren. Bei einem Schreibvorgang aus einem beliebigen App-Profil wird die Speicherebene aktualisiert, wenn sich die Zeilendaten bereits in der In-Memory-Ebene befinden.
- Richtlinien zum Entfernen und Ungültigmachen: In-Memory verwendet das LRU-Verfahren (Least Recently Used) zum Entfernen auf Zeilenebene und eine TTL-Richtlinie (Time-to-Live) zum Ungültigmachen von 15 Minuten.
- Negatives Caching: Im Arbeitsspeicher wird für einen bestimmten Zeitraum gespeichert, ob eine Ressource fehlt, um eine Überlastung des Back-Ends zu verhindern.
- Sicherheit: In-Memory unterstützt die Verschlüsselung ruhender Daten und von Daten während der Übertragung (TLS).
- Replikation: In einer Multi-Cluster-Instanz sind die Speicherebenen der verschiedenen Cluster nicht synchronisiert. Da jede Speicherebene unabhängig davon bestimmt, welche Daten basierend auf dem empfangenen Lesetraffic in den Arbeitsspeicher geladen werden, 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. Bei einem Schreibvorgang in eine Zeile wird diese schließlich in allen Speicherebenen aktualisiert, in denen sie vorhanden ist. Dabei wird das standardmäßige Bigtable-Replikationsmodell der Eventual Consistency verwendet.
- Vertikales Autoscaling: Die In-Memory-Ebene unterstützt vertikales Autoscaling auf Knotenebene, das mit dem Bigtable-Autoscaling zusammenarbeitet.
Die In-Memory-Ebene ist für den leistungsstarken Zugriff auf aktuelle Daten optimiert. Um diese Leistung aufrechtzuerhalten, befinden sich nur die neuesten Versionen einer Zeile mit Zeitstempel in der Speicherebene. Anfragen für frühere Versionen von Daten, auch als Verlaufscells bezeichnet, umgehen automatisch die Speicherebene und werden aus dem nichtflüchtigen Speicher bereitgestellt.
Datenkohärenz
Bigtable sorgt dafür, dass die In-Memory-Daten mit den persistenten Daten auf der SSD- oder der Speicherebene für seltenen Zugriff übereinstimmen. Diese Hybridarchitektur ermöglicht Bigtable ein einheitliches Speichermodell für alle Speicherebenen. So können Sie unabhängig davon, ob sich Ihre Daten physisch im RAM oder im nichtflüchtigen Speicher befinden, über dieselbe semantische Schnittstelle darauf zugreifen. Wenn der In-Memory-Cache von Bigtable aktiviert ist, behalten Sie die Read-Your-Writes-Konsistenz auf Clusterebene bei.
Vertikale Skalierung
Wenn Sie die In-Memory-Ebene aktivieren, kann jeder Knoten die vertikale Skalierung verwenden, um die In-Memory-Durchsatzkapazität zu ändern. Jeder Knoten umfasst 8 GB RAM für die In-Memory-Ebene und beginnt mit einer Basiskapazität von 40.000 Lesevorgängen pro Sekunde. Um Spitzen beim Point-Read-Traffic zu bewältigen, können Knoten automatisch in Schritten von 40.000 Lesevorgängen pro Sekunde skaliert werden. Dabei werden maximal 120.000 Lesevorgänge pro Sekunde und Knoten erreicht.
Diese Funktion für die vertikale Skalierung lässt sich in das Bigtable-Autoscaling integrieren. Wenn die maximale In-Memory-Kapazität auf allen Knoten im Cluster erreicht ist und Autoscaling aktiv ist, stellt Bigtable automatisch zusätzliche Knoten bereit, um den In-Memory-Durchsatz weiter zu steigern.
Die vertikale Skalierung auf einem Knoten gilt nur für In-Memory-Lesevorgänge pro Sekunde und funktioniert unabhängig davon, ob das Autoscaling auf Clusterebene aktiviert ist. Die vertikale Skalierung über die Basis von 40.000 Lesevorgängen pro Sekunde hinaus wird abgerechnet,indem ein Multiplikator auf die stündlichen Kosten des Knotens angewendet wird. Weitere Informationen finden Sie unter Preise und Limits.
Beschränkungen
Für die In-Memory-Ebene gelten die folgenden Einschränkungen:
- Für In-Memory-Speicher ist SSD-Speicher erforderlich.
- In-Memory unterstützt nur Leseoperationen auf Einzelzeilenebene.
- In-Memory-Daten werden nicht für Datenscans verwendet und unterstützen keine SQL-Abfragen.
- In‑Memory-Anwendungsprofile unterstützen nur Single-Cluster-Routing.
- In-Memory-Limits beschränken die Zeilengröße auf 1 MiB pro Zeilenschlüssel. Bigtable liest Zeilen, die dieses Limit überschreiten, aus dem nichtflüchtigen Speicher.
- Für die In-Memory-Funktion ist Version 2.77.0 oder höher der Bigtable-Clientbibliothek für Java oder BOM-Version 26.80.0 oder höher erforderlich.
- Cluster mit vom Kunden verwalteten Verschlüsselungsschlüsseln (CMEK) unterstützen In-Memory-Vorgänge nicht.