Integración de almacenes de datos y caché

Domina estrategias de cache (Write-Through, Cache-Aside, Lazy Loading), ElastiCache e integracion RDS.

Las preguntas sobre almacenes de datos en DVA-C02 se enfocan en dos areas principales: elegir el almacen de datos correcto para una situacion dada, y saber como mejorar el rendimiento de la aplicacion con cache.

 

Eleccion de un almacen de datos — Elegir la base de datos adecuada

Asi como elegirias un refrigerador, un almacen o una caja fuerte dependiendo de lo que necesitas guardar, debes elegir tu almacen de datos segun la naturaleza de tus datos y como se usaran.

| Requisito | Servicio recomendado | |-----------|---------------------| | Datos relacionales, consultas SQL | RDS / Aurora | | Estructura clave-valor, respuesta en milisegundos | DynamoDB | | Cache en memoria (almacenamiento temporal rapido) | ElastiCache | | Busqueda de texto completo, analisis de logs | Amazon OpenSearch | | Archivos, imagenes, almacenamiento de objetos grandes | S3 |

 

Que es el cache?

El cache es la tecnica de almacenar datos de acceso frecuente en una capa de almacenamiento rapida (memoria) para que puedan recuperarse rapidamente. Piensalo como tener tu comida favorita en el refrigerador. Es mucho mas rapido agarrar algo del refrigerador (cache) que ir al supermercado (base de datos) cada vez que lo necesitas.

Al usar el cache efectivamente, puedes reducir la carga de la base de datos y ofrecer tiempos de respuesta mucho mas rapidos a tus usuarios.

 

Tres estrategias de cache

Lazy Loading (Cache-Aside, Carga perezosa)

Esta es la estrategia de cache mas ampliamente utilizada. Asi es como funciona:

Un usuario solicita datos. La aplicacion primero verifica el cache. Si los datos estan en el cache (Cache Hit), se devuelven de inmediato. Si los datos no estan en el cache (Cache Miss), se consulta la base de datos. Los datos recuperados se almacenan en el cache y se devuelven al usuario.

Ventaja: solo los datos solicitados se almacenan en cache, por lo que la memoria se usa eficientemente.

Desventaja: un Cache Miss significa que la primera solicitud es lenta. Ademas, los datos obsoletos pueden permanecer en el cache demasiado tiempo.

Solucion: establecer un TTL (Tiempo de vida). El TTL define cuanto tiempo son validos los datos en cache. Cuando el TTL expira, la entrada del cache se elimina automaticamente, por lo que la siguiente solicitud obtiene datos frescos.

Write-Through (Escritura directa)

Cada vez que se escriben datos en la base de datos, tambien se escriben en el cache al mismo tiempo.

Ventaja: los datos en cache siempre estan actualizados. Los Cache Miss son muy raros.

Desventaja: los datos que nunca se leen aun se almacenan en el cache, potencialmente desperdiciando memoria.

Write-Back (Escritura diferida)

Los datos se escriben primero en el cache y luego periodicamente se envian a la base de datos en lotes.

Ventaja: las operaciones de escritura son extremadamente rapidas. Ideal para sistemas con cargas pesadas de escritura.

Desventaja: si el cache falla inesperadamente, los datos que aun no se han guardado en la base de datos pueden perderse.

!3 estrategias de caché: Lazy Loading, Write-Through, Write-Back

ElastiCache — El servicio de cache en memoria de AWS

Amazon ElastiCache proporciona dos motores: Redis y Memcached. Ambos almacenan datos en memoria para un acceso extremadamente rapido, pero difieren significativamente en caracteristicas.

| Caracteristica | ElastiCache for Redis | ElastiCache for Memcached | |---------------|----------------------|--------------------------| | Tipos de datos soportados | Ricos (String, Hash, List, Set y mas) | Solo String | | Replicacion (replicas de lectura) | Soportado | No soportado | | Persistencia de datos (sobrevive reinicios) | Soportado | No soportado | | Failover automatico Multi-AZ | Soportado | No soportado | | Procesamiento multihilo | No soportado | Soportado |

En la mayoria de los casos, elige ElastiCache for Redis. Gracias a la replicacion, persistencia y soporte Multi-AZ, es mas confiable y versatil.

Elige ElastiCache for Memcached solo cuando necesites cache simple y el rendimiento de procesamiento multihilo sea una prioridad.

 

Serializacion de datos — El formato para intercambiar datos

Al intercambiar datos con ElastiCache u otros servicios, necesitas convertir los datos a un formato especifico (serializacion) y luego restaurarlos a su forma original (deserializacion). Piensalo como poner una carta en un sobre y luego sacarla.

Los formatos mas comunes incluyen JSON (legible por humanos), Protobuf (rapido y eficiente) y Avro (adecuado para datos a gran escala). El formato que elijas afecta tanto el rendimiento como la compatibilidad con otros sistemas.

 

Puntos clave para el examen

"Verificar cache en solicitud -> miss -> consultar BD -> almacenar en cache" -- Lazy Loading (Cache-Aside)

"Actualizar cache simultaneamente al escribir en BD" -- Write-Through

"Expirar automaticamente el cache obsoleto" -- Configurar TTL

"Necesita replicacion, persistencia, Multi-AZ" -- ElastiCache for Redis

"Cache simple, procesamiento multihilo necesario" -- ElastiCache for Memcached

"Busqueda de texto completo, analisis de logs" -- Amazon OpenSearch

"Mantener datos del cache siempre actualizados" -- Write-Through

Redis vs Memcached: elegir Redis en la mayoria de los casos. Memcached es para situaciones especiales que requieren cache simple mas rendimiento multihilo.

Volver a la lista del blog