Una base de datos en memoria es aquella que se basa principalmente en la memoria interna para el almacenamiento de datos. Gracias a ella, los tiempos de respuesta son mínimos, ya que no es necesario acceder a unidades de disco estándar (SSD). Las bases de datos en memoria son perfectas para las aplicaciones que requieren tiempos de respuesta de microsegundos o sufren picos importantes de tráfico, como las tablas de clasificación de videojuegos, los almacenes de sesiones y los análisis de datos en tiempo real. Los términos base de datos en memoria principal (MMDB), sistema de base de datos en memoria (IMDS) y sistema de base de datos en tiempo real (RTDB) también hacen referencia a las bases de datos en memoria.

¿Cuáles son las ventajas de las bases de datos en memoria?

Una base de datos en memoria ofrece diversas ventajas que analizamos en detalle a continuación.

Baja latencia, que proporciona respuestas en tiempo real

La latencia es el desfase que se produce entre la solicitud de acceso a los datos y la respuesta de la aplicación. Las bases de datos en memoria ofrecen bajas latencias predecibles a cualquier escala. Presentan una latencia de lectura de microsegundos, una latencia de escritura de milisegundos de un solo dígito y un alto nivel de rendimiento.

Como resultado, el almacenamiento en memoria permite a las empresas tomar decisiones basadas en datos en tiempo real. Puede diseñar aplicaciones que procesen datos y hagan frente a los cambios antes de que sea demasiado tarde. Por ejemplo, la computación en memoria asociada a los datos de los sensores de los vehículos autónomos puede proporcionar el tiempo de respuesta deseado en fracciones de segundo para el frenado de emergencia.

Alto nivel de rendimiento

Las bases de datos en memoria se caracterizan por su alto nivel de rendimiento. Este término hace referencia a la cantidad de operaciones de lectura (rendimiento de lectura) o escritura (rendimiento de escritura) que se realizan en un periodo determinado. Por ejemplo, bytes/minuto o transacciones por segundo.

Alta escalabilidad

Puede escalar su base de datos en memoria para hacer frente a las demandas cambiantes de la aplicación. Es posible escalar tanto la escritura como la lectura sin afectar negativamente al rendimiento. La base de datos permanece en línea y admite operaciones de lectura y escritura durante el ajuste de tamaño.

¿Cuáles son los casos de uso de las bases de datos en memoria?

Las bases de datos en memoria son una buena opción para los sectores bancarios, de telecomunicaciones, juegos y publicidad para dispositivos móviles. A continuación ofrecemos algunos ejemplos de casos de uso de bases de datos en memoria.

Almacenamiento en caché

Una memoria caché es una capa de almacenamiento de datos de alta velocidad que almacena un subconjunto de datos normalmente transitorios. El objetivo principal de la caché es aumentar el rendimiento de recuperación de datos para evitar tener que acceder a la capa subyacente de almacenamiento, que es más lenta. De este modo, las solicitudes futuras de esos datos se procesan con mayor rapidez que si se accediera a la ubicación de almacenamiento de datos principal.

El almacenamiento en caché permite reutilizar de forma eficaz los datos recuperados o procesados anteriormente. El almacenamiento de datos en memoria facilita un acceso más rápido a los datos almacenados en caché. Sin embargo, el almacenamiento en caché compensa la durabilidad por el tiempo de respuesta. Este último es más rápido porque los datos se recuperan de la memoria, pero el almacenamiento en caché no protege contra la pérdida de datos en la memoria. Por este motivo, el almacenamiento en caché se utiliza a menudo combinado con una base de datos duradera basada en disco.

Ofertas en tiempo real

La oferta en tiempo real se refiere a la compra y venta de impresiones de anuncios en línea. Por lo general, debe realizarse mientras el usuario carga una página web en 100-120 milisegundos y, en ocasiones, en tan solo 50 milisegundos. Durante este periodo, las aplicaciones de ofertas en tiempo real solicitan ofertas a todos los compradores para el espacio publicitario, seleccionan una ganadora en función de diversos criterios, la muestran y recopilan información posterior a la publicación del anuncio. Las bases de datos en memoria son ideales para la incorporación, el procesamiento y el análisis de datos en tiempo real con una latencia inferior a los milisegundos.

Tablas de clasificación de videojuegos

Una tabla de clasificación de videojuegos relativa muestra la posición de un jugador en relación con otros de rango similar. Estas tablas permiten fomentar la participación de los jugadores y evitar que se desmotiven en comparación con los mejores. Las bases de datos en memoria pueden ofrecer resultados de clasificación de forma rápida y actualizar la tabla en tiempo real en un juego donde participan millones de jugadores.

¿Cómo funciona una caché en memoria?

Una caché en memoria utiliza una memoria de acceso aleatorio (RAM) para almacenar los datos. Esta tecnología almacena las tablas de datos directamente en la RAM en vez de hacerlo en unidades externas. Las estructuras de datos especializadas permiten crear índices de los registros de datos, que funcionan como punteros de acceso directo a filas y columnas específicas. Sin embargo, los datos físicos reales están comprimidos y tienen un formato no relacional. Cuando se realiza una solicitud de acceso, en la base de datos se busca el valor exacto de los datos con ayuda del índice. Los datos almacenados siempre están disponibles en un formato directamente utilizable.

Características como la computación de 64 bits, los precios más bajos de la RAM y los servidores de varios núcleos permiten que el almacenamiento en memoria sea cada vez más frecuente. Además, los almacenes de datos basados en la nube permiten ampliar o reducir los recursos de RAM en función de las necesidades, lo que flexibiliza la tecnología en memoria y mejora su accesibilidad.

Diferencia entre la caché en memoria y las bases de datos tradicionales en disco

Una base de datos tradicional guarda todos los datos en unidades de disco externas o en unidades de estado sólido. Cada operación de lectura y escritura requiere un acceso al disco. Por el contrario, la caché en memoria no da prioridad a la persistencia de los datos. Por ejemplo, las cachés únicamente pueden guardar datos de forma periódica en medios de almacenamiento externos. A continuación, se resumen las diferencias entre las cachés en memoria y las bases de datos tradicionales.

¿Cuál es la diferencia entre una caché en memoria y una base de datos en memoria?

Las cachés en memoria proporcionan un mejor rendimiento porque los datos de escritura no se guardan, lo que elimina el tiempo adicional necesario para su conservación. Una base de datos en memoria guarda los datos de escritura, de modo que los cambios son duraderos. Esta durabilidad se consigue a costa de un menor rendimiento de los datos de escritura. Sin embargo, las bases de datos en memoria siguen ofreciendo un mayor rendimiento que las basadas en disco. Desde el punto de vista del rendimiento, se sitúan entre una caché en memoria y una base de datos en disco.

¿Cuáles son las limitaciones de las cachés en memoria?

Dado que todos los datos se almacenan y gestionan exclusivamente en memoria, las cachés en memoria corren el riesgo de perder datos en caso de producirse un error en el proceso o en el servidor. A fin de mejorar la durabilidad, una caché en memoria puede conservar los datos de forma periódica en bases de datos en disco. A continuación, se describen algunos mecanismos destinados a mejorar la durabilidad.

Archivos de instantáneas

Los archivos de instantáneas registran el estado de la base de datos en un momento dado. La caché en memoria genera instantáneas de forma periódica o durante una suspensión controlada. Aunque la generación de instantáneas mejora en cierta medida la durabilidad, puede producirse una pérdida de datos entre cada una de ellas.

Registro de transacciones

El registro de transacciones guarda los cambios realizados en la base de datos en un archivo de diario externo. Este registro es independiente de la lectura/escritura de datos y no afecta al rendimiento. El archivo de diario facilita la recuperación automática de una caché en memoria.

Replicación

Algunas cachés en memoria utilizan la redundancia para ofrecer una alta disponibilidad. Para ello, mantienen varias copias de los mismos datos en distintos módulos de memoria. Si hay un error en uno de ellos, se produce una conmutación por error automática a la copia de seguridad duplicada. De este modo, se reduce el riesgo de pérdida de datos con una memoria caché.

¿De qué manera puede AWS cumplir con los requisitos de su base de datos y caché en memoria?

AWS ofrece diferentes servicios de base de datos y caché en memoria totalmente administrados que se adaptan a sus necesidades particulares.

Base de datos en memoria

Amazon MemoryDB para Redis

Amazon MemoryDB para Redis es un servicio de base de datos en memoria duradero que ofrece un rendimiento ultrarrápido. Es compatible con Redis, un almacén de datos de código abierto muy conocido. Esto permite a los clientes crear rápidamente aplicaciones con las mismas estructuras de datos, API y comandos de Redis, flexibles y fáciles de usar, que se emplean en la actualidad. MemoryDB también almacena datos de forma duradera en varias zonas de disponibilidad (AZ) mediante un registro transaccional Multi-AZ para permitir una rápida conmutación por error, recuperación de bases de datos y reinicios de nodos.

Cachés en memoria

Amazon ElastiCache para Redis

Amazon ElastiCache para Redis es un servicio de almacenamiento en caché en memoria ultrarrápido que ofrece una latencia de microsegundos para impulsar aplicaciones en tiempo real a escala de Internet. Los desarrolladores pueden utilizar este servicio como caché en memoria o en casos de uso que no requieran una alta durabilidad de los datos. La configuración de clústeres de ElastiCache para Redis permite a los clientes ejecutar cargas de trabajo Redis con hasta 6,1 TB de capacidad en memoria en un único clúster. ElastiCache para Redis también ofrece la posibilidad de agregar y eliminar fragmentos a partir de un clúster en ejecución. Es posible escalar de manera dinámica horizontal o verticalmente las cargas de trabajo de un clúster de Redis para adaptarse a los cambios en la demanda.

Amazon ElastiCache para Memcached

Amazon ElastiCache para Memcached es un servicio de almacenamiento en caché de clave-valor en memoria compatible con Memcached. Ofrece la misma capacidad de rendimiento, facilidad de uso y simplicidad de Memcached. ElastiCache para Memcached es escalable, seguro y está completamente administrado, lo que lo convierte en el candidato ideal para casos de uso en los que los datos de acceso frecuente deben permanecer en memoria.

Cree una cuenta gratuita para comenzar a utilizar las bases de datos o cachés en memoria en AWS hoy mismo.

Introducción a Amazon MemoryDB para Redis
Introducción a Amazon ElastiCache para Redis