July 31, 2025

Redshift

📘 ¿Qué es Amazon Redshift?

Amazon Redshift es un servicio de almacenamiento de datos (data warehouse) completamente gestionado que permite ejecutar consultas analíticas complejas a gran escala con alto rendimiento.

  • 🔍 Ideal para consultas analíticas (OLAP) sobre grandes volúmenes de datos estructurados

  • ✅ Compatible con SQL estándar

  • 🧩 Integra fácilmente con BI, ML y otros servicios de AWS (como S3, Glue, QuickSight)


🧩 Casos de uso

  • 📊 Business Intelligence (BI) y reporting

  • 🧠 Análisis predictivo y modelos de machine learning

  • 🧾 ETL/ELT con grandes volúmenes de datos

  • 🧬 Análisis de logs, eventos, clics, métricas


⚙️ Arquitectura y componentes clave

ComponenteDescripción
ClusterConjunto de nodos que ejecutan Redshift
Nodo líderRecibe consultas, las distribuye a nodos de cómputo y compila resultados
Nodos de cómputoEjecutan las consultas en paralelo sobre datos particionados
Redshift ServerlessVersión sin necesidad de cluster fijo, autoscalable
SpectrumEjecuta consultas directamente sobre datos en S3 usando formato columnar

🛠️ Modos de uso

🧱 Redshift clásico (provisionado)

  • Requiere configurar un cluster, tipo de nodo y número de nodos.

  • Puede escalarse manual o automáticamente con Concurrency Scaling.

☁️ Redshift Serverless

  • No requiere configurar clústeres.

  • Se paga por uso (RPU – Redshift Processing Units).

  • Ideal para cargas variables o esporádicas.


🗂️ Distribución y rendimiento

Técnica de distribuciónUso y propósito
KEYUsa una columna como clave para distribuir datos
ALLReplica tabla en todos los nodos (para joins pequeños)
EVEN (ROUND ROBIN)Distribuye datos uniformemente entre nodos

Compresión automática (encoding) y uso de sort keys mejora el rendimiento.


🔄 Integración con otros servicios

ServicioIntegración con Redshift
S3Con Redshift Spectrum o COPY/UNLOAD
AWS GlueCatálogo de metadatos externo
LambdaAutomatización de cargas, triggers ETL
QuickSightDashboard y visualización directa
SageMakerAnálisis de datos y machine learning
DataShareCompartir datos entre cuentas o regiones

💡 Ejemplo de uso

-- Crear una tabla
CREATE TABLE ventas (
  id INT,
  producto VARCHAR(100),
  cantidad INT,
  fecha DATE
)
DISTKEY (id)
SORTKEY (fecha);

-- Cargar datos desde S3
COPY ventas
FROM 's3://mi-bucket/ventas.csv'
IAM_ROLE 'arn:aws:iam::123456789012:role/RedshiftRole'
CSV;

-- Consultar
SELECT producto, SUM(cantidad)
FROM ventas
GROUP BY producto
ORDER BY SUM(cantidad) DESC;

📤 Redshift Spectrum

  • Permite consultar archivos externos en S3 (Parquet, CSV, ORC, JSON) sin cargarlos al clúster.

  • Compatible con Athena, Glue y Lake Formation.

CREATE EXTERNAL SCHEMA spectrum_schema
FROM data catalog
DATABASE 'mi_glue_db'
IAM_ROLE 'arn:aws:iam::123456789012:role/RedshiftRole'
CREATE EXTERNAL DATABASE IF NOT EXISTS;

🔐 Seguridad

  • IAM: Control de acceso a servicios y recursos externos

  • VPC: Puede ejecutarse dentro de una VPC privada

  • KMS: Cifrado en reposo

  • SSL: Cifrado en tránsito

  • Redshift Audit Logging: Activable en S3


📈 Monitoreo

HerramientaMétricas clave
CloudWatchCPU, memoria, queries, concurrencia
Redshift ConsoleGráficas de rendimiento
System tablesSTL, SVL, SVV (logs, historial, views)
Query Editor v2Interfaz web para correr consultas SQL

💵 Precios

ModoModelo de precio
ProvisionadoPor tipo de nodo y horas activas
ServerlessPor segundo + uso de RPU (Query-based)
SpectrumPor cantidad de datos escaneados

💡 Tip: Usa sort keys y columnas en formato columnar (Parquet) para reducir el costo de Spectrum.


📚 CLI / SDK

CLI

# Crear cluster
aws redshift create-cluster \
  --cluster-identifier mi-cluster \
  --node-type dc2.large \
  --master-username admin \
  --master-user-password miClave123 \
  --number-of-nodes 2

# Iniciar sesión en el editor SQL
https://us-west-2.redshift.aws.amazon.com/

# Conectar desde psql
psql -h <endpoint> -U admin -d dev -p 5439

🔄 Buenas prácticas

  • Usa sort keys en columnas con filtros frecuentes

  • Usa diststyle key para joins optimizados

  • Prefiere cargas por bloques (COPY) en vez de INSERTs individuales

  • Automatiza con ETL en Glue o Lambda

  • Usa Workload Management (WLM) para controlar prioridad de consultas

  • Configura monitoring + alertas desde CloudWatch


⚖️ Comparativa con otras bases analíticas

ServicioTipoIdeal para
RedshiftOLAPAnálisis estructurado de alto volumen
AthenaServerless SQLConsultas ad hoc sobre datos en S3
DynamoDBNoSQL OLTPApps web, juegos, sesiones
RDS/AuroraSQL OLTPAplicaciones transaccionales
OpenSearchFull-text searchLogs, búsquedas, dashboards

🎓 Preguntas tipo certificación

  1. ¿Qué técnica se usa para mejorar joins en Redshift?

    • ✅ Distribución por clave (DISTKEY)
  2. ¿Redshift Serverless requiere aprovisionar nodos?

    • ❌ No. Se escala automáticamente y se cobra por segundo.
  3. ¿Cómo consulta datos directamente en S3?

    • ✅ Usando Redshift Spectrum
  4. ¿Cuál es el comando óptimo para cargar datos desde S3?

    • COPY
  5. ¿Puedes compartir datos entre cuentas?

    • ✅ Sí, con Redshift Data Sharing

📚 Recursos útiles