¿Qué es una base de datos?
Una base de datos es una colección organizada de datos guardada en un ordenador para que los programas puedan encontrarlos, añadirlos, cambiarlos y borrarlos de forma rápida y segura. La gestiona un software llamado sistema gestor de bases de datos (SGBD o DBMS), como PostgreSQL, MySQL, SQLite o MongoDB.
Actualizado el 24 de septiembre de 2026
Cuando inicias sesión en una web, el sitio tiene que encontrar tu cuenta entre millones de otras, comprobar tu contraseña y cargar tus ajustes, todo en unos pocos milisegundos. No abre un archivo de texto para leerlo línea a línea. Envía una petición como SELECT * FROM users WHERE email = 'ana@example.com' a una base de datos, y la base de datos salta directamente a la fila correcta usando un índice, igual que el índice al final de un libro.
Cómo funciona una base de datos
Trabajan juntas dos piezas. La base de datos son los datos, organizados con una estructura fija. El sistema gestor de bases de datos (SGBD, o DBMS en inglés) es el programa que guarda esos datos en archivos, los mantiene coherentes y responde a las peticiones. PostgreSQL, MySQL y SQLite son SGBD; tu lista de clientes es la base de datos.
En una base de datos relacional, los datos viven en tablas. Cada tabla tiene columnas (nombre, país, puntos) y filas (una por usuario). Una petición pasa por estos pasos:
- Tu programa envía una consulta, normalmente escrita en SQL (Structured Query Language, lenguaje de consulta estructurado).
- El SGBD analiza la consulta y planifica cómo responderla: qué tablas leer y si un índice le permite saltarse la mayoría de las filas.
- Lee los datos del disco en páginas de tamaño fijo (4096 bytes por defecto en SQLite, 8 KB en PostgreSQL) y mantiene en memoria las páginas que se usan a menudo.
- Filtra, ordena y combina filas, y después devuelve el resultado.
Python incluye SQLite, así que puedes ejecutar una base de datos real aquí mismo:
Kenji 340
Omar 340
Ana 120
users: 4 average points: 222.5
El programa nunca dice cómo buscar. Describe el resultado que quiere, y el SGBD decide cómo obtenerlo. Esa es la principal diferencia entre preguntar a una base de datos y escribir un bucle sobre una lista.
Tipos de bases de datos
| Tipo | Guarda los datos como | Ejemplos | Uso típico |
|---|---|---|---|
| Relacional (SQL) | Tablas de filas y columnas, enlazadas por claves | PostgreSQL, MySQL, SQLite, Oracle, SQL Server | Usuarios, pedidos, pagos: la mayoría de las aplicaciones |
| Documental | Documentos parecidos a JSON | MongoDB, Firestore, CouchDB | Registros cuyos campos varían de uno a otro |
| Clave-valor | Un valor que se busca por una clave | Redis, DynamoDB | Cachés, sesiones, contadores |
| De columnas anchas | Filas con columnas flexibles repartidas en muchos servidores | Cassandra, HBase | Volúmenes de escritura muy altos |
| De grafos | Nodos y las relaciones entre ellos | Neo4j | Redes sociales, recomendaciones |
| De series temporales | Mediciones indexadas por tiempo | InfluxDB, TimescaleDB | Métricas, lecturas de sensores |
| Vectorial | Listas de números (embeddings) | pgvector, Pinecone, Milvus | Búsqueda por similitud para funciones de IA |
Todo lo que no es relacional se suele agrupar como NoSQL. Las bases de datos relacionales siguen siendo la opción por defecto para la mayoría de las aplicaciones, porque las tablas, las restricciones y SQL resuelven bien una gran variedad de problemas. Muchos productos también combinan tipos: PostgreSQL guarda documentos JSON, y pgvector le añade búsqueda vectorial.
Transacciones: todo o nada
Pasar dinero de Ana a Ben requiere dos cambios: sumar a Ben y restar a Ana. Si el programa falla entre uno y otro, aparece dinero de la nada. Una transacción agrupa cambios para que o se guarden todos o no se guarde ninguno. Aquí el segundo cambio rompe una regla (un saldo no puede bajar de cero), así que la base de datos deshace también el primero:
transfer 30 done
{'ana': 20, 'ben': 30}
transfer 40 failed: CHECK constraint failed: balance >= 0
{'ana': 20, 'ben': 30}
Los 40 de Ben se sumaron y luego se retiraron, así que los totales siguen cuadrando. Las bases de datos relacionales garantizan cuatro propiedades para las transacciones, conocidas como ACID: atomicidad (todo o nada), consistencia (reglas como CHECK siempre se cumplen), aislamiento (dos usuarios que ejecutan transacciones a la vez no ven el trabajo a medias del otro) y durabilidad (una vez guardado, un cambio sobrevive a un fallo o a un corte de luz).
Base de datos, hoja de cálculo o archivo
| Archivo de texto o CSV | Hoja de cálculo | Base de datos | |
|---|---|---|---|
| Tamaño | Lo que tu programa pueda cargar | 1.048.576 filas por hoja en Excel | Miles de millones de filas |
| Muchos escritores a la vez | No | Limitado | Sí, con bloqueos y transacciones |
| Encontrar un registro | Leer el archivo entero | Filtrar o buscar | Consulta por índice |
| Reglas sobre los datos | Ninguna | Validación opcional | Tipos, restricciones, claves foráneas |
| Hacer preguntas | Escribir tu propio código | Fórmulas | SQL o una API de consultas |
Una hoja de cálculo es buena herramienta para una persona que mira unos pocos miles de filas. En cuanto varios programas o usuarios escriben datos a la vez, o los datos tienen que cumplir reglas, la herramienta adecuada es una base de datos.
Cómo protegen los datos las bases de datos
Un SGBD escribe cada cambio en un registro antes de tocar los archivos de datos (el write-ahead log, o registro de escritura anticipada), así que tras un fallo puede repetir o deshacer el trabajo sin terminar. PostgreSQL puede guardar un checksum en cada página de 8 KB e informar de un fallo de checksum cuando un disco defectuoso devuelve datos dañados. Los usuarios y los permisos deciden quién puede leer o cambiar cada tabla, y la replicación mantiene copias en otros servidores. Además, los programas tienen que pasar la entrada del usuario como parámetros, como los marcadores ? de arriba, y nunca pegarla en el texto SQL, que es como se producen los ataques de inyección SQL.
Ideas equivocadas frecuentes
- "SQL es una base de datos." SQL es el lenguaje. PostgreSQL, MySQL y SQLite son bases de datos que lo entienden.
- "NoSQL significa nada de SQL." El término se suele leer como "not only SQL" (no solo SQL), y varias bases de datos NoSQL tienen lenguajes de consulta que se parecen a SQL, como el CQL de Cassandra.
- "Una base de datos siempre es un servidor grande." SQLite es un único archivo que un programa abre directamente, sin ningún servidor. Funciona dentro de todos los móviles Android e iOS.
- "Los datos de una base de datos están a salvo para siempre." Una base de datos protege contra los fallos, no contra alguien que ejecuta un
DELETEpor error. Las copias de seguridad siguen siendo necesarias.
Qué leer después
El curso de SQL enseña consultas desde el primer SELECT. La documentación de SQLite cubre los pasos siguientes: qué es SQLite, crear una tabla, índices y cómo evitar la inyección SQL. Para ver cómo se organizan los datos en el disco, lee qué es un byte, y la página del checksum explica cómo se detectan las páginas dañadas.