Como Data Engineer, es importante entender la diferencia entre SQL (el lenguaje) y PostgreSQL (el sistema de gestión de bases de datos).
SQL (Structured Query Language) es un lenguaje estándar para trabajar con bases de datos relacionales.
- Estándar: Definido por ANSI/ISO
- Universal: Funciona en múltiples sistemas (PostgreSQL, MySQL, SQL Server, etc.)
- Declarativo: Describes QUÉ quieres, no CÓMO hacerlo
SELECT nombre, email
FROM usuarios
WHERE ciudad = 'Madrid';Esta query funciona en cualquier base de datos SQL estándar.
PostgreSQL (también llamado "Postgres") es un sistema de gestión de bases de datos relacionales (RDBMS) que implementa SQL.
- Open source: Gratis y de código abierto
- Robusto: Muy confiable y estable
- Estándar SQL: Sigue muy de cerca los estándares SQL
- Extensible: Permite funciones personalizadas
- Avanzado: Soporta características avanzadas (JSON, arrays, etc.)
psql es el cliente de línea de comandos para interactuar con PostgreSQL.
# Conectarse a PostgreSQL
psql -h localhost -U usuario -d base_de_datosPostgreSQL implementa SQL estándar muy bien, lo que significa:
- ✅ Lo que aprendes aquí funciona en otros sistemas
- ✅ Fácil migrar queries a otros sistemas
- ✅ Buenas prácticas aplicables universalmente
PostgreSQL tiene características útiles para Data Engineering:
- Window Functions: Excelente soporte
- CTEs: Muy bien implementadas
- JSON: Soporte nativo para datos semi-estructurados
- Arrays: Manejo de arrays nativo
- Particionamiento: Particionamiento de tablas avanzado
PostgreSQL es ampliamente usado en:
- Startups y empresas tecnológicas
- Data Warehouses (como base para sistemas más grandes)
- Aplicaciones web modernas
- Sistemas de analytics
- No necesitas licencias costosas
- Comunidad activa y soporte
- Documentación excelente
- Sintaxis clara y estándar
- Mensajes de error útiles
- Herramientas de desarrollo buenas
-- Esto funciona en PostgreSQL, MySQL, SQL Server, etc.
SELECT nombre, email
FROM usuarios
WHERE ciudad = 'Madrid';-- DATE_TRUNC es específico de PostgreSQL
SELECT DATE_TRUNC('month', fecha_venta) AS mes
FROM ventas;
-- En MySQL sería:
SELECT DATE_FORMAT(fecha_venta, '%Y-%m-01') AS mes
FROM ventas;
-- En SQL Server sería:
SELECT DATETRUNC(month, fecha_venta) AS mes
FROM ventas;| Característica | SQL (estándar) | PostgreSQL |
|---|---|---|
| Tipo | Lenguaje | Sistema de base de datos |
| Portabilidad | Universal | Específico de PostgreSQL |
| Sintaxis básica | Igual en todos | Igual en todos |
| Funciones avanzadas | Limitadas | Muy extensas |
| Window Functions | Estándar | Excelente soporte |
| JSON | Limitado | Soporte nativo |
| Particionamiento | Básico | Avanzado |
PostgreSQL como sistema de base de datos, pero enseñamos SQL estándar siempre que sea posible.
- Aprendes SQL real: Lo que aprendes funciona en otros sistemas
- PostgreSQL es excelente: Características avanzadas cuando las necesites
- Práctica real: PostgreSQL es usado en la industria
Cuando usamos funciones específicas de PostgreSQL (como DATE_TRUNC), lo indicamos y proporcionamos alternativas para otros sistemas cuando es relevante.
En este repositorio, el Docker Compose levanta PostgreSQL 15:
postgres:
image: postgres:15-alpine
# ...¿Por qué PostgreSQL en Docker?
- ✅ Entorno consistente para todos
- ✅ Fácil de levantar y destruir
- ✅ No interfiere con instalaciones locales
- ✅ Misma versión para todos los estudiantes
No necesariamente, pero es un excelente punto de partida:
- ✅ SQL estándar bien implementado
- ✅ Características avanzadas disponibles
- ✅ Popular en la industria
- ✅ Gratis y open source
- MySQL/MariaDB: Muy popular en web
- SQL Server: Común en empresas Microsoft
- BigQuery/Snowflake: Data Warehouses en la nube
- SQLite: Para desarrollo local simple
La buena noticia: El SQL básico es muy similar entre todos. Las diferencias están en funciones avanzadas y características específicas.
- Aprende SQL estándar con PostgreSQL
- Practica con la base de datos Docker
- Aprende modelado relacional en modelado-relacional.md - Diseño de esquemas y normalización
- Cuando necesites otro sistema, adapta las funciones específicas
- El 90% del SQL que aprendas funcionará en otros sistemas
- SQL = Lenguaje estándar (funciona en muchos sistemas)
- PostgreSQL = Sistema de base de datos que implementa SQL
- psql = Cliente para interactuar con PostgreSQL
- Usamos PostgreSQL porque es excelente para aprender y muy usado en la industria
- Aprendes SQL estándar que funciona en otros sistemas también
Recuerda: SQL es el lenguaje universal. PostgreSQL es una excelente implementación para aprenderlo. Una vez que dominas SQL, adaptarte a otros sistemas es relativamente fácil.