Administración de SGBD
La administración de un Sistema Gestor de Bases de Datos (SGBD) es el conjunto de tareas orientadas a garantizar la disponibilidad, integridad, rendimiento y seguridad de los datos corporativos. El responsable de estas tareas es el Administrador de Bases de Datos (DBA).
Funciones del Administrador de Bases de Datos (DBA)
Entre las funciones propias del DBA se encuentran:
-
Instalar, configurar y actualizar el SGBD y sus parches.
-
Crear y gestionar usuarios, roles, privilegios y perfiles de seguridad.
-
Definir y ejecutar las políticas de copia de seguridad (backup) y recuperación.
-
Monitorizar y optimizar el rendimiento (índices, planes de ejecución, tuning).
-
Gestionar el almacenamiento (tablespaces, ficheros de datos, crecimiento).
-
Garantizar la integridad y la alta disponibilidad de la información.
NO es función del DBA diseñar los diagramas UML de los sistemas corporativos: el modelado UML corresponde al analista o al equipo de desarrollo/diseño de software, no a la administración de la base de datos.
Sentencias del lenguaje SQL: DML frente a DDL
El SQL se organiza, entre otros, en dos sublenguajes clave:
-
DML (Data Manipulation Language): manipula los datos contenidos en las tablas. Incluye
SELECT,INSERT,UPDATEyDELETE. -
DDL (Data Definition Language): define y modifica la estructura de los objetos. Incluye
CREATE,ALTER,DROPyTRUNCATE.
Puntos críticos que conviene distinguir con precisión:
| Sentencia | Tipo | Efecto |
|---|---|---|
DELETE | DML | Elimina filas de una tabla, pero no la definición de la tabla. Permite WHERE, es transaccional (admite ROLLBACK). |
TRUNCATE | DDL | Vacía todas las filas de una tabla de forma rápida; conserva la estructura. |
DROP | DDL | Elimina el objeto completo (tabla, índice, vista o base de datos), incluida su definición. |
Por tanto, para eliminar los datos de una tabla pero no la propia definición de la tabla se usa DELETE (o TRUNCATE si se quieren borrar todas las filas). Es incorrecto afirmar que "DELETE sirve para borrar de forma sencilla distintos objetos como bases de datos, tablas o índices": esa es la función de DROP, no de DELETE.
Propiedades ACID
Las bases de datos relacionales garantizan la fiabilidad de las transacciones mediante las propiedades ACID:
-
A — Atomicidad (Atomicity): la transacción se ejecuta completa o no se ejecuta (todo o nada).
-
C — Consistencia (Consistency): la base de datos pasa de un estado válido a otro estado válido, respetando las restricciones.
-
I — Aislamiento (Isolation): las transacciones concurrentes no interfieren entre sí; el resultado es como si se ejecutasen en serie.
-
D — Durabilidad (Durability): una vez confirmada (
COMMIT), la transacción persiste aunque falle el sistema.
Anomalías de concurrencia
Cuando el aislamiento no es total, aparecen las anomalías típicas de acceso concurrente:
-
Lecturas sucias (dirty reads): leer datos modificados por una transacción aún no confirmada.
-
Lecturas no repetibles (non-repeatable reads): un mismo dato leído dos veces devuelve valores distintos.
-
Lecturas fantasma (phantom reads): una consulta repetida devuelve filas nuevas insertadas por otra transacción.
Las denominadas "lecturas hundidas" NO existen; es un término inventado y, por tanto, no constituye una anomalía real de las bases de datos.
Arquitectura de una instancia Oracle
Una instancia Oracle está compuesta por estructuras de memoria y procesos en segundo plano (background). Las dos estructuras de memoria básicas son:
-
SGA (System Global Area): memoria compartida por todos los procesos de la instancia (buffer cache, redo log buffer, shared pool, etc.).
-
PGA (Program Global Area): memoria privada asociada a cada proceso servidor de usuario.
Procesos background de Oracle
Los procesos en segundo plano obligatorios incluyen, entre otros:
-
PMON (Process Monitor): cuando un proceso de usuario falla, PMON se encarga de limpiar la caché (buffer cache) y liberar los recursos que utilizaba el proceso, además de recuperar el proceso de servidor o dispatcher.
-
SMON (System Monitor): realiza la recuperación de instancia tras un fallo y tareas de limpieza a nivel de sistema.
-
DBWn (Database Writer): escribe los bloques modificados del buffer cache a los ficheros de datos.
-
LGWR (Log Writer): escribe la información del redo log buffer a los ficheros de redo log.
-
CKPT (Checkpoint): escribe la información de los puntos de sincronización (checkpoint) en los ficheros de control y en las cabeceras de los ficheros de datos, y avisa a DBWn.
-
ARCn (Archiver): archiva los redo logs cuando la base opera en modo ARCHIVELOG.
-
RECO (Recoverer): resuelve transacciones distribuidas dudosas.
No existe un proceso background de Oracle llamado "BLCK"; el proceso de bloqueo real es LCKn (lock process), asociado a Oracle RAC/servidor paralelo. Cualquier afirmación que atribuya el bloqueo a un proceso "BLCK" es falsa.
Configuración de la conexión: tnsnames.ora
En el cliente Oracle, las cadenas de conexión (descriptores de red que asocian un alias con host, puerto y nombre de servicio) se configuran en el fichero tnsnames.ora, ubicado normalmente en $ORACLE_HOME/network/admin. Cuando llega una nueva cadena de conexión a la base de datos, es en tnsnames.ora donde debe configurarse.
Motor de persistencia (mapeo objeto-relacional)
El motor de persistencia (ORM, Object-Relational Mapping) actúa como capa intermedia entre un lenguaje orientado a objetos y una base de datos relacional. Su función es traducir entre los dos formatos de datos: de registros a objetos y de objetos a registros, resolviendo la llamada "impedancia objeto-relacional". Ejemplos: Hibernate (Java) o Entity Framework (.NET).
SQL Server Machine Learning Services
Machine Learning Services es una característica de SQL Server que proporciona la capacidad de ejecutar scripts de Python y R con datos relacionales, directamente dentro de la base de datos (in-database), sin mover los datos fuera de SQL Server ni por la red.
Entre sus paquetes destaca RevoScaleR, el paquete de R que permite realizar transformaciones y manipulaciones de datos, resúmenes estadísticos, visualizaciones y numerosas formas de modelado de manera escalable y paralelizable. Su equivalente en Python es revoscalepy.
Fuentes
-
Oracle Database — Process Architecture / Background Processes (procesos PMON, SMON, DBWn, LGWR, CKPT). https://docs.oracle.com/en/database/oracle/oracle-database/21/cncpt/process-architecture.html
-
Oracle Database — Background Processes (referencia). https://docs.oracle.com/en/database/oracle/oracle-database/26/dbiad/db_backgroundprocesses.html
-
Oracle Database — Database Net Services Reference: tnsnames.ora. https://docs.oracle.com/en/database/oracle/oracle-database/21/netrf/local-naming-parameters-in-tns-ora-file.html
-
Microsoft Learn — What is SQL Server Machine Learning Services (Python and R)?. https://learn.microsoft.com/en-us/sql/machine-learning/sql-server-machine-learning-services
-
Microsoft Learn — RevoScaleR package for R. https://learn.microsoft.com/en-us/previous-versions/microsoft-r/r-reference/revoscaler/revoscaler
-
ISO/IEC 9075 (SQL) — sentencias DML (DELETE) y DDL (DROP, TRUNCATE); modelo transaccional ACID y niveles de aislamiento.
-
Microsoft Learn — SQL Docs: DELETE / DROP TABLE / TRUNCATE TABLE (Transact-SQL). https://learn.microsoft.com/en-us/sql/t-sql/statements/delete-transact-sql