Daten-Tiering - Amazon MemoryDB

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Daten-Tiering

Bei Clustern, die einen Knotentyp aus der R6GD-Familie verwenden, werden die Daten zwischen Arbeitsspeicher und lokalem SSD-Speicher (Solid State Drives) aufgeteilt. Data Tiering bietet eine neue Preis-Leistungs-Option für Redis OSS-Workloads, da in jedem Clusterknoten zusätzlich zur Speicherung von Daten im Arbeitsspeicher kostengünstigere Solid-State-Laufwerke (SSDs) verwendet werden. Ähnlich wie bei anderen Knotentypen werden die auf R6GD-Knoten geschriebenen Daten dauerhaft in einem Multi-AZ-Transaktionsprotokoll gespeichert. Daten-Tiering ist ideal für Workloads, die regelmäßig auf bis zu 20 Prozent ihres gesamten Datensatzes zugreifen, und für Anwendungen, die beim Zugriff auf Daten auf SSD zusätzliche Latenz tolerieren können.

In Clustern mit Daten-Tiering überwacht MemoryDB die letzte Zugriffszeit jedes gespeicherten Elements. Wenn der verfügbare Speicher (DRAM) vollständig verbraucht ist, verwendet MemoryDB einen LRU-Algorithmus (Least-Recently Used), um Objekte, auf die selten zugegriffen wird, automatisch vom Speicher auf die SSD zu verschieben. Wenn anschließend auf Daten auf der SSD zugegriffen wird, verschiebt MemoryDB sie automatisch und asynchron zurück in den Arbeitsspeicher, bevor die Anforderung verarbeitet wird. Wenn Sie eine Workload haben, die regelmäßig nur auf eine Teilmenge ihrer Daten zugreift, ist Daten-Tiering eine optimale Möglichkeit, Ihre Kapazität kostengünstig zu skalieren.

Beachten Sie, dass bei der Verwendung von Daten-Tiering die Schlüssel selbst immer im Speicher verbleiben, während die LRU die Platzierung von Werten in dem Speicher im Vergleich zur Festplatte regelt. Im Allgemeinen empfehlen wir, dass Ihre Schlüsselgrößen kleiner als Ihre Wertgrößen sind, wenn Sie Daten-Tiering verwenden.

Das Daten-Tiering ist so konzipiert, dass es minimale Auswirkungen auf die Leistung von Anwendungs-Workloads hat. Wenn Sie beispielsweise von 500-Byte-Zeichenkettenwerten ausgehen, können Sie in der Regel mit einer zusätzlichen Latenz von 450 Mikrosekunden für Leseanforderungen für auf SSD gespeicherte Daten im Vergleich zu Leseanforderungen für Daten im Speicher rechnen.

Mit der größten Data-Tiering-Knotengröße (db.r6gd.8xlarge) können Sie bis zu ~500 TB in einem einzigen 500-Knoten-Cluster speichern (250 TB bei Verwendung einer Lesereplik). Für das Daten-Tiering reserviert MemoryDB 19% des (DRAM-) Speichers pro Knoten für die Nichtdatenverwendung. Data Tiering ist mit allen Redis OSS-Befehlen und Datenstrukturen kompatibel, die in MemoryDB unterstützt werden. Um diese Funktion nutzen zu können, sind keine clientseitigen Änderungen erforderlich.

Bewährte Methoden

Wir empfehlen Ihnen, die folgenden bewährten Methoden:

  • Daten-Tiering ist ideal für Workloads, die regelmäßig auf bis zu 20 Prozent ihres gesamten Datensatzes zugreifen, und für Anwendungen, die beim Zugriff auf Daten auf SSD zusätzliche Latenz tolerieren können.

  • Bei Verwendung von SSD-Kapazität, die auf Daten-Tiering-Knoten verfügbar ist, empfehlen wir, dass die Wertgröße größer als die Schlüsselgröße ist. Die Wertgröße darf nicht größer als 128 MB sein. Andernfalls wird sie nicht auf die Festplatte verschoben. Wenn Elemente zwischen DRAM und SSD verschoben werden, bleiben die Schlüssel immer im Speicher und nur die Werte werden in die SSD-Ebene verschoben.

Einschränkungen

Für Daten-Tiering gelten die folgenden Beschränkungen:

  • Der verwendete Knotentyp muss aus der r6gd-Familie stammen, die in den folgenden Regionen verfügbar ist: us-east-2, us-east-1, us-west-2, us-west-1, eu-west-1, eu-west-3, eu-central-1, ap-northeast-1, ap-southeast-1, ap-southeast-2, ap-south-1, ca-central-1 und sa-east-1.

  • Sie können einen Snapshot eines r6gd-Clusters nicht in einem anderen Cluster wiederherstellen, es sei denn, dieser verwendet auch r6gd.

  • Sie können einen Snapshot für Data-Tiering-Cluster nicht nach Amazon S3 exportieren.

  • Das unvergabelte Speichern wird nicht unterstützt.

  • Die Skalierung von einem Cluster mit Daten-Tiering (z. B. ein Cluster, der einen R6gd-Knotentyp verwendet) zu einem Cluster ohne Daten-Tiering (z. B. ein Cluster, der einen R6g-Knotentyp verwendet) wird nicht unterstützt.

  • Daten-Tiering unterstützt nur die maxmemory-Richtlinien volatile-lru, allkeys-lru und noeviction.

  • Elemente, die größer als 128 MiB sind, werden nicht auf SSD verschoben.

Preise für Daten-Tiering

R6gd-Knoten verfügen über eine fünfmal höhere Gesamtkapazität (Arbeitsspeicher + SSD) und können Ihnen helfen, bei maximaler Auslastung im Vergleich zu R6g-Knoten (nur Speicher) mehr als 60 Prozent Speicherkosten einzusparen. Weitere Informationen finden Sie unter MemoryDB-Preise.

Überwachen

MemoryDB bietet Metriken, die speziell für die Überwachung der Leistungscluster entwickelt wurden, die Data Tiering verwenden. Um das Verhältnis der Elemente in DRAM im Vergleich zu SSD zu überwachen, können Sie die Metrik unter.. verwenden CurrItems Metriken für MemoryDB Sie können den Prozentsatz wie folgt berechnen:(CurrItems with Dimension: Tier = Memory * 100) / (CurrItems with no dimension filter). Wenn der Prozentsatz der Elemente im Speicher unter 5 Prozent sinkt, empfehlen wir Ihnen, dies zu berücksichtigenSkalierung von MemoryDB-Clustern.

Weitere Informationen finden Sie unter Metriken für MemoryDB-Cluster, die Data Tiering verwenden unter. Metriken für MemoryDB

Verwenden von Daten-Tiering

Beim Erstellen eines Clusters verwenden Sie Data Tiering, indem Sie einen Knotentyp aus der R6gd-Familie auswählen, z. B. db.r6gd.xlarge. Bei Auswahl dieses Knotentyps wird das Daten-Tiering automatisch aktiviert.

Weitere Informationen zum Erstellen von Clustern finden Sie unter Schritt 1: Erstellen eines Clusters.

Wenn Sie einen Cluster mit dem erstellen, verwenden Sie Data Tiering AWS CLI, indem Sie einen Knotentyp aus der r6gd-Familie auswählen, z. B. db.r6gd.xlarge, und den Parameter festlegen. --data-tiering

Sie können sich das Daten-Tiering nicht abwählen, wenn Sie einen Knotentyp aus der R6gd-Familie auswählen. Wenn Sie den Parameter --no-data-tiering festlegen, schlägt die Operation fehl.

Für Linux, macOS oder Unix:

aws memorydb create-cluster \ --cluster-name my-cluster \ --node-type db.r6gd.xlarge \ --acl-name my-acl \ --subnet-group my-sg \ --data-tiering

Für Windows:

aws memorydb create-cluster ^ --cluster-name my-cluster ^ --node-type db.r6gd.xlarge ^ --acl-name my-acl ^ --subnet-group my-sg --data-tiering

Nach dem Ausführen dieses Vorgangs sehen Sie eine Antwort ähnlich dem folgenden:

{ "Cluster": { "Name": "my-cluster", "Status": "creating", "NumberOfShards": 1, "AvailabilityMode": "MultiAZ", "ClusterEndpoint": { "Port": 6379 }, "NodeType": "db.r6gd.xlarge", "EngineVersion": "6.2", "EnginePatchVersion": "6.2.6", "ParameterGroupName": "default.memorydb-redis6", "ParameterGroupStatus": "in-sync", "SubnetGroupName": "my-sg", "TLSEnabled": true, "ARN": "arn:aws:memorydb:us-east-1:xxxxxxxxxxxxxx:cluster/my-cluster", "SnapshotRetentionLimit": 0, "MaintenanceWindow": "wed:03:00-wed:04:00", "SnapshotWindow": "04:30-05:30", "ACLName": "my-acl", "DataTiering":"true", "AutoMinorVersionUpgrade": true } }

Daten aus einem Snapshot in Clustern mit aktiviertem Daten-Tiering wiederherstellen

Sie können einen Snapshot auf einem neuen Cluster mit aktiviertem Data Tiering mithilfe der (Console), (AWS CLI) oder (MemoryDB-API) wiederherstellen. Wenn Sie einen Cluster mit Knotentypen in der R6gd-Familie erstellen, ist Daten-Tiering aktiviert.

Wiederherstellen von Daten aus einem Snapshot in Clustern mit aktiviertem Data Tiering (Konsole)

Gehen Sie wie folgt vor, um einen Snapshot auf einem neuen Cluster mit aktiviertem Data Tiering (Konsole) wiederherzustellen Wiederherstellung aus einem Snapshot (Konsole)

Beachten Sie, dass Sie zur Aktivierung von Data-Tiering einen Knotentyp aus der R6GD-Familie auswählen müssen.

Bei der Erstellung eines Clusters mithilfe von wird Data Tiering standardmäßig verwendet AWS CLI, indem ein Knotentyp aus der r6gd-Familie ausgewählt wird, z. B. db.r6gd.xlarge, und der Parameter festgelegt wird. --data-tiering

Sie können sich das Daten-Tiering nicht abwählen, wenn Sie einen Knotentyp aus der R6gd-Familie auswählen. Wenn Sie den Parameter --no-data-tiering festlegen, schlägt die Operation fehl.

Für Linux, macOS oder Unix:

aws memorydb create-cluster \ --cluster-name my-cluster \ --node-type db.r6gd.xlarge \ --acl-name my-acl \ --subnet-group my-sg \ --data-tiering \ --snapshot-name my-snapshot

Für Linux, macOS oder Unix:

aws memorydb create-cluster ^ --cluster-name my-cluster ^ --node-type db.r6gd.xlarge ^ --acl-name my-acl ^ --subnet-group my-sg ^ --data-tiering ^ --snapshot-name my-snapshot

Nach dem Ausführen dieses Vorgangs sehen Sie eine Antwort ähnlich dem folgenden:

{ "Cluster": { "Name": "my-cluster", "Status": "creating", "NumberOfShards": 1, "AvailabilityMode": "MultiAZ", "ClusterEndpoint": { "Port": 6379 }, "NodeType": "db.r6gd.xlarge", "EngineVersion": "6.2", "EnginePatchVersion": "6.2.6", "ParameterGroupName": "default.memorydb-redis6", "ParameterGroupStatus": "in-sync", "SubnetGroupName": "my-sg", "TLSEnabled": true, "ARN": "arn:aws:memorydb:us-east-1:xxxxxxxxxxxxxx:cluster/my-cluster", "SnapshotRetentionLimit": 0, "MaintenanceWindow": "wed:03:00-wed:04:00", "SnapshotWindow": "04:30-05:30", "ACLName": "my-acl", "DataTiering": "true" }