Mise à niveau des données - Amazon MemoryDB

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Mise à niveau des données

Les clusters qui utilisent un type de nœud de la famille r6gd voient leurs données hiérarchisées entre la mémoire et le stockage SSD (Solid State Drive) local. La hiérarchisation des données offre une nouvelle option de rapport prix/performances pour les charges de travail Redis OSS en utilisant des disques SSD à moindre coût dans chaque nœud du cluster, en plus du stockage des données en mémoire. Comme pour les autres types de nœuds, les données écrites sur les nœuds r6gd sont stockées de manière durable dans un journal des transactions multi-AZ. La hiérarchisation des données est parfaitement adaptée aux charges de travail qui accèdent régulièrement jusqu'à 20 % de leur jeu de données, et pour les applications qui peuvent tolérer une latence supplémentaire lors de l'accès aux données sur SSD.

Sur les clusters dotés d'une hiérarchisation des données, MemoryDB surveille l'heure du dernier accès de chaque élément stocké. Lorsque la mémoire disponible (DRAM) est entièrement consommée, MemoryDB utilise un algorithme utilisé le moins récemment (LRU) pour déplacer automatiquement les éléments rarement consultés de la mémoire vers le SSD. Lorsque les données du SSD sont ultérieurement consultées, MemoryDB les replace automatiquement et de manière asynchrone en mémoire avant de traiter la demande. Si votre charge de travail n’accède régulièrement qu’à un sous-ensemble de ses données, la hiérarchisation des données est un moyen optimal de mettre à l’échelle votre capacité de manière rentable.

Notez que lors de l'utilisation de la hiérarchisation des données, les clés elles-mêmes restent toujours en mémoire, tandis que le principe du moins récemment utilisé (LRU, Least Recently Used) régit le placement des valeurs en mémoire plutôt que sur le disque. En général, nous recommandons que la taille de vos clés soit inférieure à celle de vos valeurs lorsque vous utilisez la hiérarchisation des données.

La hiérarchisation des données est conçue pour avoir un impact minimal sur les performances des charges de travail des applications. Par exemple, en supposant des valeurs de chaîne de 500 octets, vous pouvez généralement vous attendre à 450 microsecondes de latence supplémentaires pour les demandes de lecture de données stockées sur un SSD par rapport aux demandes de lecture de données en mémoire.

Avec la plus grande taille de nœud de hiérarchisation des données (db.r6gd.8xlarge), vous pouvez stocker jusqu'à 500 To dans un seul cluster de 500 nœuds (250 To si vous utilisez une réplique en lecture). Pour la hiérarchisation des données, MemoryDB réserve 19 % de la mémoire (DRAM) par nœud à des fins autres que les données. La hiérarchisation des données est compatible avec toutes les commandes et structures de données Redis OSS prises en charge dans MemoryDB. Vous n’avez besoin d’aucune modification côté client pour utiliser cette fonction.

Bonnes pratiques

Nous recommandons les bonnes pratiques suivantes :

  • La hiérarchisation des données est parfaitement adaptée aux charges de travail qui accèdent régulièrement jusqu'à 20 % de leur jeu de données, et pour les applications qui peuvent tolérer une latence supplémentaire lors de l'accès aux données sur SSD.

  • Lors de l'utilisation de la capacité SSD disponible sur les nœuds hiérarchisés en fonction des données, nous recommandons que la taille de la valeur soit supérieure à celle de la clé. La taille de la valeur ne peut pas être supérieure à 128 Mo ; sinon, elle ne sera pas déplacée sur le disque. Lorsque des éléments sont déplacés entre DRAM et SSD, les clés restent toujours en mémoire et seules les valeurs sont déplacées vers le niveau SSD.

Limites

La hiérarchisation des données présente les limitations suivantes :

  • Le type de nœud que vous utilisez doit appartenir à la famille r6gd, disponible dans les régions suivantes : 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 et sa-east-1.

  • Vous ne pouvez pas restaurer un instantané d'un cluster r6gd dans un autre cluster à moins que celui-ci n'utilise également r6gd.

  • Vous ne pouvez pas exporter un instantané vers Amazon S3 pour les clusters de hiérarchisation des données.

  • L’enregistrement sans fonction fork n’est pas prise en charge.

  • La mise à l’échelle n’est pas prise en charge depuis un cluster de hiérarchisation de données (par exemple, un cluster utilisant un type de nœud r6gd) vers un cluster qui n’utilise pas la hiérarchisation des données (par exemple, un cluster utilisant un type de nœud r6g).

  • La hiérarchisation des données prend uniquement en charge les politiques de mémoire maximale volatile-lru, allkeys-lru et noeviction.

  • Les éléments de plus de 128 MiB ne sont pas déplacés vers le SSD.

Mise à niveau de tarification des données

Les nœuds R6gd ont une capacité totale (mémoire+SSD) 5 fois supérieure et peuvent vous aider à réaliser des économies de stockage de plus de 60 % lorsqu'ils fonctionnent à une utilisation maximale par rapport aux nœuds R6g (mémoire uniquement). Pour plus d'informations, consultez la section Tarification de MemoryDB.

Surveillance

MemoryDB propose des métriques conçues spécifiquement pour surveiller les clusters de performance qui utilisent la hiérarchisation des données. Pour surveiller le ratio entre les éléments en DRAM et en SSD, vous pouvez utiliser la CurrItems métrique à.. Métriques pour MemoryDB Vous pouvez calculer le pourcentage comme suit : (CurrItems with Dimension: Tier = Memory * 100) / (CurrItems with no dimension filter) Lorsque le pourcentage d'éléments en mémoire tombe en dessous de 5 %, nous vous recommandons d'en tenir compteDimensionnement des clusters MemoryDB.

Pour plus d'informations, voir Métriques pour les clusters MemoryDB qui utilisent la hiérarchisation des données à. Métriques pour MemoryDB

Utilisation de la hiérarchisation des données

Lorsque vous créez un cluster, vous utilisez la hiérarchisation des données en sélectionnant un type de nœud de la famille r6gd, tel que db.r6gd.xlarge. La sélection de ce type de nœud active automatiquement la hiérarchisation des données.

Pour plus d'informations sur la création des clusters , consultez Étape 1 : créer un cluster.

Lorsque vous créez un cluster à l'aide de AWS CLI, vous utilisez la hiérarchisation des données en sélectionnant un type de nœud de la famille r6gd, tel que db.r6gd.xlarge, et en définissant le paramètre. --data-tiering

Vous ne pouvez pas désactiver la hiérarchisation des données lorsque vous sélectionnez un type de nœud dans la famille r6gd. Si vous définissez le paramètre --no-data-tiering, l’opération échouera.

Pour Linux, macOS ou Unix :

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

Pour Windows :

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

Après avoir exécuté cette opération, une réponse similaire à ceci s’affiche :

{ "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 } }

Restauration des données d'un instantané vers des clusters avec la hiérarchisation des données activée

Vous pouvez restaurer un instantané sur un nouveau cluster avec la hiérarchisation des données activée à l'aide de la (console), (AWS CLI) ou (API MemoryDB). Lorsque vous créez un cluster à l’aide de types de nœuds de la famille r6gd, la hiérarchisation des données est activée.

Restauration des données d'un instantané vers des clusters avec la hiérarchisation des données activée (console)

Pour restaurer un instantané sur un nouveau cluster avec la hiérarchisation des données activée (console), suivez les étapes décrites dans Restauration à partir d'un instantané (console)

Notez que pour activer la hiérarchisation des données, vous devez sélectionner un type de nœud de la famille r6gd.

Lors de la création d'un cluster à l'aide de AWS CLI, la hiérarchisation des données est utilisée par défaut en sélectionnant un type de nœud de la famille r6gd, tel que db.r6gd.xlarge, et en définissant le paramètre. --data-tiering

Vous ne pouvez pas désactiver la hiérarchisation des données lorsque vous sélectionnez un type de nœud dans la famille r6gd. Si vous définissez le paramètre --no-data-tiering, l’opération échouera.

Pour Linux, macOS ou 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

Pour Linux, macOS ou 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

Après avoir exécuté cette opération, une réponse similaire à ceci s’affiche :

{ "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" }