Herramienta
PostgreSQL
Base relacional ACID con tipos avanzados (JSONB, arrays, range), CTEs, window functions y extensibilidad.
Puntos clave
- ▸ACID completo: transacciones serializables disponibles; READ COMMITTED es el default razonable.
- ▸JSONB para datos semiestructurados con índices GIN; flexibilidad sin abandonar el modelo relacional.
- ▸CTEs (WITH ...) hacen consultas complejas legibles; WITH RECURSIVE recorre árboles y grafos.
- ▸Window functions (ROW_NUMBER, LAG, PARTITION BY) hacen análisis row-by-row sin agrupar.
- ▸Extensiones (pgvector, postgis, timescaledb) suman capacidades sin cambiar de motor.
- ▸EXPLAIN ANALYZE muestra el plan real; pg_stat_statements identifica queries lentas en producción.
Código
WITH ranked AS (
SELECT
user_id,
amount,
created_at,
ROW_NUMBER() OVER (
PARTITION BY user_id
ORDER BY created_at DESC
) AS rn
FROM orders
WHERE created_at >= NOW() - INTERVAL '30 days'
)
SELECT user_id, amount, created_at
FROM ranked
WHERE rn = 1;
CTE + window function para obtener la última orden por usuario en los últimos 30 días.