En esta página
¿Qué son las bases de datos?
¿Qué son las bases de datos?
Antes de escribir una sola línea de SQL, necesitas entender qué problema resuelven las bases de datos y por qué siguen siendo el núcleo de casi cualquier aplicación moderna. Desde la app de tu banco hasta la red social que usas a diario, todo descansa sobre un sistema de almacenamiento persistente y confiable.
El problema que resuelven
Imagina que tienes una tienda en línea con miles de productos, clientes y pedidos. Podrías guardar esa información en archivos de texto o en hojas de cálculo, pero rápidamente te encontrarías con problemas:
- Búsqueda lenta: encontrar el pedido número 47.832 en un archivo de millones de líneas es ineficiente.
- Inconsistencia: dos programas leyendo y escribiendo el mismo archivo al mismo tiempo pueden corromper los datos.
- Sin relaciones: ¿cómo sabes qué productos pertenecen a qué pedido sin duplicar información?
- Sin seguridad: cualquiera con acceso al servidor puede leer o modificar el archivo completo.
Las bases de datos nacieron para resolver exactamente estos problemas. Un Sistema Gestor de Bases de Datos (SGBD o DBMS por sus siglas en inglés) es un software especializado que organiza, almacena, recupera y protege los datos de forma eficiente.
Bases de datos relacionales vs NoSQL
Existen dos grandes familias de bases de datos, y entender sus diferencias te ayudará a elegir la herramienta correcta para cada proyecto.
Bases de datos relacionales (SQL)
Las bases de datos relacionales organizan los datos en tablas (filas y columnas), similares a hojas de cálculo pero con reglas estrictas. Cada tabla representa una entidad (usuarios, productos, pedidos) y las tablas se conectan entre sí mediante claves foráneas.
El lenguaje estándar para consultarlas es SQL (Structured Query Language), que lleva décadas siendo el estándar de la industria. Ejemplos populares: PostgreSQL, MySQL, SQLite, Oracle, SQL Server.
Bases de datos NoSQL
Las bases de datos NoSQL (Not Only SQL) ofrecen modelos de datos alternativos:
- Documentales (MongoDB, Firestore): almacenan objetos JSON anidados. Ideales para datos con estructura variable.
- Clave-valor (Redis, DynamoDB): acceso ultrarrápido por clave. Ideal para caché y sesiones.
- Columnares (Cassandra, BigTable): optimizadas para escrituras masivas y análisis de grandes volúmenes.
- Grafos (Neo4j): modelan relaciones complejas entre entidades.
¿Cuándo usar cada una?
| Criterio | SQL (Relacional) | NoSQL |
|---|---|---|
| Estructura de datos | Definida, estable | Variable, flexible |
| Relaciones | Complejas y múltiples | Simples o ninguna |
| Consistencia | Crítica (ACID) | Eventual acceptable |
| Escalado | Vertical (más potente) | Horizontal (más servidores) |
| Consultas | Complejas, flexibles | Simples, predefinidas |
La realidad es que la mayoría de aplicaciones de negocio necesitan consistencia y relaciones, por lo que SQL sigue siendo la opción predeterminada correcta. Muchos equipos que migraron a NoSQL han regresado a PostgreSQL al enfrentarse a la complejidad de mantener la integridad de los datos manualmente.
Los principios ACID
ACID es el acrónimo que define las propiedades que garantizan la fiabilidad de las transacciones en bases de datos relacionales. Estos cuatro principios son la razón por la que confías en que tu transferencia bancaria no va a perder tu dinero:
Atomicidad (Atomicity)
Una transacción es todo o nada. Si transfieres dinero de tu cuenta A a la cuenta B, o ambas operaciones (débito y crédito) se completan, o ninguna se realiza. No puede existir un estado intermedio donde el dinero desaparezca.
Consistencia (Consistency)
La base de datos siempre pasa de un estado válido a otro estado válido. Las reglas que definiste (restricciones, claves foráneas, tipos de datos) se cumplen siempre. No puedes insertar un pedido que referencie a un cliente que no existe.
Aislamiento (Isolation)
Las transacciones concurrentes no se interfieren entre sí. Si dos usuarios intentan comprar el último artículo en stock al mismo tiempo, el sistema garantiza que solo uno lo conseguirá, como si las transacciones se ejecutaran en secuencia.
Durabilidad (Durability)
Una vez que una transacción se confirma (COMMIT), los datos persisten aunque el servidor se apague inmediatamente después. PostgreSQL usa un Write-Ahead Log (WAL) para garantizar esto: primero escribe en el log, luego en los archivos de datos.
Breve historia del SQL
La historia de SQL comienza en los años 70 en IBM Research. Edgar F. Codd publicó en 1970 su paper seminal "A Relational Model of Data for Large Shared Data Banks", que estableció los fundamentos matemáticos del modelo relacional basados en la teoría de conjuntos.
En 1974, Donald Chamberlin y Raymond Boyce, también en IBM, desarrollaron SEQUEL (Structured English Query Language), que luego se renombraría como SQL. El primer producto comercial fue Oracle (entonces llamado Relational Software Inc.) en 1979.
En 1986, el American National Standards Institute (ANSI) publicó el primer estándar SQL. Desde entonces han existido múltiples revisiones: SQL-89, SQL-92, SQL:1999, SQL:2003, SQL:2011, SQL:2016 y SQL:2023, cada una añadiendo nuevas capacidades.
Por qué PostgreSQL 18
PostgreSQL no es solo otra base de datos SQL. Es el proyecto de código abierto más avanzado del mundo en este dominio, y tiene varias características que lo hacen sobresaliente:
Cumplimiento estricto del estándar SQL: PostgreSQL implementa más del estándar SQL que cualquier otra base de datos de código abierto.
Tipos de datos avanzados: además de los tipos básicos, PostgreSQL soporta arrays, JSONB (JSON binario con índices), tipos geométricos, rangos, tipos personalizados y mucho más.
Extensibilidad: puedes crear tus propios tipos de datos, funciones, operadores e incluso métodos de indexación. La extensión PostGIS convierte PostgreSQL en un sistema de información geográfica completo.
Rendimiento: PostgreSQL 18 incluye mejoras significativas en paralelismo de consultas, particionamiento de tablas y optimización del planificador de consultas.
Confiabilidad: usado en producción por Apple, Instagram, Spotify, GitHub, Twitch, Heroku y miles de empresas más.
Licencia liberal: la licencia PostgreSQL (similar a BSD/MIT) permite usarlo en cualquier proyecto, incluso comercial, sin costo.
JSONB para datos semiestructurados: puedes almacenar documentos JSON con soporte completo de índices GIN, eliminando la necesidad de una base de datos de documentos separada para muchos casos de uso.
-- PostgreSQL 18 - Verificar la versión instalada
SELECT version();
-- Resultado ejemplo:
-- PostgreSQL 18.0 on x86_64-pc-linux-gnu, compiled by gcc 13.2.0
-- Crear nuestra primera base de datos
CREATE DATABASE tienda_online
WITH
ENCODING = 'UTF8'
LC_COLLATE = 'es_ES.UTF-8'
LC_CTYPE = 'es_ES.UTF-8'
TEMPLATE = template0;
-- Conectarse a ella
\c tienda_online
-- Ver las bases de datos disponibles
\lEl estándar SQL y sus dialectos
Aunque SQL es un estándar, cada sistema de gestión de bases de datos tiene sus propias extensiones y variaciones. Las diferencias más comunes que encontrarás:
| Característica | PostgreSQL | MySQL | SQLite |
|---|---|---|---|
| RETURNING | ✅ Sí | ❌ No | ✅ Sí |
| JSONB nativo | ✅ Sí | Parcial | ❌ No |
| CTE recursivas | ✅ Sí | ✅ Sí | ✅ Sí |
| Window functions | ✅ Completo | Parcial | Parcial |
| UPSERT | ON CONFLICT | ON DUPLICATE KEY | ON CONFLICT |
En este curso usaremos SQL estándar siempre que sea posible, pero aprovecharemos las capacidades únicas de PostgreSQL cuando ofrezcan ventajas reales.
[!tip] ¿SQL o "sequel"? Ambas pronunciaciones son correctas. "SQL" (deletreando las letras) y "sequel" (pronunciación original de SEQUEL) se usan indistintamente en la industria. Lo importante es lo que puedes hacer con él.
[!info] PostgreSQL 18 en Windows, macOS y Linux: descarga el instalador oficial desde postgresql.org. En macOS puedes usar
brew install postgresql@18. En Ubuntu/Debian:sudo apt install postgresql-18. En Docker:docker run -e POSTGRES_PASSWORD=secret -p 5432:5432 postgres:18.
Conclusión
Las bases de datos relacionales con SQL llevan más de 50 años siendo la columna vertebral de los sistemas de información, y por buenas razones: su modelo matemático sólido, las garantías ACID y la flexibilidad del lenguaje SQL las hacen insuperables para la mayoría de casos de uso empresariales.
PostgreSQL 18 representa la culminación de décadas de desarrollo: es robusto, estándar, extensible y completamente gratuito. A lo largo de este curso aprenderás a usarlo de forma profesional, desde las consultas básicas hasta el diseño de esquemas complejos, índices, transacciones y seguridad.
En la siguiente lección exploraremos el modelo relacional en profundidad: cómo se estructuran las tablas, qué son las claves primarias y foráneas, y cómo diseñar relaciones entre entidades de forma correcta.
nextSteps:
- slug: modelo-relacional label: "Siguiente: El modelo relacional"
Inicia sesión para guardar tu progreso