Tema:
- 2. Arquitectura de la administración de la base de datos
- 2.1 Modelo de proceso
- 2.2 Componentes de un modelo
- 2.2.1 Arquitectura
- 2.2.2 Actividad
- 2.2.3 Métodos
- 2.2.4 Estrategia
- 2.2.5 Herramientas
¿Qué crees que abarca la administración de una base de datos?
¿Solo se trata de hacer consultas?
- Objetivo
- Comprender las responsabilidades, herramientas y procesos que emplean los administradores de bases de datos.
Administrar una BD abarca desde la planificación hasta el mantenimiento continuo. No se limita a tecnología; implica diseñar un proceso coherente con actividades, métodos y estrategias bien definidos.
La administración efectiva de la BD es clave para asegurar confiabilidad y disponibilidad de la información.
La arquitectura es el “esqueleto” que permite que la administración de bases de datos sea eficiente y segura.
DBA
La función principal de un DBA es asegurar que el sistema de bases de datos sea disponible, íntegro, seguro, recuperable y con buen rendimiento.
Responsabilidades
Fase | Responsabilidades del DBA (resumidas) |
---|---|
1. Análisis y diseño | • Seleccionar el DBMS (criterios: desempeño, costos, soporte, compatibilidad) • Modelado de datos y diseño lógico • Definir restricciones de integridad (PK, FK, UNIQUE, CHECK) • Documentar la estructura (diccionario de datos: significado, dominios, sensibilidad) • Definir políticas de acceso (roles, mínimos privilegios) • Definir estándares de cifrado (en tránsito/en reposo) |
2. Implementación | • Instalar y configurar el DBMS (instancia, parámetros base) • Crear el esquema físico (tablas, índices iniciales, particiones) • Implementar integridad referencial • Desplegar disparadores y procedimientos almacenados • Otorgar permisos conforme a políticas • Habilitar logs/auditoría (nivel y retención) • Configurar cifrado (TLS, TDE/keys) |
3. Monitoreo y optimización | • Acompañar al desarrollo (revisión de consultas/SQL review) • Monitoreo continuo (métricas, slow-log, waits, locking) • Optimizar consultas e índices (EXPLAIN, add/modify/drop) • Tuning del motor (memoria, paralelismo, autovacuum/redolog, plan cache) • Gestionar concurrencia y transacciones (aislamiento, bloqueos, tiempos de espera) |
4. Mantenimiento y evolución | • Backups y restauración periódicos (RPO/RTO, pruebas de recuperación) • Parches y actualizaciones del DBMS • Auditorías de seguridad y hardening • Controles SQL de integridad (validaciones periódicas) • Gestión de capacidad y escalado (vertical/horizontal) • Plan de recuperación de desastres (DR, conmutación por error) |
Hardening (seguridad) es el proceso de configurar y optimizar la base de datos para reducir su superficie de ataque y minimizar vulnerabilidades.
Tuning (optimización de rendimiento) es el conjunto de prácticas para mejorar rendimiento y eficiencia de una base de datos.
Principales
- Elaborar y mantener la Política de Seguridad de la Información (ISP)
- Desarrollar planes de contingencia (disaster recovery) y continuidad (backup, sitios alternativos).
Herramientas
1. Herramientas para modelado/diseño de BD:
-
Funcionalidades:
- Generar automáticamente DDL.
- Comparar y sincronizar modelo ↔ base de datos.
- Validaciones/estándares.
- Documentación.
- Ingeniería inversa.
Las herramientas de diagramación pura solo permiten dibujar diagramas visuales, sin conexión real con un motor de base de datos. No se deben confundir con las herramientas CASE para modelado/diseño de bases de datos.
-
Diagramación pura:
- Microsoft Visio,
- Figma,
- Draw.io,
- Lucidchart,
- Mermaid.
erDiagram
ALUMNOS {
int id_alumno PK
string nombre
string apellido
date fecha_nacimiento
}
ASIGNATURAS {
int id_asignatura PK
string nombre
string descripcion
}
ALUMNOS_ASIGNATURAS {
int id_alumno FK
int id_asignatura FK
string periodo
}
ALUMNOS ||--o{ ALUMNOS_ASIGNATURAS : "inscribe"
ASIGNATURAS ||--o{ ALUMNOS_ASIGNATURAS : "pertenece"
Herramienta CASE | MySQL | PostgreSQL | Oracle | SQL Server | Características principales |
---|---|---|---|---|---|
MySQL Workbench | ✅ | ⚠️*> (limitado, vía ODBC) | ❌ | ⚠️*> (limitado, vía ODBC) | Oficial de MySQL; modelado EER, ingeniería directa/inversa, generación de scripts SQL. |
pgModeler | ⚠️*> (ODBC) | ✅ | ❌ | ❌ | Especializada en PostgreSQL, modelado EER, generación y sincronización de bases de datos. |
Oracle SQL Developer Data Modeler | ✅ | ✅ | ✅ | ✅ | Gratuita; modelado lógico/físico, ingeniería inversa y generación de DDL, compatible con varios motores vía JDBC/ODBC. |
dbForge Studio (Devart) | ✅ | ✅ | ❌ | ✅ | Modelado visual, comparación de esquemas, generación de scripts, soporte para múltiples motores. |
ER/Studio Data Architect | ✅ | ✅ | ✅ | ✅ | Comercial, modelado conceptual/lógico/físico, ingeniería inversa, soporte multiplataforma y colaboración. |
Toad Data Modeler | ✅ | ✅ | ✅ | ✅ | Multimotor, modelado y documentación, ingeniería inversa, personalización de modelos. |
Navicat Data Modeler | ✅ | ✅ | ✅ | ✅ | Modelado EER, sincronización de esquemas, exportación de diagramas, multiplataforma. |
DBeaver (con plugin de modelado) | ✅ | ✅ | ✅ | ✅ | Open source, exploración y modelado básico, compatible con múltiples motores vía JDBC. |
PowerDesigner (SAP) | ✅ | ✅ | ✅ | ✅ | Comercial; modelado avanzado, simulación de cambios, gestión de metadatos y estándares corporativos. |
Leyenda:
- ✅ = Soporte nativo completo
- ⚠️ = Soporte parcial o mediante ODBC/JDBC
- ❌ = No soportado directamente
2. Herramientas para Hardening y Tuning:
Herramienta | MySQL | PostgreSQL | Oracle | SQL Server | Funcionalidad principal |
---|---|---|---|---|---|
MySQL Enterprise Monitor | ✅ | ❌ | ❌ | ❌ | Oficial de MySQL, monitoreo de rendimiento, alertas, análisis de seguridad. |
Percona Monitoring and Management (PMM) | ✅ | ✅ | ❌ | ❌ | Open source, monitoreo en tiempo real, métricas de queries, seguridad y capacidad. |
phpMyAdmin Security Advisor | ✅ | ❌ | ❌ | ❌ | Asistente de seguridad integrado, revisión de configuraciones y permisos. |
pgAdmin + pg_>stat_>statements | ❌ | ✅ | ❌ | ❌ | Monitoreo de consultas, estadísticas de uso, tuning de queries. |
pgaudit | ❌ | ✅ | ❌ | ❌ | Extensión para auditoría detallada de eventos y accesos. |
Oracle Enterprise Manager (OEM) | ❌ | ❌ | ✅ | ❌ | Gestión centralizada, tuning advisor, auditoría, monitoreo de seguridad. |
Oracle Data Safe | ❌ | ❌ | ✅ | ❌ | Servicio en la nube para análisis de riesgos, enmascaramiento y auditorías. |
SQL Server Management Studio (SSMS) | ❌ | ❌ | ❌ | ✅ | Administración, tuning de consultas, análisis de planes de ejecución. |
SQL Server Profiler | ❌ | ❌ | ❌ | ✅ | Trazas y diagnósticos de rendimiento en tiempo real. |
SQL Server Database Tuning Advisor (DTA) | ❌ | ❌ | ❌ | ✅ | Recomendaciones de índices y particiones basadas en carga de trabajo. |
Redgate SQL Monitor | ❌ | ❌ | ❌ | ✅ | Monitoreo proactivo, alertas, métricas de rendimiento y seguridad. |
SolarWinds Database Performance Analyzer | ✅ | ✅ | ✅ | ✅ | Análisis de rendimiento multiplataforma, sugerencias de tuning, detección de cuellos de botella. |
Lynis (Linux) | ✅ | ✅ | ✅ | ✅ | Auditoría de seguridad a nivel sistema, útil para hardening de entornos de BD. |
Nessus / OpenVAS | ✅ | ✅ | ✅ | ✅ | Escáneres de vulnerabilidades, detección de configuraciones inseguras. |
Leyenda:
- ✅ = Soporte o uso común en ese motor
- ❌ = No aplicable o no usado normalmente
3. Lenguajes y entornos de scripting
Un DBA necesita manejar herramientas y lenguajes de scripting para automatizar tareas de backups, mantenimiento y monitoreo.
-
Scripts comunes:
- Respaldo y restauración programada.
- Limpieza de logs y archivos temporales.
- Automatización de actualizaciones de estadísticas e índices.
- Monitoreo de espacio en disco y rendimiento.
- Alertas por correo o chat ante fallos o baja disponibilidad.
- Migración de datos entre entornos.
- Verificación de integridad de copias de seguridad.
Tipo de uso | MySQL / MariaDB | PostgreSQL | Oracle | SQL Server |
---|---|---|---|---|
Lenguaje de scripting interno | SQL, Procedures y Triggers; funciones en SQL estándar | SQL, PL/pgSQL | SQL, PL/SQL | SQL, T-SQL |
CLI (cliente y ejecución de scripts) | mysql (cliente interactivo) |
psql |
sqlplus |
sqlcmd |
Respaldo / restauración | mysqldump , mysqlpump , mysqlimport |
pg_dump , pg_restore |
expdp , impdp (Data Pump) |
BACKUP DATABASE / RESTORE DATABASE , bcp |
Monitoreo / tuning en CLI | mysqladmin , performance_schema , EXPLAIN |
pg_stat_statements , EXPLAIN ANALYZE , pg_stat_activity |
AUTOTRACE , tkprof , EXPLAIN PLAN |
SET STATISTICS IO/TIME , sys.dm_exec_query_stats , Execution Plan Viewer |
Automatización en SO | Bash scripts con cron (Linux) |
Bash scripts con cron (Linux) |
Bash scripts con cron (Linux) |
PowerShell con Programador de tareas (Windows) |
Lenguajes externos comunes | Python (mysql-connector-python , PyMySQL ), Perl |
Python (psycopg2 ), Perl |
Python (cx_Oracle ), Java |
Python (pyodbc ), PowerShell |
Control de versiones | Git/GitHub/GitLab | Git/GitHub/GitLab | Git/GitHub/GitLab | Git/GitHub/GitLab |
Integración continua / despliegue de scripts | Jenkins, Ansible, GitHub Actions | Jenkins, Ansible, GitHub Actions | Jenkins, Ansible, GitHub Actions | Jenkins, Ansible, GitHub Actions |