Omitir navegación

¿Qué es el almacenamiento en caché?

Los desarrolladores y los profesionales de TI usan el almacenamiento en caché para guardar y acceder a los datos clave en la memoria temporal más rápido y con menos esfuerzo que aquellos datos almacenados en un almacenamiento de datos convencional. Las memorias caché son útiles en varios escenarios con varias tecnologías, como la caché de equipos con memoria de acceso aleatorio (RAM), la caché de red en una red CDN, la memoria caché web para datos multimedia web o la caché en la nube para ayudar a hacer que las aplicaciones en la nube sean más resistentes. Los desarrolladores suelen diseñar aplicaciones para almacenar en caché los datos procesados y, a continuación, reasignarlos para atender solicitudes con más rapidez que en las consultas de base de datos estándar.

Puede usar el almacenamiento en caché para reducir los costos de la base de datos, ofrecer un rendimiento superior y una latencia inferior a la que la mayoría de las bases de datos pueden ofrecer, además de incrementar el rendimiento de las aplicaciones web y en la nube.

¿Cómo funciona el almacenamiento en caché para las bases de datos?

Los desarrolladores pueden complementar una base de datos principal con una memoria caché de base de datos, que pueden colocar dentro de la base de datos o aplicación, o configurarla como una capa independiente. Aunque normalmente se basan en una base de datos convencional para almacenar conjuntos de datos grandes, duraderos y completos, usan una caché para almacenar subconjuntos transitorios de datos para una recuperación rápida.

Puede usar el almacenamiento en caché con todos los tipos de almacenes de datos, incluidas las bases de datos NoSQL y las bases de datos relacionales, como SQL Server, MySQL o MariaDB. El almacenamiento en caché también funciona bien con muchas plataformas de datos específicas, como Azure Database for PostgreSQL, Azure SQL Database o Azure SQL Managed Instance. Le recomendamos que investigue qué tipo de almacén de datos cumplirá mejor sus requisitos antes de empezar a configurar una arquitectura de datos. Por ejemplo, podría querer comprender qué es PostgreSQL antes de usarlo para combinar almacenes de datos relacionales y no estructurados.

¿Cuáles son las ventajas de las capas de caché y qué es Redis?

Los desarrolladores usan cachés de varios niveles llamadas capas de caché para almacenar diferentes tipos de datos en cachés independientes según la demanda. Al agregar una capa de caché o varias, podrá mejorar significativamente el rendimiento y la latencia de una capa de datos.

Redis es una estructura de datos en memoria de código abierto popular que se usa para crear capas de caché de alto rendimiento y otros almacenes de datos. Un estudio reciente mostró que la adición de Azure Cache for Redis a una aplicación de ejemplo aumentó el rendimiento de datos en más del 800 por ciento y mejoró el rendimiento de latencia en más del 1000 por ciento1.

Las memorias caché también pueden reducir el costo total de propiedad (TCO) de una capa de datos. Al usar cachés para atender las consultas más comunes y reducir la carga de la base de datos, puede reducir la necesidad de sobreaprovisionar instancias de base de datos, lo que supone un ahorro significativo en los costos y reducción del TCO.

Tipos de almacenamiento en caché

La estrategia de almacenamiento en caché depende de la forma en que la aplicación lea y escriba datos. ¿La aplicación tiene un gran volumen de escritura o los datos se escriben una vez y se leen con frecuencia? ¿Los datos que se devuelven siempre son únicos? Los diferentes patrones de acceso a datos afectarán a la forma en que se configura una memoria caché. Los tipos de almacenamiento en caché comunes incluyen reserva de caché, de lectura y escritura, y diferida o con retraso.

Reserva de caché

Para aplicaciones con cargas de trabajo con un gran número de lecturas, los desarrolladores suelen usar un patrón de programación de reserva de caché o "memoria caché lateral". Encuentran la memoria caché de reserva fuera de la aplicación, pudiendo conectarse con la caché para consultar y recuperar datos o directamente con la base de datos si los datos no están en la caché. A medida que la aplicación recupera los datos, los copia en la memoria caché para consultas futuras.

Puede usar una memoria reserva de caché para ayudar a mejorar el rendimiento de la aplicación, mantener la coherencia entre la memoria caché y el almacén de datos y evitar que los datos de la caché queden obsoletos.

Caché de lectura y escritura

Las caché de lectura se mantienen actualizadas, mientras que con el caché de escritura, la aplicación escribe datos en la caché y, después, en la base de datos. Ambas cachés están en línea con la base de datos y la aplicación las trata como el almacén de datos principal.

Las memorias caché de lectura ayudan a simplificar las aplicaciones en las que se solicitan los mismos datos una y otra vez, pero la caché en sí es más compleja, mientras que el proceso de escritura en dos pasos puede crear latencia. Los desarrolladores emparejan los dos para ayudar a garantizar la coherencia de los datos entre la caché y la base de datos, reducir la latencia de escritura de la caché y facilitar la actualización de la caché de lectura.

Con la caché de lectura y escritura, los desarrolladores pueden simplificar el código de la aplicación, aumentar la escalabilidad de la caché y minimizar la carga de la base de datos.

Caché de escritura diferida y con retraso

En este escenario, la aplicación escribe datos en la caché, que se reconoce inmediatamente y, a continuación, la propia caché vuelve a escribir los datos en la base de datos en segundo plano. Las memorias caché con retraso de escritura, a veces conocidas como cachés de escritura diferida, son las mejores para cargas de trabajo con un gran número de escrituras y mejoran el rendimiento de escritura porque la aplicación no necesita esperar a que se complete la escritura antes de pasar a la siguiente tarea.

Caché distribuida frente al almacén de sesiones

Los usuarios suelen confundir las memorias caché distribuidas con almacenes de sesiones, que son similares pero con distintos requisitos y propósitos. En lugar de usar una memoria caché distribuida para complementar una base de datos, los desarrolladores implementan almacenes de sesiones, que son almacenes de datos temporales en el nivel de usuario, para perfiles, mensajes y otros datos de usuario en aplicaciones orientadas a sesiones como aplicaciones web.

¿Qué es un almacén de sesiones?

Las aplicaciones orientadas a la sesión realizan un seguimiento de las acciones que realizan los usuarios mientras inician sesión en las aplicaciones. Para conservar esos datos cuando el usuario cierra sesión, puede mantenerlos en un almacén de sesiones, lo que mejora la administración de sesiones, reduce los costes y acelera el rendimiento de la aplicación.

¿Cómo se usa un almacén de sesiones distinto del almacenamiento en caché de una base de datos?

En un almacén de sesiones, los datos no se comparten entre diferentes usuarios, mientras que con el almacenamiento en caché los distintos usuarios pueden acceder a la misma memoria caché. Los desarrolladores usan el almacenamiento en caché para mejorar el rendimiento de una base de datos o una instancia de almacenamiento, mientras que usan almacenes de sesiones para aumentar el rendimiento de la aplicación escribiendo datos en el almacén en memoria, eliminando la necesidad de acceder a una base de datos.

Los datos escritos en un almacén de sesiones suelen ser de corta duración, mientras que los datos almacenados en caché con una base de datos principal suelen durar mucho más tiempo. Un almacén de sesiones requiere replicación, alta disponibilidad y durabilidad de los datos para garantizar que los datos transaccionales no se pierdan y que los usuarios sigan vinculados. Por otro lado, si se pierden los datos de una memoria de reserva de caché, siempre habrá una copia en la base de datos permanente.

Ventajas del almacenamiento en caché

Rendimiento mejorado de aplicaciones

Leer datos de una caché en memoria es mucho más rápido que obtener acceso a los datos de un almacén de datos controlado por disco. Además, gracias a un acceso más rápido a los datos, la experiencia general de la aplicación mejora significativamente.

Uso y coste reducidos de la base de datos

El almacenamiento en caché produce menos consultas de base de datos, lo que mejora el rendimiento y reduce los costos limitando la necesidad de escalar la infraestructura de la base de datos y disminuyendo los cargos de rendimiento.

Rendimiento escalable y predecible

Una única instancia de caché puede controlar millones de solicitudes por segundo, lo que ofrece un nivel de rendimiento y escalabilidad que las bases de datos no pueden igualar. El almacenamiento en caché también ofrece la flexibilidad que necesita tanto si está calculando o previendo sus aplicaciones y almacenes de datos. Después, la aplicación puede permitir que muchos usuarios accedan a los mismos archivos simultáneamente, sin aumentar la carga en bases de datos back-end. Y, si una aplicación a menudo experimenta picos de uso y alto rendimiento, las memorias caché en memoria pueden mitigar la latencia.

¿Para qué se usa el almacenamiento en caché?

Almacenamiento en caché de salida

La caché de salida ayuda a aumentar el rendimiento de páginas web almacenando el código fuente completo de páginas, como scripts de HTML y de cliente que un servidor envía a los exploradores para su representación. Cada vez que un usuario ve la página, el servidor almacena en caché el código de salida en la memoria de la aplicación. Esto permite a la aplicación atender solicitudes sin ejecutar el código de página ni comunicarse con otros servidores.

Almacenamiento en caché de datos y almacenamiento en caché de base de datos

La velocidad y el rendimiento de la base de datos pueden ser factores clave en el rendimiento general de aplicaciones. El almacenamiento en caché de la base de datos se usa para llamadas frecuentes a datos que no cambian con frecuencia, como el precio o los datos de inventario. Ayuda a que los sitios web y las aplicaciones se carguen más rápido, a la vez que aumenta el rendimiento y reduce la latencia de recuperación de datos de bases de datos back-end.

Almacenando datos de sesión de usuario

Los usuarios de la aplicación suelen generar datos que deben almacenarse durante breves períodos. Un almacén de datos en memoria como Redis es perfecto para almacenar de forma eficaz y confiable grandes volúmenes de datos de sesión, como entradas de usuario, entradas del carro de la compra o preferencias de personalización, a un costo menor que el almacenamiento o las bases de datos.

Agentes de mensajes y arquitecturas de publicación y suscripción

A menudo, las aplicaciones en la nube necesitan intercambiar datos entre servicios y pueden usar el almacenamiento en caché para implementar arquitecturas de agente de publicación, suscripción o de mensajes que reduzcan la latencia y aceleren la administración de datos.

Aplicaciones y API

Al igual que los exploradores, las aplicaciones guardan archivos y datos importantes para recargar rápidamente esa información cuando sea necesario. Las respuestas API almacenadas en caché eliminan la demanda o la carga en servidores de aplicaciones y bases de datos, lo que proporciona tiempos de respuesta más rápidos y un mejor rendimiento.

1Las reclamaciones de rendimiento se basan en datos de un estudio encargado por Microsoft y realizado por GigaOm en octubre de 2020. El estudio ha comparado el rendimiento de una aplicación de prueba usando una base de datos de Azure con y sin implementar Azure Cache for Redis como solución de almacenamiento en caché. Azure SQL Database y Azure Database for PostgreSQL se usaron como elemento de base de datos en el estudio. Se usó una instancia de uso general de 2 núcleos virtuales Gen5 de Azure SQL Database y una instancia de uso general de 2 núcleos virtuales de Azure Database for PostgreSQL con una instancia premium P1 de 6 gigabytes de Azure para Redis. Estos resultados se compararon con instancias de uso general de 8, 16, 24 y 32 núcleos virtuales Gen5 de Azure SQL Database y con instancias de uso general de 8, 16, 24 y 32 núcleos virtuales de Azure Database for PostgreSQL sin Azure Cache for Redis. Los datos del banco de pruebas se toman de la prueba de carga de la base de datos de aplicaciones web de GigaOm, que simula una aplicación web común y una base de datos back-end que recibe un aluvión al aumentar las solicitudes HTTP. Los resultados reales podrían variar en función de la configuración y la región. Ver el estudio completo.

Agregue una capa de almacenamiento en caché ligera a la aplicación con un servicio de Redis totalmente administrado: obtenga información sobre cómo empezar a usar Azure Cache for Redis.

Si quiere ejecutar un almacenamiento en caché flexible basado en archivos para aplicaciones de alto rendimiento, obtenga información sobre Azure HPC Cache.

¿Podemos ayudarle?