📈

Analytics - Redshift, Athena, QuickSight

Kinesis, Athena, QuickSight y servicios de análisis

⏱️ Tiempo estimado de lectura: 20 minutos

Amazon Redshift - Data Warehouse

Amazon Redshift es un data warehouse totalmente gestionado y petabyte-scale basado en PostgreSQL, optimizado para OLAP (análisis).

Características:
- Almacenamiento columnar: Optimizado para queries analíticas
- Compresión masiva: Reduce almacenamiento y I/O
- MPP (Massively Parallel Processing): Distribuye queries en múltiples nodos
- 10x mejor rendimiento que data warehouses tradicionales
- Costo: $0.25/hora por TB/año (mucho más barato que databases OLTP)

Arquitectura:
- Leader Node: Planifica queries, coordina ejecución
- Compute Nodes: Ejecutan queries y almacenan datos
- Node Slices: Particiones de memoria y disco en compute node

Tipos de nodos:
- RA3 (recomendado): Cómputo y almacenamiento independientes, S3-backed
- DC2 (Dense Compute): SSD, mejor para performance
- DS2 (Dense Storage): HDD, más capacidad, más económico

Redshift Serverless:
- No provisionar clusters manualmente
- Auto-scaling automático
- Pago por RPU (Redshift Processing Units) usados

Puntos Clave

  • Redshift es OLAP (analytics), NO usar para OLTP (transaccional)
  • Carga masiva de datos más eficiente que inserts individuales
  • Snapshots son incrementales, pueden copiarse a otras regiones
  • Enhanced VPC Routing fuerza tráfico por VPC (más seguro)
  • Spectrum permite queries en S3 sin cargar a Redshift

💻 Operaciones en Redshift

-- Crear tabla con distribución KEY
CREATE TABLE ventas (
  venta_id INT,
  producto_id INT,
  fecha DATE,
  cantidad INT,
  precio DECIMAL(10,2)
)
DISTSTYLE KEY
DISTKEY (producto_id)
SORTKEY (fecha);

-- Cargar datos desde S3
COPY ventas
FROM 's3://mi-bucket/ventas/'
IAM_ROLE 'arn:aws:iam::123456789012:role/RedshiftCopyRole'
FORMAT AS PARQUET;

-- Query con Redshift Spectrum (datos en S3)
SELECT producto_id, SUM(cantidad)
FROM spectrum.external_ventas
WHERE fecha >= '2024-01-01'
GROUP BY producto_id;

Optimización de Rendimiento en Redshift

Redshift ofrece múltiples técnicas para optimizar queries y reducir costos.

Distribution Styles:
- AUTO: Redshift decide automáticamente
- EVEN: Distribución round-robin (default)
- KEY: Distribuye filas según valor de columna (co-location)
- ALL: Copia tabla completa a todos los nodos (tablas pequeñas)

Sort Keys:
- Compound: Orden multi-columna (ej: fecha, región)
- Interleaved: Optimiza filtros en cualquier columna del key
- Acelera queries con WHERE, JOIN, ORDER BY en columnas sorted

Compression:
- Encoding automático durante COPY
- Tipos: AZ64, LZO, Runlength, Delta, Mostly
- Analizar con ANALYZE COMPRESSION

Best Practices:
- Usar COPY en lugar de INSERT para carga masiva
- Ejecutar VACUUM para reorganizar datos
- ANALYZE actualiza estadísticas para query planner
- Workload Management (WLM) para priorizar queries
- Materialized views para queries frecuentes

Puntos Clave

  • DISTKEY debería ser columna usada frecuentemente en JOINs
  • SORTKEY debería ser columna en WHERE y ORDER BY
  • VACUUM recupera espacio de filas borradas/actualizadas
  • Deep Copy (CREATE TABLE AS) puede ser más rápido que VACUUM
  • Concurrency Scaling auto-escala para picos de queries

Amazon Athena - Análisis Serverless

Amazon Athena es un servicio de queries interactivo serverless que permite analizar datos en S3 usando SQL estándar.

Características:
- Serverless: No infraestructura que provisionar
- SQL estándar: Basado en Presto, soporta SQL ANSI
- Pago por query: $5 por TB de datos escaneados
- Integración S3: Lee datos directamente de S3
- Múltiples formatos: CSV, JSON, Parquet, ORC, Avro

Casos de uso:
- Análisis ad-hoc de logs (VPC Flow Logs, CloudTrail, ALB logs)
- Business intelligence con QuickSight
- Análisis de data lakes en S3
- Queries sobre datos sin ETL previo

Optimización de costos:
- Usar formatos columnares: Parquet/ORC (80-90% menos scan)
- Comprimir datos: GZIP, SNAPPY reduce bytes escaneados
- Particionar datos: Por fecha, región, etc. (escanea solo particiones necesarias)
- Usar glue crawler para catalogar datos automáticamente

Federated Query:
- Query datos en bases relacionales, NoSQL, custom data sources
- Usa Lambda Data Source Connectors
- Join datos de S3 con RDS, DynamoDB, on-premises databases

Puntos Clave

  • Athena cobra por datos ESCANEADOS, no por datos devueltos
  • Parquet/ORC reduce costos dramáticamente vs CSV/JSON
  • Particionamiento es clave para queries eficientes
  • Glue Data Catalog almacena metadata de tablas
  • CTAS (Create Table As Select) crea nuevas tablas optimizadas

💻 Queries en Athena con particiones

-- Crear tabla externa apuntando a S3
CREATE EXTERNAL TABLE IF NOT EXISTS logs_alb (
  timestamp string,
  elb_name string,
  client_ip string,
  target_ip string,
  request_processing_time double,
  target_status_code int
)
PARTITIONED BY (year string, month string, day string)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'
WITH SERDEPROPERTIES ('input.regex' = '([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*)')
LOCATION 's3://mi-bucket/alb-logs/';

-- Agregar particiones
ALTER TABLE logs_alb ADD
  PARTITION (year='2024', month='01', day='15')
  LOCATION 's3://mi-bucket/alb-logs/2024/01/15/';

-- Query optimizada con particiones
SELECT client_ip, COUNT(*) as requests
FROM logs_alb
WHERE year='2024' AND month='01' AND target_status_code >= 500
GROUP BY client_ip
ORDER BY requests DESC
LIMIT 10;

Amazon QuickSight - Business Intelligence

Amazon QuickSight es un servicio de business intelligence serverless para crear dashboards y visualizaciones interactivas.

Características:
- Serverless: Escalado automático, sin infraestructura
- Machine Learning: Detección de anomalías, forecasting
- Embedable: Integra dashboards en aplicaciones
- In-memory engine (SPICE): Consultas rápidas en cache
- Colaborativo: Compartir análisis y dashboards

Fuentes de datos:
- AWS: RDS, Aurora, Redshift, Athena, S3, OpenSearch
- SaaS: Salesforce, Jira, ServiceNow
- Databases: MySQL, PostgreSQL, SQL Server, Oracle (on-prem)
- Archivos: Excel, CSV, JSON

SPICE (Super-fast, Parallel, In-memory Calculation Engine):
- Importa datos a memoria in-memory engine
- Queries ultra-rápidas sin tocar source
- 10GB por usuario incluido
- Actualización automática programable

ML Insights:
- Anomaly detection: Detecta valores atípicos automáticamente
- Forecasting: Predicciones basadas en datos históricos
- Auto-narratives: Genera descripciones textuales de datos

Puntos Clave

  • QuickSight es alternativa serverless a Tableau/Power BI
  • Pricing por usuario/sesión, no por infraestructura
  • SPICE acelera queries pero tiene límite de capacidad
  • Row-Level Security (RLS) controla qué datos ve cada usuario
  • Puede conectarse a VPC con ENI para datos privados

Redshift vs Athena - Cuándo usar cada uno

Ambos servicios analizan datos, pero tienen casos de uso diferentes:

Usar Redshift cuando:
- Queries complejas y frecuentes sobre mismos datos
- Necesitas JOINs complejos y sub-queries
- Workloads predecibles con uso constante
- Necesitas rendimiento consistente y bajo latencia
- Datos estructurados y bien definidos
- Cargas de trabajo OLAP tradicionales

Usar Athena cuando:
- Análisis ad-hoc e intermitente
- Datos ya están en S3 (logs, exports)
- No quieres gestionar infraestructura
- Queries simples a medianas
- Data lake explorations
- Costos variables y queries ocasionales

Comparación:
- Costo: Athena pay-per-query, Redshift pay-per-hour (cluster)
- Setup: Athena zero setup, Redshift requiere provisioning
- Performance: Redshift más rápido para queries repetitivas
- Escalado: Athena auto-scale infinito, Redshift manual resize
- Casos de uso: Redshift = DW tradicional, Athena = análisis flexible

Puntos Clave

  • Athena mejor para exploración y análisis ocasional
  • Redshift mejor para analytics predecible y constante
  • Pueden usarse juntos: Athena para S3, Redshift para DW
  • Redshift Spectrum permite query S3 desde Redshift
  • QuickSight puede conectarse a ambos