Tiering di dati - Amazon MemoryDB

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Tiering di dati

I cluster che utilizzano un tipo di nodo della famiglia r6gd hanno i dati suddivisi su più livelli tra la memoria e lo storage locale SSD (unità a stato solido). Il data tiering offre una nuova opzione in termini di rapporto prezzo/prestazioni per i OSS carichi di lavoro Valkey e Redis utilizzando unità a stato solido () a basso costo in ogni nodo del cluster oltre all'archiviazione dei dati in memoria. SSDs Analogamente ad altri tipi di nodi, i dati scritti sui nodi r6gd vengono archiviati in modo duraturo in un registro delle transazioni Multi-AZ. Il data tiering è ideale per i carichi di lavoro che accedono regolarmente fino al 20% del set di dati complessivo e per le applicazioni che possono tollerare una latenza aggiuntiva durante l'accesso ai dati su. SSD

Nei cluster con tiering dei dati, MemoryDB monitora l'ultimo orario di accesso di ogni elemento archiviato. Quando la memoria disponibile (DRAM) è completamente consumata, MemoryDB utilizza un algoritmo (LRU) utilizzato meno di recente per spostare automaticamente gli elementi a cui si accede meno frequentemente dalla memoria a. SSD Quando successivamente SSD si accede ai dati su, MemoryDB li riporta automaticamente e in modo asincrono in memoria prima di elaborare la richiesta. Se si dispone di un carico di lavoro che accede regolarmente a un sottoinsieme di dati, il tiering di dati è un modo ottimale per dimensionare la capacità a costi contenuti.

Si noti che quando si utilizza il tiering dei dati, le chiavi stesse rimangono sempre in memoria, mentre LRU regolano il posizionamento dei valori nella memoria rispetto al disco. In generale, è preferibile che le dimensioni delle chiavi siano inferiori a quelle dei valori quando utilizzi il tiering dei dati.

Il tiering dei dati è progettato per avere un impatto minimo sulle prestazioni dei carichi di lavoro delle applicazioni. Ad esempio, supponendo valori String da 500 byte, in genere ci si può aspettare una latenza aggiuntiva di 450 microsecondi per le richieste di lettura dei dati archiviati rispetto alle richieste di lettura dei dati in SSD memoria.

Con la dimensione massima del nodo di tiering dei dati (db.r6gd.8xlarge), è possibile archiviare fino a ~ TBs 500 in un singolo cluster da 500 nodi (250 TB quando si utilizza 1 replica di lettura). Per il data tiering, MemoryDB riserva il 19% di () memoria per nodo per uso diverso dai dati. DRAM Il tiering dei dati è compatibile con tutti i OSS comandi e le strutture dati Valkey e Redis supportati in MemoryDB. Non è necessaria alcuna modifica lato client per utilizzare questa caratteristica.

Best practice

È preferibile seguire le best practice seguenti:

  • Il data tiering è ideale per i carichi di lavoro che accedono regolarmente fino al 20% del set di dati complessivo e per le applicazioni che possono tollerare una latenza aggiuntiva durante l'accesso ai dati su. SSD

  • Quando si utilizza la SSD capacità disponibile su nodi a più livelli di dati, è consigliabile che la dimensione del valore sia maggiore della dimensione della chiave. La dimensione del valore non può essere superiore a 128 MB, altrimenti non verrà spostato su disco. Quando gli elementi vengono spostati tra DRAM eSSD, le chiavi rimarranno sempre in memoria e solo i valori vengono spostati nel SSD livello.

Limitazioni

Il livello di dati presenta le seguenti limitazioni:

  • Il tipo di nodo utilizzato deve appartenere alla famiglia r6gd, disponibile nelle regioni seguenti: 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 e sa-east-1.

  • Non è possibile ripristinare un'istantanea di un cluster r6gd in un altro cluster a meno che non utilizzi anche r6gd.

  • Non è possibile esportare uno snapshot in Amazon S3 per cluster di dati su più livelli.

  • Il salvataggio senza fork non è supportato.

  • Il dimensionamento non è supportato da dati un cluster di tiering di dati (ad esempio, un cluster che utilizza un tipo di nodo r6gd) a un cluster che non utilizza il tiering di dati (ad esempio, un cluster che utilizza un tipo di nodo r6g).

  • Il tiering di dati supporta solo policy maxmemory volatile-lru, allkeys-lru e noeviction.

  • Gli elementi di dimensioni superiori a 128 MiB non vengono spostati in. SSD

Prezzi del tiering di dati

I nodi R6gd hanno una capacità totale (memoria +SSD) 5 volte superiore e possono aiutare a ottenere risparmi sui costi di storage di oltre il 60% quando vengono eseguiti al massimo utilizzo rispetto ai nodi R6g (solo memoria). Per ulteriori informazioni, consulta i prezzi di MemoryDB.

Monitoraggio

MemoryDB offre metriche progettate specificamente per monitorare i cluster di prestazioni che utilizzano il tiering dei dati. Per monitorare il rapporto tra gli articoli DRAM rispetto aSSD, puoi utilizzare la metrica in.. CurrItems Metriche per MemoryDB Puoi calcolare la percentuale come:(CurrItems with Dimension: Tier = Memory * 100) / (CurrItems with no dimension filter). Quando la percentuale di elementi in memoria scende al di sotto del 5%, ti consigliamo di considerareScalabilità dei cluster MemoryDB.

Per ulteriori informazioni, consulta Metriche per i cluster MemoryDB che utilizzano il tiering dei dati su. Metriche per MemoryDB

Utilizzo del tiering di dati

Quando si crea un cluster, si utilizza il tiering dei dati selezionando un tipo di nodo della famiglia r6gd, ad esempio db.r6gd.xlarge. La selezione di quel tipo di nodo abilita automaticamente il tiering di dati.

Per ulteriori informazioni sulla creazione di cluster, consulta Fase 2: creazione di un cluster.

Quando si crea un cluster utilizzando il AWS CLI, si utilizza il tiering dei dati selezionando un tipo di nodo dalla famiglia r6gd, ad esempio db.r6gd.xlarge e impostando il parametro. --data-tiering

Non è possibile disattivare il tiering di dati quando si seleziona un tipo di nodo dalla famiglia r6gd. Se si imposta il parametro --no-data-tiering, l'operazione avrà esito negativo.

Per Linux, macOS o Unix:

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

Per Windows:

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

Dopo aver eseguito questa operazione, verrà visualizzata una risposta simile alla seguente:

{ "Cluster": { "Name": "my-cluster", "Status": "creating", "NumberOfShards": 1, "AvailabilityMode": "MultiAZ", "ClusterEndpoint": { "Port": 6379 }, "NodeType": "db.r6gd.xlarge", "EngineVersion": "7.2", "EnginePatchVersion": "7.2.6", "Engine": "valkey" "ParameterGroupName": "default.memorydb-valkey7", "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 } }

Ripristino dei dati da un'istantanea in cluster con la suddivisione dei dati su più livelli abilitata

È possibile ripristinare un'istantanea in un nuovo cluster con il tiering dei dati abilitato utilizzando (Console), () o (APIMemoryDB AWS CLI). Quando si crea un cluster utilizzando tipi di nodo nella famiglia r6gd, il tiering di dati è abilitato.

Ripristino dei dati da un'istantanea in cluster con la suddivisione dei dati su più livelli abilitata (console)

Per ripristinare un'istantanea in un nuovo cluster con il tiering dei dati abilitato (console), segui i passaggi riportati in Ripristino da un'istantanea (Console)

Tieni presente che per abilitare il tiering dei dati, devi selezionare un tipo di nodo dalla famiglia r6gd.

Quando si crea un cluster utilizzando AWS CLI, per impostazione predefinita viene utilizzato il tiering dei dati su più livelli selezionando un tipo di nodo della famiglia r6gd, ad esempio db.r6gd.xlarge e impostando il parametro. --data-tiering

Non è possibile disattivare il tiering di dati quando si seleziona un tipo di nodo dalla famiglia r6gd. Se si imposta il parametro --no-data-tiering, l'operazione avrà esito negativo.

Per Linux, macOS o Unix:

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

Per Windows:

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

Dopo aver eseguito questa operazione, verrà visualizzata una risposta simile alla seguente:

{ "Cluster": { "Name": "my-cluster", "Status": "creating", "NumberOfShards": 1, "AvailabilityMode": "MultiAZ", "ClusterEndpoint": { "Port": 6379 }, "NodeType": "db.r6gd.xlarge", "EngineVersion": "7.2", "EnginePatchVersion": "7.2.6", "Engine": "valkey" "ParameterGroupName": "default.memorydb-valkey7", "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" }