Dónde almacenar los datos es una de las decisiones de diseño más críticas en la ingeniería de datos. Elegir el almacenamiento equivocado puede hacer que las consultas sean decenas de veces más lentas, que los costos se disparen o que ciertas funcionalidades sean imposibles de implementar. Elegir el almacenamiento correcto hace que las consultas sean rápidas, los costos bajos y el sistema simple. En el examen AWS DEA-C01, se evalúa tu capacidad para analizar un conjunto dado de requisitos y patrones de acceso para seleccionar el servicio de almacenamiento óptimo.
Guía de Selección de Almacenamiento — ¿Qué Usar en Qué Situación?
| Requisito | Servicio recomendado | |----------|---------------------| | Consultas analíticas a gran escala (OLAP), agregaciones y uniones SQL | Amazon Redshift | | Búsquedas clave-valor, respuesta en milisegundos, lectura/escritura a gran escala | Amazon DynamoDB | | Data lake basado en S3, análisis SQL serverless | Lake Formation + Athena | | Datos relacionales, OLTP (procesamiento de transacciones) | Amazon RDS / Aurora | | Caché en memoria de ultra baja latencia | Amazon ElastiCache / MemoryDB | | Transacciones ACID en datos S3, viaje en el tiempo | Apache Iceberg | | Búsqueda, análisis de logs, búsqueda de texto completo | Amazon OpenSearch Service |
Más importante que memorizar esta tabla es entender "por qué usarías cada servicio de almacenamiento." Si entiendes los principios de diseño detrás de cada servicio, puedes razonar la respuesta correcta incluso en escenarios que nunca has visto.
!Cómo elegir un almacén de datos: Redshift, Iceberg, Lake Formation
Amazon Redshift — El Almacén de Datos Optimizado para el Análisis
Amazon Redshift es un almacén de datos completamente gestionado diseñado para cargas de trabajo analíticas a gran escala (OLAP). Está construido para ejecutar consultas de agregación sobre decenas de miles de millones de filas rápidamente.
El almacenamiento columnar es la clave
Las bases de datos tradicionales almacenan datos fila por fila. "El nombre, edad, dirección, monto de compra y puntos de fidelidad del Cliente 1" se almacenan como una fila. Redshift almacena los datos columna por columna. Todos los "montos de compra" de todos los clientes se almacenan juntos en un bloque orientado a columnas.
¿Por qué ayuda esto al análisis? Cuando ejecutas una consulta como "calcula el monto promedio de compra del último año," una BD basada en filas lee cada columna de cada cliente. Redshift solo lee la columna "monto de compra." De potencialmente cientos de columnas, solo se leen las pocas necesarias — reduciendo drásticamente la E/S.
Redshift Spectrum — Consulta Datos S3 Directamente
Spectrum te permite ejecutar consultas SQL contra datos almacenados en S3 sin cargarlos primero en Redshift. Actúa como un puente entre el data lake (S3) y el almacén de datos (Redshift).
Por ejemplo: mantén los últimos 3 años de datos cargados en Redshift para acceso rápido, mientras guardas datos históricos más antiguos de forma económica en S3, y los consultas con Spectrum solo cuando sea necesario. La estrategia es "datos calientes en Redshift, datos fríos en S3."
Federated Query (Consulta Federada)
Consulta datos en Amazon RDS, Aurora o S3 directamente desde Redshift. No necesitas copiar los datos a Redshift primero. Puedes hacer JOIN de datos de múltiples fuentes en una sola consulta SQL.
Concurrency Scaling (Escalado de Concurrencia)
Cuando la carga de consultas aumenta en horas pico, Redshift añade automáticamente capacidad adicional de clúster. Incluso cuando decenas de analistas ejecutan consultas simultáneamente durante la temporada de informes de fin de mes, el rendimiento se mantiene.
Instancias RA3 — Separando Cómputo y Almacenamiento
Los nodos Redshift tradicionales tenían cómputo y almacenamiento estrechamente acoplados. Hacer crecer los datos significaba hacer crecer también el cómputo. Las instancias RA3 separan el cómputo del almacenamiento. Si tus datos crecen pero el volumen de consultas se mantiene igual, escala solo el almacenamiento. Si el volumen de consultas crece pero el tamaño de los datos se mantiene igual, escala solo el cómputo — cada uno de forma independiente.
Apache Iceberg — Añadiendo Capacidades de Almacén de Datos al Data Lake
S3 es un almacenamiento barato y escalable infinitamente. Pero por defecto, modificar o sobrescribir datos en S3 es incómodo, y las escrituras concurrentes de múltiples procesos pueden causar inconsistencias. Apache Iceberg es un formato de tabla abierto que aporta capacidades de nivel de base de datos relacional a los data lakes como S3.
Una analogía de biblioteca: S3 es un almacén lleno de libros apilados. Iceberg es el sofisticado sistema de catálogo que rastrea "qué libro está dónde, cuándo se añadió y qué versión es."
Transacciones ACID
ACID describe cuatro propiedades que deben tener las transacciones de bases de datos: Atomicidad: Las operaciones tienen éxito completo o fallan completamente — no hay estado parcial. Consistencia: Los datos siempre permanecen en un estado válido. Aislamiento: Las transacciones concurrentes no interfieren entre sí. Durabilidad: Las transacciones completadas persisten incluso si el sistema falla.
Con Iceberg, los datos almacenados en S3 adquieren estas propiedades. Por ejemplo, si tu sistema falla mientras actualiza 100 millones de registros, nunca quedarás con datos parcialmente actualizados en un estado inconsistente.
Viaje en el Tiempo (Time Travel)
Iceberg rastrea el historial de cambios de tus datos. Puedes consultar "muéstrame los datos tal como eran a las 10 AM de ayer." Esto es invaluable para recuperarse de eliminaciones accidentales de datos, auditar cómo lucían los datos en un momento específico o ejecutar análisis en un punto en el tiempo.
Evolución de Esquema (Schema Evolution)
Puedes cambiar el esquema de una tabla sin reescribir los datos existentes. Añadir nuevas columnas, renombrar las existentes, eliminar columnas — todo esto es posible sin tocar los archivos existentes en S3. Los datos antiguos siguen siendo compatibles con el nuevo esquema y continúan funcionando correctamente.
Iceberg es totalmente compatible con Amazon Athena, Amazon EMR, AWS Glue y Redshift Spectrum.
AWS Lake Formation — El Gestor de Seguridad para Tu Data Lake
Lake Formation es un servicio para construir y asegurar un data lake basado en S3 con políticas de acceso detalladas. Usando la analogía de un sistema de control de acceso a un edificio: Lake Formation gestiona "qué empleado puede acceder a qué planta y qué sala."
Control de Acceso Detallado (Fine-Grained Access Control)
Lake Formation controla los permisos de acceso para un data lake a niveles muy granulares:
Nivel de base de datos/tabla: Equipos específicos solo pueden ver tablas específicas. Nivel de columna: El equipo de RRHH puede ver la columna "salario," pero otros equipos no pueden. Nivel de fila: El equipo de ventas solo puede ver los datos de su propia región. Nivel de celda: Un usuario específico puede ver solo una columna específica de una fila específica.
Este nivel de control fino es difícil de implementar solo con políticas IAM. Lake Formation gestiona este sistema complejo de permisos de forma centralizada desde un único lugar.
Filtros de Datos (Data Filters)
Los filtros de datos de Lake Formation te permiten mostrar a diferentes usuarios diferentes vistas de la misma tabla física. Por ejemplo, desde una tabla que contiene datos globales de clientes, configúrala para que el equipo de EE.UU. vea solo clientes de EE.UU. y el equipo de la UE vea solo clientes de la UE. Los datos físicos son una sola tabla, pero lo que cada usuario ve se filtra según sus permisos.
Integración con Glue Data Catalog
Lake Formation usa el AWS Glue Data Catalog como su almacén de metadatos. Los rastreadores de Glue escanean los datos y registran los metadatos de las tablas en el catálogo, y Lake Formation controla quién puede acceder a esas tablas. Athena, Redshift Spectrum y EMR todos consultan a través del Glue Data Catalog y están sujetos a los controles de acceso de Lake Formation.
Resumen de Puntos Clave para el Examen
| Palabra clave | Servicio/Concepto | |--------------|------------------| | OLAP a gran escala, análisis de agregación SQL | Amazon Redshift | | Consulta SQL de datos S3 sin cargarlos en Redshift | Redshift Spectrum | | Una sola consulta SQL en múltiples fuentes (RDS, S3, Redshift) | Federated Query | | Manejar picos repentinos de consultas concurrentes | Concurrency Scaling | | Escalar cómputo y almacenamiento independientemente | Instancias Redshift RA3 | | Transacciones ACID en datos S3 | Apache Iceberg | | Consultar datos en un punto específico del pasado | Viaje en el Tiempo de Iceberg | | Cambiar esquema sin reescribir datos existentes | Evolución de Esquema de Iceberg | | Control de acceso a nivel de columna/fila para data lake | AWS Lake Formation | | Mostrar diferentes filas/columnas a diferentes usuarios | Filtros de Datos de Lake Formation | | Búsquedas clave-valor, respuesta en milisegundos | Amazon DynamoDB |
El mensaje central de Iceberg: "Añadir capacidades de nivel de almacén de datos (ACID, viaje en el tiempo, evolución de esquema) al data lake (el bajo costo y escalabilidad de S3)."