Qué es una base de datos: historia, importancia y conceptos clave
Usted ya tiene bases de datos en su computadora sin haber instalado ninguna. Firefox guarda su historial en un archivo llamado places.sqlite, dentro de la carpeta del perfil; Chrome lo guarda en un archivo llamado History, sin extensión. Los dos son bases SQLite, y un analista forense las abre con las consultas de este curso. Antes de escribirlas, conviene saber qué son, de dónde salió SQL y cómo leer las fichas de sintaxis.
Qué es una base de datos
Una base de datos es información organizada que un programa guarda, busca y modifica con reglas. Ese programa es el motor o sistema gestor de bases de datos (DBMS, database management system).
Una hoja de cálculo también tiene filas y columnas. Lo que cambia es el motor: deja escribir a muchos a la vez sin pisarse, rechaza datos que rompen una regla (un correo repetido), responde sobre millones de registros en segundos y decide quién ve o cambia cada cosa.
Con la mayoría de los motores se habla en SQL (Structured Query Language, lenguaje de consulta estructurado), que se pronuncia "ese-cu-ele" o "sícuel". Es declarativo: usted dice qué datos quiere y el motor decide cómo buscarlos.
Breve historia
| Año | Hito |
|---|---|
| 1970 | Edgar F. Codd, de IBM, publica el modelo relacional: datos en tablas relacionadas |
| 1974 | Donald Chamberlin y Raymond Boyce, en IBM, diseñan SEQUEL, luego rebautizado SQL |
| 1979 | Sale Oracle V2, uno de los primeros motores comerciales basados en SQL |
| 1986 | ANSI publica el primer estándar de SQL; ISO lo adopta en 1987 |
| 1995 | Primera versión pública de MySQL, luego el motor clásico de la web |
| 1996 | El proyecto POSTGRES, de la Universidad de California en Berkeley, pasa a llamarse PostgreSQL |
| 2000 | D. Richard Hipp crea SQLite, una base completa dentro de un solo archivo |
| 2009 | Se populariza el término NoSQL y aparece MongoDB |
El modelo de Codd, con más de cincuenta años, sigue guardando planillas, facturas e inventarios.
Por qué importa en ciberseguridad
Lo que un atacante quiere llevarse casi siempre está en una tabla. En un SOC, los lenguajes de consulta de los SIEM (KQL en Microsoft Sentinel, SPL en Splunk) filtran, agrupan y cruzan igual que SQL. En forense, el historial del navegador y los mensajes de muchas aplicaciones móviles son archivos SQLite. La inyección SQL lleva más de veinte años en las listas de fallas web más graves, y se previene entendiendo cómo la aplicación arma sus consultas. Quien administra servidores responde por cuentas con mínimo privilegio, respaldos restaurables y bases cerradas a internet. Y la Ley 8968 obliga a saber qué datos personales se guardan y quién los ve.
El tropiezo típico: quien copia places.sqlite con Firefox abierto se lleva un archivo sin los últimos cambios, porque estos siguen en places.sqlite-wal, al lado. Se copia con el navegador cerrado, o se copian los dos juntos.
Dónde se usa
| Lugar | Ejemplo |
|---|---|
| Aplicaciones web | Usuarios, pedidos y pagos de una tienda en línea |
| Celulares | Contactos, mensajes y ajustes de las aplicaciones |
| Navegadores | Historial, cookies y descargas |
| Empresas | Planillas, inventario de equipos, contabilidad |
| Herramientas de seguridad | Alertas de un SIEM, hallazgos de un escáner, casos de un SOC |
Conceptos clave
| Concepto | Qué significa |
|---|---|
| Motor o SGBD | Programa que guarda la base y atiende las consultas |
| Tabla | Conjunto de datos sobre un tipo de cosa, como empleados o equipos |
| Fila o registro | Un elemento concreto dentro de la tabla |
| Columna o campo | Un atributo de cada fila, con un tipo de dato |
| Llave primaria | Columna que identifica cada fila sin repetirse |
| Consulta | Instrucción SQL que pide o modifica datos |
| Esquema | La estructura de la base: tablas, columnas, tipos y relaciones |
| Vista | Una consulta guardada con nombre que se consulta igual que una tabla |
Cómo leer una sintaxis
Cada ficha del curso trae la forma general de la instrucción. Se lee así:
- En SQL, las MAYÚSCULAS son palabras reservadas y se escriben tal cual; las minúsculas, como
tabla, las reemplaza usted. - En herramientas de terminal como
pg_dumpes al revés: las MAYÚSCULAS (ARCHIVO,BASE) son lo que usted reemplaza. - Lo que va entre corchetes es opcional:
[WHERE condición]. - Los tres puntos indican que se puede repetir:
columna, .... - La barra vertical separa alternativas:
ASC | DESC. - Dos guiones
--inician un comentario: el motor ignora el resto de la línea.
SELECT columna, ... FROM tabla [WHERE condición] [ORDER BY columna [ASC | DESC]];Cómo pedir ayuda
La referencia es la documentación oficial: sqlite.org/lang.html para SQLite y postgresql.org/docs para PostgreSQL. Yo dejo la de SQLite abierta en una pestaña todo el curso: sus diagramas de cada instrucción responden más dudas que un foro. En la consola de PostgreSQL, \h SELECT muestra la sintaxis y \? lista los comandos; en la de SQLite, .help. Las herramientas de terminal responden a --help, por ejemplo pg_dump --help.