Organización de datos en niveles - Amazon MemoryDB para Redis

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Organización de datos en niveles

Los clústeres que utilizan un tipo de nodo de la familia r6gd tienen sus datos en niveles entre la memoria y el almacenamiento SSD local (unidades de estado sólido). La organización de datos en niveles proporciona una nueva opción de precio-rendimiento para las cargas de trabajo de Redis mediante el uso de unidades de estado sólido (SSD) de menor costo en cada nodo de clúster, además de almacenar datos en la memoria. Al igual que en otros tipos de nodos, los datos escritos en los nodos r6gd se almacenan de forma duradera en un registro de transacciones Multi-AZ. La organización de datos en niveles es ideal para cargas de trabajo que acceden regularmente hasta un 20 % de su conjunto de datos general y para aplicaciones que pueden tolerar latencia adicional al acceder a los datos en SSD.

En clústeres con organización de datos en niveles, MemoryDB supervisa la última hora de acceso de cada elemento que almacena. Cuando la memoria disponible (DRAM) se consume por completo, MemoryDB utiliza un algoritmo de menos usados recientemente (LRU) para trasladar automáticamente los elementos a los que se obtiene acceso con poca frecuencia de la memoria a la SSD. Cuando se obtiene acceso posteriormente a los datos de SSD, MemoryDB los mueve de nuevo a la memoria de forma automática y asíncrona antes de procesar la solicitud. Si tiene una carga de trabajo que solo accede a un subconjunto de sus datos regularmente, la organización de datos en niveles es una forma óptima de escalar su capacidad de forma rentable.

Tenga en cuenta que cuando se utiliza la organización de datos en niveles, las propias claves siempre permanecen en la memoria, mientras que la LRU rige la ubicación de los valores en la memoria frente al disco. En general, recomendamos que los tamaños de las claves sean más pequeños que los tamaños de los valores al usar la organización de datos en niveles.

La organización de datos en niveles está diseñada para tener un impacto mínimo en el rendimiento de las cargas de trabajo Por ejemplo, suponiendo valores de cadena de 500 bytes, puede esperar por lo general 450 microsegundos adicionales de latencia para las solicitudes de lectura de datos almacenados en SSD en comparación con las solicitudes de datos de la memoria.

Con el mayor tamaño de nodo de organización de datos en niveles (db.r6gd.8xlarge), puede almacenar hasta ~500 TB en un solo clúster de 500 nodos (250 TB cuando se utiliza 1 réplica de lectura). Para la organización de datos en niveles, MemoryDB reserva el 19 % de la memoria (DRAM) por nodo para usos distintos de los datos. La organización de datos en niveles es compatible con todos los comandos y estructuras de datos de Redis compatibles con MemoryDB. No es necesario cambiar el lado del cliente para usar esta característica.

Prácticas recomendadas

Recomendamos que siga las siguientes prácticas recomendadas:

  • La organización de datos en niveles es ideal para cargas de trabajo que acceden regularmente hasta un 20 % de su conjunto de datos general y para aplicaciones que pueden tolerar latencia adicional al acceder a los datos en SSD.

  • Al utilizar la capacidad de SSD disponible en nodos con niveles de datos, recomendamos que el tamaño del valor sea mayor que el tamaño de la clave. El tamaño del valor no puede ser superior a 128 MB; de lo contrario, no se moverá al disco. Cuando se mueven elementos entre DRAM y SSD, las claves siempre permanecerán en la memoria y solo los valores se moverán al nivel de SSD.

Limitaciones

La organización de datos en niveles tiene las siguientes restricciones:

  • El tipo de nodo que utilice debe pertenecer a la familia r6gd, que está disponible en las siguientes regiones: 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 y sa-east-1.

  • No se puede restaurar una instantánea de un clúster r6gd en otro clúster a menos que también utilice r6gd.

  • No se puede exportar una instantánea a Amazon S3 para clústeres de organización de datos en niveles.

  • No se admite el guardado sin ramificación.

  • No se admite el escalado desde un clúster de organización de datos en niveles (por ejemplo, un clúster que utiliza un tipo de nodo r6gd) a un clúster que no utiliza la organización de datos en niveles (por ejemplo, un clúster que utiliza un tipo de nodo r6g).

  • La organización de datos en niveles solo admite las políticas maxmemory volatile-lru, allkeys-lru y noeviction.

  • Los artículos de más de 128 MiB no se mueven a SSD.

Precios de organización de datos en niveles

Los nodos R6gd tienen 5 veces más capacidad total (memoria + SSD) y pueden ayudarle a ahorrar más del 60 por ciento de los costos de almacenamiento cuando se ejecutan con la máxima utilización en comparación con los nodos R6g (solo memoria). Para obtener más información, consulte Precios de MemoryDB.

Supervisión

MemoryDB ofrece métricas diseñadas específicamente para monitorear los clústeres de rendimiento que utilizan la organización de datos en niveles. Para monitorear la proporción de elementos en DRAM en comparación con SSD, puede utilizar la métrica CurrItems en Métricas de MemoryDB. Puede calcular el porcentaje de la siguiente manera:(CurrItems with Dimension: Tier = Memory * 100) / (CurrItems with no dimension filter). Cuando el porcentaje de elementos en la memoria disminuye por debajo del 5 %, le recomendamos que lo considereEscalado de clústeres de MemoryDB.

Para obtener más información, consulte Métricas para clústeres de MemoryDB que utilizan la organización de datos en niveles en Métricas de MemoryDB.

Uso de la organización de datos en niveles

Al crear un clúster, se utiliza la organización de datos en niveles seleccionando un tipo de nodo de la familia r6gd, como db.r6gd.xlarge. La selección de ese tipo de nodo habilita automáticamente la organización de datos en niveles.

Para obtener más información sobre la creación de clústeres, consulte Paso 1: creación de un clúster.

Al crear un clúster utilizando la AWS CLI, puede utilizar la organización de datos en niveles seleccionando un tipo de nodo de la familia r6gd, como db.r6gd.xlarge y configurando el parámetro --data-tiering.

No puede excluirse de la organización de datos en niveles al seleccionar un tipo de nodo de la familia r6gd. Si configura el parámetro --no-data-tiering, la operación no se llevará a cabo correctamente.

Para Linux, macOS o Unix:

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

Para Windows:

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

Después de ejecutar esta operación, verá una respuesta parecida a la siguiente:

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

Restauración de datos desde una instantánea en clústeres con la organización de datos en niveles habilitada

Puede restaurar una instantánea en un nuevo clúster con la organización de datos en niveles habilitada mediante la consola, la CLI de AWS o la API de MemoryDB. Cuando crea un clúster mediante tipos de nodos de la familia r6gd, se habilita la organización de datos en niveles.

Restauración de datos desde una instantánea en clústeres con la organización de datos en niveles habilitada (consola)

Para restaurar una instantánea a un nuevo clúster con la organización de datos en niveles habilitada (consola), siga los pasos que se indican en Restauración a partir de una instantánea (consola)

Tenga en cuenta que para habilitar la organización de datos en niveles, debe seleccionar un tipo de nodo de la familia r6gd.

Al crear un clúster utilizando la AWS CLI, la organización de datos en niveles se utiliza de forma predeterminada seleccionando un tipo de nodo de la familia r6gd, como db.r6gd.xlarge y configurando el parámetro --data-tiering.

No puede excluirse de la organización de datos en niveles al seleccionar un tipo de nodo de la familia r6gd. Si configura el parámetro --no-data-tiering, la operación no se llevará a cabo correctamente.

Para Linux, macOS o 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

Para Linux, macOS o 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

Después de ejecutar esta operación, verá una respuesta parecida a la siguiente:

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