Preguntas frecuentes de Amazon MemoryDB

Aspectos generales

Amazon MemoryDB es un servicio de base de datos en memoria duradero y compatible con Valkey y Redis OSS que ofrece un rendimiento ultrarrápido. MemoryDB permite lograr una latencia de lectura de microsegundos, una latencia de escritura de milisegundos de un solo dígito, un alto rendimiento y una durabilidad Multi-AZ para aplicaciones modernas, como las creadas con arquitecturas de microservicios. Estas aplicaciones requieren baja latencia, alta escalabilidad y utilizan las estructuras de datos y las API flexibles de Valkey y Redis OSS para facilitar y agilizar el desarrollo. MemoryDB almacena todo el conjunto de datos en la memoria y utiliza un registro transaccional distribuido para ofrecer velocidad y durabilidad en memoria, como así coherencia y capacidad de recuperación de los datos. Puede utilizar MemoryDB como una base de datos principal completamente administrada, lo que permite crear aplicaciones de alto rendimiento sin administrar por separado una caché, una base de datos duradera o la infraestructura subyacente requerida. Con MemoryDB Multi-Region, puede crear aplicaciones fácil y rápidamente en varias regiones con una disponibilidad de hasta el 99,999 % y una latencia de lectura de microsegundos y de escritura de un solo dígito en milisegundos.

Para empezar, cree un nuevo clúster de MemoryDB a través de la Consola de administración de AWS, la interfaz de la línea de comandos (CLI) o el kit de desarrollo de software (SDK). Para crear un clúster de MemoryDB en la consola, inicie sesión y navegue hasta Amazon MemoryDB. Allí, seleccione “Get Started” (Comenzar) y, a continuación, “Create new cluster” (Crear nuevo clúster). Para obtener pasos más detallados y una introducción a la CLI, consulte la documentación de MemoryDB.

Sí. MemoryDB mantiene la compatibilidad con Valkey y Redis OSS y también es compatible con el mismo conjunto de tipos de datos, parámetros y comandos que usted ya conoce. Esto significa que el código de su aplicación, los clientes y las herramientas que ya usa actualmente con Valkey y Redis OSS se pueden utilizar con MemoryDB. MemoryDB es compatible con todos los tipos de datos de Valkey y Redis OSS, como las cadenas, las listas, los conjuntos, los hashes, los conjuntos ordenados, los hiperregistros, los mapas de bits y las transmisiones. Además, MemoryDB es compatible con los más de 200 comandos de Valkey y Redis OSS, con la excepción de los comandos de administración de Valkey y Redis OSS, ya que MemoryDB administra el clúster.

Para obtener información sobre las versiones de Redis OSS compatibles con MemoryDB, consulte la documentación de MemoryDB.

Un clúster de MemoryDB es una colección de uno o más nodos que sirven a un único conjunto de datos. Un conjunto de datos de MemoryDB se divide en particiones y cada una tiene un nodo principal y hasta 5 nodos de réplica opcionales. Un nodo principal atiende solicitudes de lectura y escritura, mientras que una réplica solo atiende solicitudes de lectura. Un nodo principal puede realizar una conmutación por error a un nodo de réplica y promover esa réplica al nuevo nodo principal de esa partición. Para obtener más información, consulte la documentación de MemoryDB.

MemoryDB es una base de datos en memoria duradera para cargas de trabajo que requieren una base de datos principal ultrarrápida, compatible con Valkey o Redis OSS. Debería considerar el uso de MemoryDB si su carga de trabajo requiere una base de datos duradera que brinde un rendimiento ultrarrápido (latencia de lectura de microsegundos y latencia de escritura de un solo dígito de milisegundos). MemoryDB también puede resultar adecuada para un caso de uso si lo que se desea es crear una aplicación que utilice estructuras de datos y API de Valkey o Redis OSS con una base de datos principal y duradera. Por último, debe considerar el uso de MemoryDB para simplificar la arquitectura de la aplicación y reducir los costos al reemplazar el uso de una base de datos por una caché para mayor durabilidad y rendimiento.

ElastiCache es un servicio que se utiliza habitualmente para almacenar en caché datos de otras bases de datos y almacenes de datos mediante Valkey, Memcached o Redis OSS. Debería considerar ElastiCache para almacenar en caché las cargas de trabajo en las que desee acelerar el acceso a los datos con su base de datos o almacén de datos principal existente (rendimiento de lectura y escritura en microsegundos). También debería considerar ElastiCache para casos de uso en los que se desee utilizar estructuras de datos y API de Valkey o Redis OSS para acceder a datos almacenados en una base de datos o almacén de datos principal.

Para conocer los límites y las cuotas actuales, consulte la documentación de MemoryDB.

MemoryDB Multi-Region

Amazon MemoryDB Multi-Region es una base de datos multirregional totalmente gestionada, activa y multirregional que le permite crear aplicaciones con una disponibilidad de hasta el 99,999 % y una latencia de lectura de microsegundos y de escritura de milisegundos de un dígito. Proporciona redundancia de datos en varias regiones de AWS, por lo que puede mejorar la disponibilidad y la resiliencia de sus aplicaciones multirregionales, incluso si el procesamiento de una aplicación se interrumpe en una región y no puede conectarse a su punto de enlace de MemoryDB. MemoryDB Multi-Region ofrece una replicación activa-activa para que pueda atender las lecturas y escrituras localmente desde las regiones más cercanas a sus clientes con una latencia de lectura de microsegundos y una latencia de escritura de milisegundos de un dígito. Replica los datos de forma asincrónica entre regiones y, por lo general, los datos se propagan en un segundo. MemoryDB Multi-Region resuelve automáticamente los conflictos de actualización y corrige los problemas de divergencia de datos para que pueda centrarse en su aplicación.

Debe usar MemoryDB Multi-Region si desea crear aplicaciones que necesiten los niveles más altos de disponibilidad, mayor resiliencia y mejor continuidad empresarial. MemoryDB Multi-Region también se puede usar si desea crear y ejecutar aplicaciones multirregionales que requieren un tiempo de respuesta rápido en cualquier parte del mundo.

Cuando se usa MemoryDB Multi-Region, MemoryDB replica los datos en clústeres regionales en una configuración denominada clúster multirregional. Cuando los datos se escriben en cualquier clúster regional dentro del clúster multirregional, MemoryDB replica esos datos de forma automática y asincrónica en todos los demás clústeres regionales, normalmente en un segundo, sin afectar al rendimiento de la aplicación. MemoryDB Multi-Region resuelve automáticamente los conflictos de actualización y corrige los problemas de divergencia de datos. La resolución de conflictos es completamente administrada y se lleva a cabo en segundo plano sin afectar la disponibilidad de la aplicación.

Para empezar a utilizar MemoryDB Multi-Region, debe crear un nuevo clúster multirregional y un clúster regional en una de las regiones de AWS que desee mediante la consola de AWS, el SDK de AWS o la CLI. Una vez creado el primer clúster regional, puede agregar hasta cuatro regiones adicionales al clúster multirregional. Cuando se escriben datos en cualquier clúster regional, MemoryDB Multi-Region replicará automáticamente esos datos en todos los demás clústeres regionales del clúster multirregional, normalmente en un segundo. Si utiliza MemoryDB en la actualidad, puede tomar una instantánea de su clúster y utilizarla para iniciar un nuevo clúster multirregional y regional.  

Puede añadir nuevos clústeres regionales a un clúster multirregional de MemoryDB creando clústeres regionales en las regiones de AWS correspondientes. Sin embargo, no puede agregar un clúster de MemoryDB existente a un clúster MemoryDB Multi-Region existente. Solo puede crear un nuevo clúster regional o eliminar un clúster regional existente de un clúster MemoryDB Multi-Region. Al eliminar un clúster regional, MemoryDB Multi-Region eliminará el clúster de esa región específica y, al mismo tiempo, mantendrá el clúster MemoryDB Multi-Region. Los clientes pueden optar por agregar más clústeres regionales dentro del mismo clúster MemoryDB Multi-Region más adelante.

MemoryDB Multi-Region proporciona una coherencia final porque realiza una replicación asincrónica, lo que preserva las velocidades en la memoria. Cualquier actualización realizada en una clave en uno de los clústeres regionales multirregionales de MemoryDB se propaga a otros clústeres regionales de forma asincrónica dentro del clúster multirregional de MemoryDB, normalmente en menos de un segundo.

MemoryDB Multi-Region utiliza el tipo de datos replicados sin conflictos (CRDT) para conciliar las escrituras simultáneas conflictivas. El CRDT es una estructura de datos que se puede actualizar de forma independiente y simultánea sin coordinación. El conflicto entre escritura y escritor se fusiona de forma independiente en cada réplica con una coherencia final.

Si una región se aísla o se degrada, MemoryDB Multi-Region realiza un seguimiento de las escrituras que ha realizado pero que aún no se ha propagado a todos los clústeres regionales. Cuando la región vuelve a estar en línea, MemoryDB Multi-Region reanuda la actividad al propagar cualquier tarea de escritura pendiente desde la región a los clústeres regionales en otras regiones. También reanuda la propagación de escritos de otros clústeres regionales a la Región, que ahora está nuevamente en línea. MemoryDB Multi-Region propaga eventualmente todas las escrituras anteriormente exitosas, sin importar cuánto tiempo esté aislada la región. Pueden surgir conflictos si su aplicación actualiza la misma clave en diferentes regiones aproximadamente al mismo tiempo. MemoryDB Multi-Region utiliza la reconciliación de tipos de datos replicados (CRDT) sin conflictos entre actualizaciones simultáneas. La resolución de conflictos es completamente administrada y se lleva a cabo en segundo plano sin afectar la disponibilidad de la aplicación.

Rendimiento y durabilidad

El rendimiento y la latencia de MemoryDB varían según el tipo de nodo, el tamaño de la carga útil y la cantidad de conexiones de clientes. MemoryDB ofrece una latencia de lectura de microsegundos, una latencia de escritura de milisegundos de un solo dígito y una latencia de lectura tras escritura en el nodo principal de una partición del clúster. MemoryDB es compatible con hasta 390 000 solicitudes de lectura y 100 000 solicitudes de escritura por segundo y un rendimiento de hasta 1,3 GB/s para lectura y de hasta 100 MB/s para la escritura por nodo (según las pruebas internas de cargas de trabajo de solo lectura y solo escritura). Un clúster de MemoryDB particiona los datos en uno o más nodos, lo que permite agregar más particiones o réplicas a su clúster para aumentar el rendimiento agregado.

MemoryDB almacena todo el conjunto de datos en la memoria y utiliza un registro transaccional Multi-AZ distribuido para ofrecer durabilidad, coherencia y capacidad de recuperación de los datos. Al almacenar los datos en varias zonas de disponibilidad, MemoryDB permite una recuperación y un reinicio rápidos de la base de datos. Al almacenar también los datos en la memoria, MemoryDB ofrece un rendimiento ultrarrápido y un alto rendimiento.

MemoryDB aprovecha un registro transaccional distribuido para almacenar datos de forma duradera. Al almacenar los datos en varias zonas de disponibilidad, MemoryDB permite una recuperación y un reinicio rápidos de la base de datos. Además, MemoryDB ofrece una coherencia final para los nodos de réplica y lecturas coherentes en los nodos principales.

Valkey y Redis OSS incluyen una característica opcional de archivo de solo adición (AOF), en la que los datos se conservan en un archivo en el disco del nodo principal para garantizar la durabilidad. Sin embargo, dado que AOF almacena los datos de manera local en los nodos principales de una única zona de disponibilidad, existen riesgos de pérdida de datos. Además, en caso de que un nodo falle, existe el riesgo de problemas de coherencia con las réplicas.

Sí, MemoryDB es compatible con la alta disponibilidad. Puede crear un clúster de MemoryDB con disponibilidad Multi-AZ con hasta 5 réplicas en diferentes zonas de disponibilidad. Cuando se produce un error en un nodo principal, MemoryDB realizará automáticamente una conmutación por error y promoverá una de las réplicas para que sirva como el nuevo tráfico de escritura principal y dirija hacia ella. Además, MemoryDB utiliza un registro transaccional distribuido para garantizar que los datos de las réplicas se mantengan actualizados, incluso en caso de que se produzca un error en el nodo principal. La conmutación por error suele ocurrir en menos de 20 segundos en el caso de las interrupciones no planificadas y, por lo general, en menos de 200 milisegundos en el caso de las interrupciones planificadas.

MemoryDB utiliza un registro transaccional distribuido para almacenar de forma duradera los datos escritos en la base de datos durante la recuperación, el reinicio, la conmutación por error y, en última instancia, la coherencia entre las bases de datos principales y las réplicas.

Valkey y Redis OSS permiten escrituras y lecturas con coherencia fuerte en el nodo principal de cada partición y lecturas con coherencia posterior desde las réplicas de lectura. Estas propiedades de coherencia no están garantizadas si se produce un error en un nodo principal, ya que las escrituras pueden perderse durante una conmutación por error y, por lo tanto, infringir el modelo de coherencia.

El modelo de coherencia de MemoryDB es similar al de Valkey y Redis OSS. Sin embargo, en MemoryDB, los datos no se pierden durante las conmutaciones por error, lo que permite a los clientes leer sus escrituras desde las principales independientemente de las fallas de los nodos. Solo están visibles los datos que persisten correctamente en el registro de transacciones Multi-AZ. Los nodos de réplica aún son de coherencia posterior y las métricas de retraso se publican en Amazon CloudWatch.

Con la versión 7.0 de MemoryDB para Redis OSS, introdujimos la multiplexación de E/S mejorada, que ofrece mejoras adicionales en el rendimiento y la latencia a escala. La versión 7.2 de MemoryDB para Valkey también admite la multiplexación de E/S mejorada. La multiplexación de E/S mejorada resulta ideal para las cargas de trabajo vinculadas al rendimiento con varias conexiones de clientes y sus beneficios escalan según el nivel de simultaneidad de cargas de trabajo. Por ejemplo, al utilizar el nodo r6g.4xlarge y ejecutar 5200 clientes simultáneos, se puede conseguir hasta un 46 % más de rendimiento (operaciones de lectura y escritura por segundo) y hasta un 21 % menos de latencia P99, en comparación con la versión 6 de MemoryDB para Redis OSS. Para estos tipos de cargas de trabajo, el procesamiento de E/S de red de un nodo puede convertirse en un factor limitante en la capacidad de escalar. Con la multiplexación de E/S mejorada, cada subproceso de E/S de red dedicado canaliza los comandos de varios clientes al motor MemoryDB, lo que aprovecha la capacidad del motor para procesar eficientemente los comandos por lotes.

Para obtener más información, consulte la documentación.

Ingesta y consulta de datos

Para escribir datos en el clúster de MemoryDB y leerlos, conéctese al clúster con uno de los clientes de Valkey o Redis OSS compatibles. Para obtener una lista de los clientes de Valkey o Redis OSS compatibles, consulte la documentación de Valkey o Redis OSS. Para obtener instrucciones sobre cómo establecer una conexión con el clúster de MemoryDB mediante un cliente de Valkey o Redis OSS, consulte la documentación de MemoryDB. Valkey funcionará con los clientes de Redis OSS existentes, por lo que no es necesario cambiar de cliente al pasar de Redis OSS a Valkey.

Equipo, escalado y mantenimiento

Crea un clúster de MemoryDB con hasta 500 nodos. Esto ofrece una capacidad máxima de almacenamiento de memoria de aproximadamente 100 TB, suponiendo que tenga 250 nodos principales cada uno con una réplica para una alta disponibilidad (500 nodos en total).

Sí, puede ajustar el tamaño de su clúster de MemoryDB, tanto horizontal y como verticalmente. Puede escalar su clúster de manera horizontal al agregar o quitar nodos. Puede optar por agregar particiones para distribuir el conjunto de datos en más particiones y puede agregar nodos de réplica adicionales a cada partición para aumentar la disponibilidad y el rendimiento de lectura. También, puede eliminar particiones y réplicas para escalar su clúster. Además, puede escalar su clúster de manera vertical al cambiar el tipo de nodo, lo que modifica los recursos de memoria y CPU por nodo. Durante las operaciones de ajuste de tamaño horizontal y vertical, el clúster permanece en línea y atiende solicitudes de lectura y escritura.

MemoryDB facilita el mantenimiento y las actualizaciones de su clúster y brinda procesos diferentes para el mantenimiento del clúster. En primer lugar, para algunas actualizaciones obligatorias, MemoryDB corrige automáticamente el clúster durante los periodos de mantenimiento que especifique. En segundo lugar, para algunas actualizaciones, MemoryDB utiliza actualizaciones de servicio, las cuales puede aplicar en cualquier momento o programar para un periodo de mantenimiento futuro. Algunas actualizaciones del servicio se programan automáticamente en una ventana de mantenimiento después de una fecha determinada. Las actualizaciones de clústeres ayudan a reforzar la seguridad, la fiabilidad y el rendimiento operativo de los clústeres, mientras el clúster sigue en línea y atiende solicitudes de lectura y escritura. Para obtener más información sobre el mantenimiento del clúster, consulte la documentación de MemoryDB.

Copia de seguridad y restauración

Sí, puede crear instantáneas para hacer copias de seguridad de los datos y los metadatos de su clúster de MemoryDB. Puede crear una instantánea manualmente o puede utilizar el programador automático de instantáneas de MemoryDB para tomar una nueva instantánea cada día, a la hora que especifique. Puede optar por conservar la instantánea en MemoryDB hasta 35 días después de su creación. Las instantáneas se almacenan en Amazon S3, diseñado para ofrecer una durabilidad del 99,999999999 % (once nueves). Además, puede optar por tomar una instantánea final de su clúster al eliminarlo. También puede exportar las instantáneas de MemoryDB del servicio a su bucket de Amazon S3. Para obtener más información sobre las instantáneas, consulte la documentación de MemoryDB.

Sí, puede restaurar su clúster de MemoryDB desde una instantánea al crear un nuevo clúster de MemoryDB.

Sí, puede restaurar el clúster de MemoryDB desde un archivo RDB de Valkey o Redis OSS. Puede especificar el archivo RDB desde el que desea restaurar al crear un nuevo clúster de MemoryDB.

Sí, puede migrar datos de ElastiCache a MemoryDB. En primer lugar, cree una instantánea de su clúster de ElastiCache y expórtela a su bucket de S3. A continuación, cree un nuevo clúster de MemoryDB y especifique la copia de seguridad desde la que desea restaurar. MemoryDB creará un nuevo clúster con los datos y los metadatos de Valkey o Redis OSS de la instantánea. Para obtener más información sobre la migración de datos de ElastiCache a MemoryDB, consulte la documentación de MemoryDB.

Métricas

Sí, MemoryDB ofrece métricas operativas y de rendimiento para su clúster. MemoryDB cuenta con más de 30 métricas de CloudWatch, las cuales se pueden ver en la consola de MemoryDB. Para obtener más información sobre las métricas de CloudWatch y MemoryDB, consulte la documentación de MemoryDB.

Seguridad y cumplimiento

Sí, MemoryDB es compatible con el cifrado de sus datos, tanto en reposo como en tránsito. Para el cifrado en reposo, puede utilizar las claves administradas por el cliente (CMK) de AWS Key Management Service o una clave que brinde MemoryDB. Con las instancias de Graviton2 para su clúster de MemoryDB, sus datos se cifran en la memoria mediante un cifrado DRAM siempre activo de 256 bits.

MemoryDB utiliza listas de control de acceso (ACL) para controlar tanto la autenticación como la autorización para el clúster. Las ACL le permiten definir diferentes permisos para diferentes usuarios en el mismo clúster. Una ACL es una colección de uno o más usuarios. Cada usuario tiene una contraseña y una cadena de acceso, que se utilizan para autorizar el acceso a comandos y datos. Para obtener más información sobre las ACL en MemoryDB, consulte la documentación de MemoryDB.

Sí, todos los clústeres de MemoryDB deben iniciarse en una VPC.

Seguiremos respaldando más certificaciones de cumplimiento. Consulte aquí la información más reciente sobre la preparación para el cumplimiento.

Sí. Para recibir un historial de todas las llamadas a la API de Amazon MemoryDB realizadas en su cuenta, solo tiene que activar CloudTrail en la consola de administración de AWS. Para obtener más información, consulte la página de inicio de CloudTrail.

Optimización de costos

Los niveles de datos para Amazon MemoryDB son una nueva opción de relación precio-rendimiento para MemoryDB, que traslada automáticamente los datos a los que se accede con menos frecuencia de la memoria a unidades de estado sólido (SSD) de alto rendimiento conectadas localmente. Los niveles de datos aumentan la capacidad, simplifica la administración de clústeres y mejora el costo total de propiedad (TCO) de MemoryDB.

Debe utilizar los niveles de datos cuando necesite una forma más fácil y rentable de escalar la capacidad de datos de sus clústeres de MemoryDB sin sacrificar la disponibilidad de las aplicaciones. Los niveles de datos son ideales para las cargas de trabajo que acceden a un máximo del 20 % de los datos habitualmente y para las aplicaciones que pueden tolerar una latencia adicional la primera vez que es necesario un elemento al que se accede con menor frecuencia. El uso de los niveles de datos con los nodos R6gd con casi cinco veces más de capacidad total (memoria + SSD) ayuda a lograr ahorros de costo de almacenamiento en alrededor del 60 % cuando se ejecutan con un uso máximo en comparación con los nodos R6g (solo memoria). Al asumir valores de cadena de 500 bytes, normalmente puede esperar una latencia adicional de 450 µs para solicitudes de lectura de datos almacenados en el SSD, en comparación con solicitudes de lectura de datos almacenados en la memoria.

Los niveles de datos funcionan a través del uso del almacenamiento SSD en los nodos del clúster cuando se agota la capacidad de memoria disponible. Cuando se utilizan nodos de clúster con almacenamiento SSD, la organización por niveles de datos se habilita automáticamente y MemoryDB administra la ubicación de los datos, moviendo los elementos de forma transparente entre la memoria y el disco mediante una política de uso menos reciente (LRU). Cuando la memoria se consume por completo, MemoryDB detecta automáticamente qué elementos se utilizaron menos recientemente y mueve sus valores al disco, lo que optimiza el costo. Cuando una aplicación necesita recuperar un elemento del disco, MemoryDB mueve de forma transparente su valor a la memoria antes de atender la solicitud, con un impacto mínimo en el rendimiento.

Para empezar, cree un nuevo clúster de MemoryDB con instancias optimizadas para la memoria con procesadores AWS Graviton2 basados en ARM y SSD NVMe (R6gd). Luego, puede migrar los datos de un clúster existente al importar una instantánea.

Los nodos R6gd con niveles de datos se basan en la hora de instancia consumida. También paga por los datos escritos cuando usa R6gd, de forma similar a otros tipos de nodos de MemoryDB. Consulte la página de precios de MemoryDB para obtener más detalles.

Para empezar, cree un nuevo clúster de MemoryDB con instancias optimizadas para la memoria con procesadores AWS Graviton2 basados en ARM y SSD NVMe (R6gd). Luego, puede migrar los datos de un clúster existente al importar una instantánea.

Los nodos reservados de MemoryDB ofrecen flexibilidad de tamaño dentro de una familia de nodos y una región de AWS. Esto significa que la tarifa de nodos reservados con descuento se aplicará automáticamente al uso de todos los tamaños en la misma familia de nodos. Por ejemplo, si compra un nodo reservado r6g.xlarge y necesita escalar a al nodo r6g.2xlarge, que es más grande, la tarifa de nodos reservados con descuento se aplicará automáticamente al 50 % del uso del nodo r6g.2xlarge en la misma región de AWS. La capacidad de flexibilidad de tamaño reducirá el tiempo que tendrá que dedicar a administrar sus nodos reservados y, dado que ya no está sujeto a un tamaño de nodo de base de datos específico, podrá aprovechar al máximo su descuento incluso si su capacidad necesita cambios.

Los precios de los nodos reservados de MemoryDB se basan en el tipo de nodo, la duración del plazo (uno o tres años), la opción de pago (Sin pago anticipado, Pago parcial por adelantado, Todo por adelantado) y la región de AWS. Tenga en cuenta que los precios de los nodos reservados no cubren los costos de escritura de datos ni de almacenamiento de instantáneas. Consulte la página de precios de MemoryDB para obtener más detalles.

MemoryDB ofrece nodos reservados para los nodos R6g, R7g y R6gd con memoria optimizada (con niveles de datos).