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
| Componente | Descripción |
|---|---|
| Cluster | Conjunto de nodos que ejecutan Redshift |
| Nodo líder | Recibe consultas, las distribuye a nodos de cómputo y compila resultados |
| Nodos de cómputo | Ejecutan las consultas en paralelo sobre datos particionados |
| Redshift Serverless | Versión sin necesidad de cluster fijo, autoscalable |
| Spectrum | Ejecuta 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ón | Uso y propósito |
|---|---|
| KEY | Usa una columna como clave para distribuir datos |
| ALL | Replica 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
| Servicio | Integración con Redshift |
|---|---|
| S3 | Con Redshift Spectrum o COPY/UNLOAD |
| AWS Glue | Catálogo de metadatos externo |
| Lambda | Automatización de cargas, triggers ETL |
| QuickSight | Dashboard y visualización directa |
| SageMaker | Análisis de datos y machine learning |
| DataShare | Compartir 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
| Herramienta | Métricas clave |
|---|---|
| CloudWatch | CPU, memoria, queries, concurrencia |
| Redshift Console | Gráficas de rendimiento |
| System tables | STL, SVL, SVV (logs, historial, views) |
| Query Editor v2 | Interfaz web para correr consultas SQL |
💵 Precios
| Modo | Modelo de precio |
|---|---|
| Provisionado | Por tipo de nodo y horas activas |
| Serverless | Por segundo + uso de RPU (Query-based) |
| Spectrum | Por 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
| Servicio | Tipo | Ideal para |
|---|---|---|
| Redshift | OLAP | Análisis estructurado de alto volumen |
| Athena | Serverless SQL | Consultas ad hoc sobre datos en S3 |
| DynamoDB | NoSQL OLTP | Apps web, juegos, sesiones |
| RDS/Aurora | SQL OLTP | Aplicaciones transaccionales |
| OpenSearch | Full-text search | Logs, búsquedas, dashboards |
🎓 Preguntas tipo certificación
-
¿Qué técnica se usa para mejorar joins en Redshift?
- ✅ Distribución por clave (
DISTKEY)
- ✅ Distribución por clave (
-
¿Redshift Serverless requiere aprovisionar nodos?
- ❌ No. Se escala automáticamente y se cobra por segundo.
-
¿Cómo consulta datos directamente en S3?
- ✅ Usando Redshift Spectrum
-
¿Cuál es el comando óptimo para cargar datos desde S3?
- ✅
COPY
- ✅
-
¿Puedes compartir datos entre cuentas?
- ✅ Sí, con Redshift Data Sharing