Sistema Gestor de Bases de Datos (SGBD): Software que actúa como interfaz entre los usuarios/aplicaciones y los datos físicos almacenados.
| Tipo de componente | Elemento | Función |
|---|---|---|
| Procesamiento de consultas | Compilador DML | Traduce consultas (SELECT, INSERT…) a bajo nivel |
| Precompilador DML | Extrae código DML de programas (ej: embebido en Java/C) | |
| Intérprete DDL | Procesa definiciones (CREATE, ALTER…) | |
| Motor de ejecución | Ejecuta las operaciones en la BD | |
| Gestión de almacenamiento | Gestor de ficheros | Maneja archivos físicos |
| Gestor de buffers | Controla memoria intermedia | |
| Gestión de transacciones | Gestor de transacciones | Controla concurrencia y ACID |
| Control de concurrencia | Evita conflictos entre usuarios | |
| Recuperación | Recupera datos ante fallos | |
| Metadatos | Diccionario de datos | Información sobre tablas, índices, etc. |
USUARIO / APLICACIÓN
│
▼
┌─────────────────────────────────────┐
│ PROCESAMIENTO DE CONSULTAS │
│ ┌───────────┐ ┌───────────────┐ │
│ │Precompil. │ │ Compilador │ │
│ │ DML │──▶│ DML │ │
│ └───────────┘ └──────┬────────┘ │
│ ┌───────────┐ │ │
│ │Intérprete │ ┌──────▼────────┐ │
│ │ DDL │──▶│ Motor de │ │
│ └───────────┘ │ Ejecución │ │
│ └──────┬────────┘ │
└─────────────────────────┼───────────┘
│
┌─────────────────┼─────────────────┐
▼ ▼ ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ GESTIÓN DE │ │ GESTIÓN DE │ │ METADATOS │
│ ALMACENAM. │ │TRANSACCIONES │ │ │
│ │ │ │ │ Diccionario │
│ Gest.Fich. │ │ Gest.Trans. │ │ de datos │
│ Gest.Buffer │ │ Ctrl.Concur. │ │ │
│ │ │ Recuperación │ │ │
└──────┬───────┘ └──────────────┘ └──────────────┘
│
▼
[DATOS FÍSICOS]
Bloque encargado de recibir, interpretar y optimizar las peticiones al SGBD.
-- Entrada al compilador DML:
SELECT nombre FROM empleados WHERE salario > 3000;
-- Salida: plan de acceso optimizado (ej: uso de índice sobre 'salario')
// Ejemplo DML embebido en Java (JDBC):
String sql = "SELECT * FROM clientes WHERE id = ?";
PreparedStatement ps = conn.prepareStatement(sql);
CREATE, ALTER, DROP.-- Instrucciones procesadas por el Intérprete DDL:
CREATE TABLE empleados (id INT PRIMARY KEY, nombre VARCHAR(100));
ALTER TABLE empleados ADD COLUMN salario DECIMAL(10,2);
Responsable de la organización física de los datos en disco y memoria.
DISCO ──▶ [Gestor de Buffers / Buffer Pool] ──▶ Motor de Ejecución
↑ Minimiza accesos a disco ↑
⚠️ Importante para el examen: El gestor de buffers es clave para el rendimiento. Su objetivo es maximizar los hits en memoria y minimizar los accesos a disco.
Garantiza que las operaciones sobre la BD sean correctas, incluso ante fallos o accesos concurrentes.
| Propiedad | Significado |
|---|---|
| Atomicidad | La transacción se ejecuta completa o no se ejecuta (todo o nada) |
| Consistencia | La BD pasa de un estado válido a otro estado válido |
| Aislamiento | Las transacciones concurrentes no se interfieren entre sí |
| Durabilidad | Los cambios confirmados (COMMIT) persisten aunque haya fallos |
| Técnica | Descripción |
|---|---|
| Bloqueos (locks) | Bloquea recursos para uso exclusivo o compartido |
| MVCC | Versiones múltiples para lectura no bloqueante |
| Sellado temporal | Ordena transacciones por timestamp |
Fallo del sistema
│
▼
[LOG / WAL]
/ \
UNDO REDO
(T no (T con
confirmadas) COMMIT)
También llamado catálogo del sistema o data dictionary.
-- Ejemplo: consultar metadatos en PostgreSQL
SELECT table_name, column_name, data_type
FROM information_schema.columns
WHERE table_schema = 'public';
| Característica | DML | DDL |
|---|---|---|
| Significado | Data Manipulation Language | Data Definition Language |
| Operaciones | SELECT, INSERT, UPDATE, DELETE | CREATE, ALTER, DROP, TRUNCATE |
| Componente | Compilador DML / Precompilador | Intérprete DDL |
| Afecta a | Los datos | La estructura (esquema) |
| Transacción | Sí (COMMIT / ROLLBACK) | Generalmente auto-commit |
El SGBD tiene 4 bloques funcionales principales: procesamiento de consultas (compilador/precompilador DML + intérprete DDL + motor), gestión de almacenamiento (ficheros + buffers), gestión de transacciones (ACID + concurrencia + recuperación) y metadatos (diccionario de datos).
La gestión de transacciones es el núcleo de la fiabilidad: garantiza las propiedades ACID mediante el gestor de transacciones, el control de concurrencia (bloqueos/MVCC) y el mecanismo de recuperación basado en logs (UNDO/REDO).
El diccionario de datos (metadatos) es transversal a todo el sistema: lo usan el compilador para validar y optimizar, el intérprete DDL para actualizar esquemas, y el gestor de transacciones para controlar accesos. Es imprescindible para el funcionamiento interno del SGBD.