Trace Id is missing
Saltar al contenido principal

¿Qué es el almacenamiento en caché?

Los desarrolladores y profesionales de TI usan el almacenamiento en caché para guardar los datos de clave-valor en la memoria temporal y acceder a ellos con más rapidez y menos esfuerzo que a los datos almacenados en el almacenamiento de datos convencional. Las memorias caché son muy útiles en varios escenarios con diversas tecnologías, como el almacenamiento en caché de equipos con memoria de acceso aleatorio (RAM), el almacenamiento en caché de red en una red de entrega de contenido, una memoria caché web para datos multimedia web o una memoria caché en la nube para ayudar a que las aplicaciones en la nube sean más resistentes. A menudo, los desarrolladores diseñan las aplicaciones para que almacenen en caché los datos procesados y, después, los reutilizan para atender las solicitudes con mayor rapidez que en las consultas de base de datos normales.

Utilice el almacenamiento en caché para reducir los costes de la base de datos, ofrecer una capacidad de procesamiento mayor y una latencia menor de lo que la mayoría de las bases de datos pueden ofrecer, y aumentar 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 de la aplicación, o bien configurarla como una capa independiente. Aunque, normalmente, utilizan una base de datos convencional para almacenar conjuntos de datos grandes, duraderos y completos, usan una memoria caché para almacenar subconjuntos de datos transitorios 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, así como bases de datos relacionales como SQL Server,  MySQLMariaDB. El almacenamiento en caché también funciona bien con muchas plataformas de datos específicas, como Azure Database for PostgreSQLAzure SQL DatabaseAzure SQL Managed Instance. Se recomienda investigar qué tipo de almacén de datos se ajustará mejor a sus requisitos antes de empezar a configurar una arquitectura de datos. Por ejemplo, querrá saber qué es PostgreSQL antes de usarlo para combinar almacenes de datos relacionales y no estructurados.

Los beneficios de las capas de caché y, ¿qué es Redis?

Los desarrolladores utilizan memorias caché de varios niveles, denominadas capas de caché, para almacenar diferentes tipos de datos en cachés independientes en función de la demanda. Al agregar una capa de caché, o varias, puede mejorar notablemente el procesamiento y la latencia de una capa de datos.

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

Las memorias caché también pueden reducir el coste total de propiedad (TCO) de una capa de datos. Al utilizar cachés para atender las consultas más comunes y reducir la carga de la base de datos, puede disminuir la necesidad de aprovisionar en exceso instancias de bases de datos, lo que genera importantes ahorros de costes y un menor coste total de propiedad.

Tipos de almacenamiento en caché

La estrategia de almacenamiento en caché depende de cómo la aplicación lea y escriba los datos. ¿La aplicación requiere muchas operaciones de escritura o los datos se escriben una vez y se leen con frecuencia? ¿Los datos que se devuelven son siempre únicos? Los distintos modelos de acceso a los datos influyen en la forma de configurar una memoria caché. Los tipos de almacenamiento en caché más comunes son: cache-aside, lectura/escritura y escritura asincrónica/escritura diferida.

Cache-aside

Para las aplicaciones con cargas de trabajo que conllevan un gran número de operaciones de lectura, los desarrolladores utilizan a menudo un modelo de programación cache-aside o "side-cache". Sitúan la memoria side-cache fuera de la aplicación, que luego se puede conectar con la memoria caché para consultar y recuperar datos, o directamente con la base de datos si los datos no están en la memoria caché. A medida que la aplicación recupera los datos, los copia en la memoria caché para futuras consultas.

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

Caché de lectura/escritura

Las memorias caché de lectura se mantienen actualizadas, mientras que, en el almacenamiento en caché de escritura, la aplicación escribe los datos en la memoria caché y, después, en la base de datos. Ambas memorias caché se alinean con la base de datos y la aplicación las trata como el almacén de datos principal.

Las cachés 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 procesos para garantizar la coherencia de los datos entre la memoria caché y la base de datos, reducir la latencia de la caché de escritura y facilitar la actualización de la caché de lectura.

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

Caché de escritura asincrónica/escritura diferida

En este escenario, la aplicación escribe los datos en la memoria caché, la operación se confirma de inmediato y, a continuación, la propia caché escribe los datos en la base de datos en segundo plano. Las memorias caché de escritura asincrónica, a veces conocidas como memorias caché de escritura diferida, están indicadas para cargas de trabajo que requieren un gran número de operaciones de escritura, y mejoran el rendimiento porque la aplicación no necesita esperar a que se complete la operación de escritura para pasar a la siguiente tarea.

Caché distribuida frente a almacén de sesión

La gente suele confundir las memorias caché distribuidas con los almacenes de sesión, que son similares pero tienen requisitos y propósitos diferentes. En lugar de usar una memoria caché distribuida para complementar una base de datos, los desarrolladores implementan almacenes de sesión, que son almacenes de datos temporales a nivel de usuario, para perfiles, mensajes y otros datos de usuario de las aplicaciones orientadas a sesiones, como las aplicaciones web.

¿Qué es un almacén de sesión?

Las aplicaciones orientadas a sesiones realizan un seguimiento de las acciones que los usuarios llevan a cabo mientras están conectados a las aplicaciones. Para conservar esos datos una vez que el usuario cierra sesión, puede guardarlos en un almacén de sesión, lo que mejora la administración de las sesiones, reduce los costes y acelera el rendimiento de la aplicación.

¿En qué se diferencia el uso de un almacén de sesión del almacenamiento en caché de una base de datos?

En un almacén de sesión, los datos no se comparten entre usuarios, mientras que, en el almacenamiento en caché, distintos usuarios pueden acceder a la misma caché. Los desarrolladores usan el almacenamiento en caché para mejorar el rendimiento de una base de datos o una instancia de almacenamiento, mientras que utilizan almacenes de sesión para mejorar el rendimiento de las aplicaciones escribiendo los datos en el almacén en memoria, lo que elimina la necesidad de acceder a una base de datos.

Los datos que se escriben en un almacén de sesión suelen ser de corta duración, mientras que los datos almacenados en caché con una base de datos principal suelen durar mucho más. Un almacén de sesión requiere replicación, alta disponibilidad y durabilidad de los datos para asegurar que los datos transaccionales no se pierdan y los usuarios mantengan el interés. Por otro lado, si se pierden los datos de una memoria side-cache, siempre hay una copia en la base de datos permanente.

Ventajas del almacenamiento en caché

Mejora del rendimiento de las aplicaciones

Leer los datos de una caché en memoria es mucho más rápido que acceder a ellos si están en un almacén de datos basado en un disco. Y, con un acceso más rápido a los datos, mejora considerablemente la experiencia que se tiene con la aplicación en general.

Reducción del uso de la base de datos y los costos

El almacenamiento en caché da lugar a menos consultas en la base de datos, lo que mejora el rendimiento y reduce los costos, ya que se limita la necesidad de escalar la infraestructura de la base de datos y se reducen los cargos de procesamiento.

Rendimiento predecible y escalable

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

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

Almacenamiento en caché de la salida

El almacenamiento en caché de la salida mejora el rendimiento de las páginas web, ya que almacena todo el código fuente de las páginas (como el código HTML y los scripts 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 el código de salida en la memoria caché de la aplicación. Esto permite a la aplicación atender solicitudes sin necesidad de ejecutar el código de la página ni de comunicarse con otros servidores.

Almacenamiento en caché de datos y bases de datos

La velocidad y el procesamiento de la base de datos pueden ser factores clave en el rendimiento global de una aplicación. El almacenamiento en caché de la base de datos se usa para llamadas frecuentes a datos que no cambian con frecuencia, como los datos de precios o inventario. Ayuda a que los sitios web y las aplicaciones se carguen con más rapidez, al tiempo que aumenta el ritmo de procesamiento y reduce la latencia en la recuperación de datos de las bases de datos del back-end.

Almacenamiento de datos de sesión de usuario

Los usuarios de una 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 las entradas del usuario, las entradas del carro de la compra o las preferencias de personalización, a un coste menor que el almacenamiento o las bases de datos.

Arquitecturas de agentes de mensajes y publicación-suscripción

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

Aplicaciones y API

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

[1] Las afirmaciones sobre el rendimiento se basan en los datos de un estudio que realizó GigaOm en octubre de 2020 por encargo de Microsoft. El estudio comparó el rendimiento de una aplicación de prueba usando una base de datos de Azure con y sin la implementación de Azure Cache for Redis como solución de almacenamiento en caché. Se usaron Azure SQL Database y Azure Database for PostgreSQL como elementos de base de datos en el estudio. Se usaron una instancia De uso general Gen 5 con de 2 núcleos virtuales de Azure SQL Database y una instancia De uso general con 2 núcleos virtuales de Azure Database for PostgreSQL, con una instancia Prémium P1 de 6 GB de Azure Cache for Redis. Estos resultados se compararon con instancias De uso general Gen 5 con 8, 16, 24 y 32 núcleos virtuales de Azure SQL Database e instancias De uso general con 8, 16, 24 y 32 núcleos virtuales de Azure Database for PostgreSQL, sin Azure Cache for Redis. Los datos de las pruebas comparativas se tomaron de la prueba de carga de bases de datos de aplicaciones web de GigaOm, que simula una aplicación web común y una base de datos de back-end a la que se envía un número de solicitudes HTTP cada vez mayor. Los resultados reales pueden variar en función de la configuración y la región. Vea el estudio completo.

Cuenta gratuita

Pruebe los servicios de informática en la nube de Azure de forma gratuita durante un máximo de 30 días.

Pago por uso

Empieza con precios de pago por uso. Sin compromiso por adelantado; puedes cancelar en cualquier momento.

Agregue una capa de almacenamiento en caché ágil a su aplicación con un servicio Redis completamente administrado. Vea cómo empezar a usar Azure Cache for Redis.

Si desea ejecutar un almacenamiento en caché flexible basado en archivos para aplicaciones de alto rendimiento, lea contenido sobre Azure HPC Cache.