📊 Tema 33
Los Sistemas de Gestión de Bases de Datos (SGBD)
1. Introducción y Contextualización
Las bases de datos constituyen el activo más valioso de cualquier organización sanitaria moderna. En el contexto del Servicio Andaluz de Salud, los Sistemas de Gestión de Bases de Datos no son simplemente repositorios de información, sino la columna vertebral tecnológica que sostiene la prestación de servicios sanitarios a más de 8,4 millones de ciudadanos andaluces. Cada consulta médica, cada prescripción farmacéutica, cada prueba diagnóstica, cada ingreso hospitalario genera y consulta datos que deben estar disponibles con niveles de seguridad, integridad y disponibilidad que literalmente pueden marcar la diferencia entre la vida y la muerte.
Cuando un profesional sanitario accede a Diraya, el sistema corporativo de historia clínica digital del SAS, está realizando centenares de operaciones sobre bases de datos Oracle que almacenan más de 100 millones de episodios asistenciales. Estas operaciones deben cumplir propiedades ACID (Atomicidad, Consistencia, Aislamiento, Durabilidad) para garantizar que la información clínica sea siempre fiable, esté protegida ante fallos y sea accesible en tiempo real desde cualquiera de los más de 1.500 centros sanitarios del SSPA.
🎯 Relevancia para la Oposición TFA-STI SAS
Este tema ha aparecido en TODOS los exámenes de los últimos años con un peso significativo. En la convocatoria OEP 2025 para Informática Libre, las preguntas 45-50 fueron específicamente sobre SGBD. En el examen de Técnico Especialista en Informática de Promoción Interna 2023, se incluyeron 6 preguntas directas sobre bases de datos, transacciones, normalización y arquitectura ANSI/SPARC. En la convocatoria de Técnico Titulado Medio en Informática 2025, aparecieron 3 preguntas sobre Oracle, incluyendo casos prácticos sobre rendimiento de aplicaciones hospitalarias (preguntas 118-120).
Además, en los casos prácticos siempre hay supuestos relacionados con el diseño, optimización o resolución de problemas en bases de datos de sistemas corporativos del SAS.
🏥 Contexto Real en el SAS
Diraya, la plataforma corporativa de historia clínica digital del SAS, se apoya sobre un cluster de bases de datos Oracle Database 19c en configuración RAC (Real Application Clusters) para garantizar alta disponibilidad. Cada día se procesan más de 5 millones de transacciones que incluyen consultas de historiales clínicos, registro de actos asistenciales, prescripciones electrónicas y peticiones de pruebas diagnósticas.
El sistema BDU (Base de Datos de Usuario) consolida la información poblacional de todos los ciudadanos con derecho a asistencia sanitaria en Andalucía, gestionando identidades únicas y evitando duplicidades mediante técnicas de integridad referencial y normalización de datos.
InfoWeb, la plataforma de Business Intelligence corporativa del SAS, extrae datos de múltiples fuentes mediante procesos ETL (Extract, Transform, Load) implementados con Oracle Data Integrator (ODI), consolidando información en un data warehouse para análisis de indicadores sanitarios, seguimiento del Contrato Programa y toma de decisiones estratégicas.
1.1. Marco Normativo y Regulatorio
La gestión de bases de datos en el ámbito sanitario público está sujeta a un marco regulatorio especialmente estricto que combina requisitos de seguridad, protección de datos y continuidad de servicio. El Esquema Nacional de Seguridad (ENS), actualizado por el Real Decreto 311/2022, establece los niveles de seguridad que deben cumplir los sistemas de información de las administraciones públicas, incluyendo medidas específicas para la gestión de bases de datos en entornos de alta criticidad.
El Reglamento General de Protección de Datos (RGPD) y la Ley Orgánica 3/2018 (LOPDGDD) imponen obligaciones específicas sobre el tratamiento de datos de salud, considerados categoría especial de datos personales conforme al artículo 9 del RGPD. Los SGBD que almacenan historias clínicas deben implementar medidas técnicas y organizativas que garanticen la confidencialidad, integridad y disponibilidad de estos datos, incluyendo cifrado en reposo y en tránsito, trazabilidad de accesos, y capacidad de respuesta ante ejercicio de derechos (acceso, rectificación, supresión, portabilidad).
📋 Normativa Específica Aplicable
- Real Decreto 311/2022 sobre el Esquema Nacional de Seguridad (ENS)
- Reglamento (UE) 2016/679 (RGPD) sobre protección de datos personales
- Ley Orgánica 3/2018 (LOPDGDD) de Protección de Datos y Garantía de los Derechos Digitales
- Ley 41/2002 básica reguladora de la autonomía del paciente y de derechos y obligaciones en materia de información y documentación clínica
- ISO 27001:2022 sobre Sistemas de Gestión de la Seguridad de la Información
- ISO 27799:2016 específica para gestión de seguridad de información sanitaria
- Guías CCN-STIC del Centro Criptológico Nacional para implementación del ENS
1.2. Objetivos del Tema
Al finalizar el estudio de este tema, deberás ser capaz de comprender en profundidad los fundamentos teóricos y prácticos de los Sistemas de Gestión de Bases de Datos, aplicados específicamente al contexto sanitario del SAS. Esto incluye entender las diferentes arquitecturas de SGBD (centralizadas, distribuidas, federadas), los modelos de bases de datos (relacionales, no relacionales), los mecanismos de control de transacciones y concurrencia, y las estrategias de recuperación ante fallos.
Deberás dominar el modelo de referencia ANSI/SPARC y su aplicación en sistemas reales, comprender las propiedades ACID que garantizan la fiabilidad de las transacciones, conocer los principales SGBD comerciales y de código abierto utilizados en el SAS (Oracle, PostgreSQL, MariaDB, MongoDB), y ser capaz de analizar y resolver problemas de rendimiento, integridad y disponibilidad en bases de datos de sistemas críticos hospitalarios.
2. Sistemas de Gestión de Bases de Datos (SGBD)
2.1. Concepto y Definición
Un Sistema de Gestión de Bases de Datos (SGBD), también conocido por sus siglas en inglés DBMS (Database Management System), es un software especializado que actúa como interfaz entre las aplicaciones, los usuarios finales y las bases de datos. Su función principal es proporcionar un entorno que facilite y controle el almacenamiento, modificación y extracción de información de forma eficiente, segura y coherente.
Los SGBD no son simplemente programas para almacenar datos, sino sistemas complejos que implementan múltiples servicios críticos: gestión del espacio de almacenamiento, optimización de consultas, control de concurrencia para accesos simultáneos, gestión de transacciones para garantizar la consistencia, mecanismos de recuperación ante fallos, sistemas de seguridad y control de acceso, y herramientas de administración y monitorización.
Respuesta correcta: D
2.2. Funciones y Componentes Principales
Los SGBD modernos se estructuran en varios componentes funcionales que trabajan coordinadamente para proporcionar servicios de gestión de datos. El procesador de consultas es el cerebro del sistema, responsable de analizar, optimizar y ejecutar las peticiones de los usuarios. Cuando un profesional sanitario busca el historial de un paciente en Diraya, el procesador de consultas analiza la solicitud SQL, genera un plan de ejecución óptimo considerando índices disponibles, estadísticas de distribución de datos y recursos del sistema, y coordina la recuperación de información de los ficheros de datos.
El gestor de almacenamiento controla la interacción con el sistema de ficheros del sistema operativo, gestionando la organización física de los datos en discos, la asignación de espacio, la creación y mantenimiento de índices, y la implementación de políticas de caché para minimizar accesos a disco. En bases de datos críticas como las de Diraya, este componente gestiona tablespaces Oracle distribuidos en sistemas de almacenamiento SAN de alta disponibilidad.
El gestor de transacciones garantiza que las operaciones sobre la base de datos cumplan las propiedades ACID, coordinando el inicio, ejecución y finalización de transacciones. Gestiona logs de transacciones (redo logs y undo logs en Oracle) que permiten deshacer operaciones en caso de fallo y rehacer operaciones confirmadas tras una recuperación. Este componente es crítico en entornos hospitalarios donde una transacción puede involucrar el registro simultáneo de un acto asistencial, la actualización del estado del paciente, la petición de pruebas diagnósticas y la generación de prescripciones.
🏥 Arquitectura de Diraya en el SAS
Diraya utiliza Oracle Database 19c como SGBD principal, configurado en arquitectura RAC (Real Application Clusters) sobre tres nodos en el CPD principal del SAS en Sevilla. Cada nodo ejecuta una instancia Oracle que accede a una base de datos única compartida en almacenamiento SAN mediante Oracle ASM (Automatic Storage Management).
Los ficheros de datos se distribuyen en múltiples tablespaces: DIRAYA_DATA para tablas principales, DIRAYA_INDEX para índices, DIRAYA_LOB para objetos grandes (imágenes médicas, documentos PDF), y DIRAYA_TEMP para operaciones temporales. El sistema implementa Oracle Data Guard en un CPD secundario en Málaga para disaster recovery con RPO (Recovery Point Objective) de 1 hora y RTO (Recovery Time Objective) de 4 horas.
2.3. Lenguajes de Bases de Datos
Los SGBD relacionales utilizan SQL (Structured Query Language) como lenguaje estándar para la definición, manipulación y control de datos. SQL se divide en varios sublenguajes especializados. El DDL (Data Definition Language) permite definir la estructura de la base de datos mediante sentencias como CREATE, ALTER y DROP para crear y modificar tablas, índices, vistas y otros objetos del esquema.
El DML (Data Manipulation Language) proporciona operaciones para consultar y modificar datos mediante sentencias SELECT, INSERT, UPDATE y DELETE. El DCL (Data Control Language) controla permisos y accesos mediante GRANT y REVOKE. El TCL (Transaction Control Language) gestiona transacciones con COMMIT, ROLLBACK y SAVEPOINT.
Respuesta correcta: C (CREATE es DDL, mientras SELECT e INSERT son DML, y REVOKE es DCL)
2.4. Ventajas de Utilizar un SGBD
La adopción de SGBD profesionales en organizaciones sanitarias como el SAS ofrece ventajas fundamentales frente a sistemas de ficheros tradicionales. La independencia de datos permite modificar la estructura física o lógica de la base de datos sin afectar a las aplicaciones que la utilizan. Si el SAS decide migrar de discos HDD a almacenamiento SSD NVMe, las aplicaciones sanitarias no requieren modificación alguna porque el SGBD abstrae la capa física.
El control de redundancia evita duplicación innecesaria de información. En el sistema BDU, cada ciudadano tiene un identificador único (NUHSA – Número Único de Historia de Salud de Andalucía) que relaciona toda su información demográfica, administrativa y asistencial sin necesidad de replicar datos en múltiples sistemas. La integridad de datos se garantiza mediante restricciones declarativas (claves primarias, foráneas, checks) que el SGBD verifica automáticamente antes de cada modificación.
El control de concurrencia permite que cientos de profesionales sanitarios accedan simultáneamente a Diraya sin que se produzcan inconsistencias. El SGBD coordina bloqueos y aislamiento de transacciones para que, por ejemplo, dos médicos que consultan simultáneamente el mismo paciente vean información coherente, y si uno prescribe un medicamento mientras el otro registra una alergia, el sistema gestiona correctamente la secuencia de actualizaciones.
Los mecanismos de recuperación protegen contra pérdidas de información ante fallos hardware, software o humanos. Oracle implementa logs de transacciones en discos redundantes que permiten recuperar la base de datos al último estado consistente. En 2023, cuando un fallo eléctrico afectó al CPD principal del SAS, el sistema se recuperó automáticamente sin pérdida de datos gracias a los mecanismos REDO y UNDO del SGBD.
3. Modelos y Arquitecturas de SGBD
3.1. Bases de Datos Centralizadas
En una arquitectura centralizada, toda la información y el procesamiento residen en un único sistema. Este modelo ofrece simplicidad administrativa, control centralizado de seguridad y facilidad para garantizar la consistencia de datos. Sin embargo, presenta limitaciones de escalabilidad y constituye un único punto de fallo. En el SAS, algunos sistemas departamentales como aplicaciones de gestión económica de centros de atención primaria utilizan bases de datos centralizadas PostgreSQL alojadas en servidores locales.
3.2. Bases de Datos Distribuidas
Los sistemas distribuidos fragmentan los datos y/o el procesamiento entre múltiples nodos geográficamente dispersos. La fragmentación horizontal divide tablas por filas según algún criterio, por ejemplo, almacenando los registros de pacientes de cada provincia en servidores locales. La fragmentación vertical divide por columnas, separando información clínica sensible en servidores de alta seguridad mientras datos demográficos básicos residen en sistemas más accesibles.
La replicación mantiene copias sincronizadas de datos en múltiples ubicaciones para mejorar disponibilidad y rendimiento. El sistema Receta XXI del SAS replica información de prescripciones farmacéuticas entre el servidor central y servidores provinciales, permitiendo que las farmacias dispensen medicamentos incluso si la conexión con el CPD central falla temporalmente.
💡 Características de SGBD Distribuidos
Transparencia de fragmentación: Los usuarios consultan la base de datos como si fuera centralizada, sin conocer cómo se distribuyen físicamente los datos.
Transparencia de replicación: El sistema gestiona automáticamente las copias replicadas, manteniendo su consistencia sin intervención del usuario.
Transparencia de ubicación: Las aplicaciones no necesitan conocer en qué servidor reside cada fragmento de datos.
Autonomía local: Cada nodo puede operar de forma independiente, gestionando su segmento de datos incluso ante desconexiones temporales.
Respuesta correcta: B (Database Links permiten consultas distribuidas entre instancias Oracle remotas)
3.3. Bases de Datos Federadas
Los sistemas federados integran múltiples bases de datos preexistentes, heterogéneas y autónomas, ofreciendo una vista unificada sin fusionarlas físicamente. Existen dos modelos principales: fuertemente acoplados, donde un administrador global controla la creación y acceso a los sistemas componente, y débilmente acoplados, donde los usuarios son responsables de crear y mantener las federaciones mediante vistas.
Respuesta correcta: C
3.4. Bases de Datos No Relacionales (NoSQL)
Las bases de datos NoSQL surgieron para atender necesidades que los SGBD relacionales tradicionales no cubrían eficientemente: escalabilidad horizontal masiva, esquemas flexibles, y alto rendimiento en operaciones de lectura/escritura simples. En el SAS, MongoDB se utiliza para almacenar logs de aplicaciones y telemetría de dispositivos IoMT (Internet of Medical Things) donde el volumen de datos y la variabilidad del esquema dificultan el uso de bases relacionales tradicionales.
3.4.1. Bases de Datos Clave-Valor
Almacenan pares clave-valor simples, optimizadas para recuperación rápida mediante claves únicas. Redis se emplea en el SAS como caché distribuida para sesiones de usuario en aplicaciones web sanitarias, reduciendo latencia y carga sobre las bases de datos Oracle principales. Una sesión de Diraya almacena en Redis información temporal del usuario autenticado, evitando consultas repetidas a la base de datos principal para cada petición HTTP.
3.4.2. Bases de Datos Documentales
Almacenan documentos JSON, XML o BSON con estructura variable. MongoDB es el SGBD documental más popular. En proyectos piloto del SAS, se ha evaluado MongoDB para almacenar formularios clínicos dinámicos donde cada especialidad médica requiere campos diferentes, algo complejo de modelar en esquemas relacionales rígidos.
Respuesta correcta: C (MongoDB es NoSQL documental)
3.4.3. Bases de Datos de Grafos
Optimizadas para modelar y consultar relaciones complejas entre entidades. Neo4j podría utilizarse en el SAS para analizar redes de contacto en epidemiología, relaciones entre síntomas y diagnósticos en sistemas de apoyo a la decisión clínica, o trazabilidad de interacciones farmacológicas considerando principios activos, patologías y genética del paciente.
3.4.4. Bases de Datos Columnares
Almacenan datos por columnas en lugar de por filas, optimizando consultas analíticas que agregan pocas columnas sobre millones de registros. Apache HBase y Cassandra son ejemplos. En el data warehouse de InfoWeb del SAS, se evalúa tecnología columnar para acelerar consultas OLAP sobre indicadores sanitarios que agregan datos de años de actividad asistencial.
Respuesta correcta: D (Apache HBase es NoSQL columnar)
3.4.5. Motores de Indexación
Elasticsearch es un motor de búsqueda y análisis distribuido basado en Apache Lucene. Permite indexar grandes volúmenes de documentos y realizar búsquedas de texto completo con alta velocidad. En el SAS, Elasticsearch se utiliza en el proyecto de Historia Clínica Digital para permitir búsquedas textuales avanzadas en informes clínicos, pudiendo localizar instantáneamente todos los pacientes que mencionan un síntoma específico o un tratamiento concreto en sus historiales.
4. El Modelo de Referencia ANSI/SPARC
4.1. Arquitectura de Tres Niveles
El modelo ANSI/SPARC, propuesto por el American National Standards Institute y el Standards Planning and Requirements Committee en 1975, define una arquitectura conceptual de tres niveles para los Sistemas de Gestión de Bases de Datos. Este modelo establece una separación clara entre cómo los usuarios ven los datos, cómo se representan lógicamente, y cómo se almacenan físicamente, permitiendo independencia entre estas capas.
4.2. Nivel Externo o de Vistas
El nivel externo define múltiples vistas personalizadas de la base de datos, adaptadas a las necesidades específicas de diferentes grupos de usuarios. En Diraya, un médico de familia ve una vista que incluye información clínica completa del paciente, antecedentes, alergias, tratamientos y pruebas diagnósticas. Un profesional de farmacia hospitalaria accede a una vista restringida que muestra únicamente prescripciones validadas, stocks de medicamentos y posibles interacciones, sin acceso a información clínica sensible que no sea necesaria para su función.
Las vistas proporcionan seguridad mediante restricción de acceso, presentan datos de forma comprensible para cada perfil profesional, y simplifican consultas complejas encapsulando lógica en definiciones de vista. Una vista puede combinar información de múltiples tablas mediante joins, aplicar filtros específicos, calcular campos derivados, y ocultar columnas confidenciales.
4.3. Nivel Conceptual o Lógico
El nivel conceptual describe la estructura completa de la base de datos para toda la organización, independientemente de cómo se almacenen físicamente los datos. Define todas las entidades, sus atributos, relaciones entre entidades, restricciones de integridad, y reglas de negocio. En el modelo relacional, este nivel corresponde al esquema de la base de datos expresado en DDL (Data Definition Language).
En Diraya, el esquema conceptual incluye tablas como PACIENTES (con campos NUHSA, nombre, fecha de nacimiento, SIP, domicilio), EPISODIOS_ASISTENCIALES (con claves foráneas a pacientes, profesionales y centros sanitarios), PRESCRIPCIONES (relacionadas con episodios y catálogos de medicamentos), y ALERGIAS (con relaciones hacia pacientes y principios activos). Este esquema define claves primarias, foráneas, restricciones de unicidad, checks, y triggers que implementan lógica de negocio.
Respuesta correcta: C (No existe «nivel contextual» en ANSI/SPARC)
4.4. Nivel Interno o Físico
El nivel interno especifica cómo se almacenan físicamente los datos en dispositivos de almacenamiento. Define la organización de archivos (heap, secuencial, hash, B-tree), métodos de acceso, estructuras de índices, algoritmos de compresión, técnicas de cifrado, y estrategias de almacenamiento en caché. En Oracle, este nivel se gestiona mediante tablespaces que agrupan datafiles, segmentos para tablas e índices, extents como unidades de asignación de espacio, y bloques como unidad mínima de I/O.
Las decisiones del nivel interno impactan directamente en el rendimiento. En bases de datos críticas del SAS, las tablas de pacientes se organizan con hash clustering por NUHSA para acceso directo, los índices B-tree aceleran búsquedas por apellidos y fechas, las tablas históricas emplean compresión avanzada OLTP para reducir espacio sin penalizar rendimiento, y el cifrado TDE (Transparent Data Encryption) protege datafiles en disco cumpliendo requisitos ENS y RGPD.
4.5. El Diccionario de Datos
El diccionario de datos (data dictionary o metadatos) almacena información sobre la estructura de la base de datos: definiciones de tablas, columnas, tipos de datos, restricciones, índices, vistas, usuarios, permisos, y estadísticas. El SGBD consulta el diccionario constantemente para validar consultas, verificar permisos, y optimizar planes de ejecución.
Respuesta correcta: C (El Diccionario de Datos almacena metadatos incluyendo definiciones de tipos)
En Oracle, el diccionario de datos se implementa mediante vistas sobre tablas internas (DBA_TABLES, DBA_INDEXES, DBA_USERS, DBA_TAB_COLUMNS). Estas vistas permiten a los administradores consultar la estructura completa del sistema, generar scripts de replicación de esquemas, analizar uso de espacio, y auditar permisos.
4.6. Independencia de Datos
La arquitectura de tres niveles proporciona dos tipos de independencia fundamentales. La independencia lógica permite modificar el esquema conceptual (añadir tablas, columnas o relaciones) sin afectar vistas existentes ni aplicaciones, siempre que los cambios sean compatibles. Si el SAS decide añadir un campo de geolocalización a la tabla de centros sanitarios en Diraya, las aplicaciones que consultan nombre y dirección seguirán funcionando sin modificación.
La independencia física permite cambiar la organización física del almacenamiento sin modificar el esquema conceptual ni las aplicaciones. Si el equipo de sistemas decide migrar tablespaces Oracle de discos HDD a SSD NVMe, o reorganizar índices para mejorar rendimiento, las aplicaciones sanitarias no requieren cambio alguno porque el SGBD mantiene la abstracción lógica de los datos independiente de su representación física.
5. Monitor de Transacciones y Propiedades ACID
5.1. Concepto de Transacción
Una transacción es una unidad lógica de trabajo compuesta por una secuencia de operaciones sobre la base de datos que deben ejecutarse de forma atómica: o todas se completan exitosamente, o ninguna tiene efecto. Las transacciones son fundamentales para mantener la consistencia en entornos donde múltiples usuarios modifican concurrentemente la misma base de datos.
Respuesta correcta: A
🏥 Ejemplo de Transacción en Diraya
Cuando un médico prescribe un tratamiento en Diraya, la operación genera una transacción compleja que incluye:
1. Verificar contraindicaciones: Consulta alergias del paciente en la tabla ALERGIAS y tratamientos activos en PRESCRIPCIONES para detectar interacciones farmacológicas.
2. Registrar la prescripción: Inserta un nuevo registro en PRESCRIPCIONES con el medicamento, dosis, pauta, duración y fecha de prescripción.
3. Actualizar el episodio asistencial: Modifica el registro en EPISODIOS_ASISTENCIALES añadiendo la prescripción al listado de actuaciones del encuentro clínico actual.
4. Generar receta electrónica: Crea un registro en el sistema de receta XXI con código QR firmado digitalmente para dispensación en farmacia.
5. Notificar al paciente: Inserta un mensaje en el buzón de ClicSalud+ informando de la nueva prescripción disponible.
Si cualquiera de estas operaciones falla (por ejemplo, la generación de receta electrónica por problemas de conectividad con el servidor de receta), toda la transacción debe revertirse para evitar inconsistencias como prescripciones registradas en Diraya pero sin receta electrónica asociada.
5.2. Propiedades ACID
Las transacciones deben cumplir cuatro propiedades fundamentales conocidas por el acrónimo ACID: Atomicidad, Consistencia, Aislamiento (Isolation) y Durabilidad. Estas propiedades garantizan la fiabilidad y corrección de las operaciones sobre la base de datos incluso en presencia de fallos, accesos concurrentes y errores del sistema.
Respuesta correcta: A (Propiedades ACID)
5.2.1. Atomicidad
La atomicidad garantiza que todas las operaciones de una transacción se ejecutan completamente o ninguna tiene efecto. No existen estados intermedios visibles externamente. Si una transacción que actualiza cinco tablas falla en la cuarta operación, el SGBD deshace automáticamente las tres primeras operaciones ya realizadas, dejando la base de datos en el estado anterior al inicio de la transacción.
Oracle implementa atomicidad mediante undo segments que almacenan las versiones anteriores de los datos modificados. Si una transacción ejecuta ROLLBACK o el sistema detecta un error, Oracle utiliza la información de undo para revertir todos los cambios. Los undo segments también proporcionan consistencia de lectura, permitiendo que consultas vean instantáneas coherentes de datos incluso mientras otras transacciones los modifican.
5.2.2. Consistencia
La consistencia asegura que una transacción lleva la base de datos de un estado válido a otro estado válido, manteniendo todas las restricciones de integridad, reglas de negocio y relaciones entre datos. Si una transacción viola una restricción de clave primaria, foránea, check, o trigger, el SGBD la rechaza automáticamente antes de confirmarla.
En Diraya, existe una restricción que impide prescribir medicamentos a pacientes con alergias conocidas a sus principios activos. Si un médico intenta prescribir penicilina a un paciente con alergia registrada a beta-lactámicos, un trigger verifica la incompatibilidad y cancela la transacción antes de que la prescripción se registre, manteniendo la consistencia del sistema.
5.2.3. Aislamiento (Isolation)
El aislamiento garantiza que las operaciones de transacciones concurrentes no interfieren entre sí. Cada transacción debe ejecutarse como si fuera la única operando sobre la base de datos. El SGBD implementa diferentes niveles de aislamiento que balancean consistencia y rendimiento:
- READ UNCOMMITTED: Permite lecturas sucias (dirty reads), donde una transacción puede leer datos modificados por otra transacción no confirmada. Es el nivel menos restrictivo y de mayor rendimiento, pero arriesgado en entornos críticos.
- READ COMMITTED: Evita lecturas sucias, garantizando que solo se leen datos confirmados. Es el nivel por defecto en Oracle y PostgreSQL.
- REPEATABLE READ: Garantiza que si una transacción lee un dato dos veces, obtiene el mismo valor, evitando lecturas no repetibles (non-repeatable reads).
- SERIALIZABLE: El nivel más restrictivo, garantiza que transacciones concurrentes producen el mismo resultado que si se ejecutaran secuencialmente. Evita anomalías phantom reads pero puede reducir concurrencia.
5.2.4. Durabilidad
La durabilidad asegura que una vez confirmada una transacción mediante COMMIT, sus efectos son permanentes incluso ante fallos del sistema. Oracle implementa durabilidad mediante redo logs que registran todos los cambios confirmados. Si el servidor sufre un fallo eléctrico segundos después de que un médico confirme una prescripción, al reiniciar la base de datos Oracle utiliza los redo logs para recuperar la transacción confirmada, garantizando que la prescripción no se pierde.
Los redo logs se escriben en discos redundantes (generalmente en configuración RAID 1) antes de confirmar la transacción al usuario. Esta política de write-ahead logging garantiza que incluso ante fallo de disco, existe una copia de seguridad de las transacciones confirmadas que permite recuperación completa.
5.3. Monitor de Transacciones
El monitor de transacciones (Transaction Processing Monitor) es un componente del SGBD que coordina y supervisa la ejecución de transacciones, gestionando su inicio, progreso y finalización. En arquitecturas distribuidas, el monitor coordina transacciones que involucran múltiples bases de datos mediante protocolos de commit distribuido como 2PC (Two-Phase Commit).
Oracle Transaction Monitor mantiene información de estado de cada transacción activa en estructuras de memoria (SGA – System Global Area) y coordina bloqueos, escrituras de logs, y confirmación de transacciones. En configuraciones RAC, el monitor sincroniza transacciones entre múltiples instancias Oracle que acceden a la misma base de datos, resolviendo conflictos de bloqueo y garantizando consistencia mediante mecanismos de cache fusion.
6. Control de Concurrencia y Bloqueos
6.1. Problemas de Concurrencia
Cuando múltiples transacciones acceden simultáneamente a los mismos datos, pueden surgir anomalías que comprometen la consistencia. La pérdida de actualizaciones ocurre cuando dos transacciones leen el mismo dato, lo modifican y lo escriben, resultando en que la segunda sobrescribe la primera sin considerar sus cambios. La lectura sucia permite que una transacción lea datos modificados por otra no confirmada que posteriormente hace ROLLBACK, basando decisiones en información inconsistente.
La lectura no repetible sucede cuando una transacción lee el mismo dato dos veces obteniendo valores diferentes porque otra transacción lo modificó entre lecturas. Los phantom reads aparecen cuando una transacción ejecuta la misma consulta dos veces y obtiene diferentes conjuntos de resultados porque otra transacción insertó o eliminó filas que cumplen la condición de búsqueda.
⚠️ Ejemplo de Pérdida de Actualización en Entorno Hospitalario
Situación: Dos enfermeras (E1 y E2) consultan simultáneamente el stock de un medicamento crítico en farmacia hospitalaria, que muestra 5 unidades disponibles.
T=0: E1 lee stock = 5 unidades
T=1: E2 lee stock = 5 unidades
T=2: E1 dispensa 2 unidades, actualiza stock = 5 – 2 = 3
T=3: E2 dispensa 3 unidades, actualiza stock = 5 – 3 = 2
Resultado: El stock final es 2 unidades cuando debería ser 0 (se dispensaron 5 unidades en total). El sistema de control de concurrencia debe prevenir esta pérdida de actualización mediante bloqueos o control optimista de concurrencia.
6.2. Mecanismos de Control de Concurrencia
Los SGBD emplean dos estrategias principales para controlar concurrencia: pesimista (basada en bloqueos) y optimista (basada en validación). El control pesimista asume que los conflictos son frecuentes y bloquea recursos preventivamente. El control optimista asume que los conflictos son raros y permite que transacciones procedan libremente, validando al final si hubo conflictos y deshaciendo la transacción en caso afirmativo.
6.3. Bloqueos (Locks)
Los bloqueos son mecanismos que restringen el acceso concurrente a recursos (filas, tablas, páginas) para coordinar transacciones. Existen dos tipos fundamentales: bloqueos compartidos (shared locks o S-locks) permiten que múltiples transacciones lean simultáneamente un dato pero no lo modifiquen, y bloqueos exclusivos (exclusive locks o X-locks) otorgan acceso exclusivo para modificación, impidiendo que otras transacciones lean o escriban el dato bloqueado.
Oracle utiliza una estrategia de bloqueo menos restrictiva que otros SGBD: implementa consistencia de lectura mediante versionado multiversión (MVCC – Multiversion Concurrency Control), permitiendo que lecturas no bloqueen escrituras ni escrituras bloqueen lecturas. Cuando una transacción modifica una fila, Oracle almacena la versión anterior en undo segments y otorga un bloqueo exclusivo sobre la fila. Otras transacciones que consultan esa fila obtienen la versión anterior desde undo, viendo una instantánea consistente sin esperar a que finalice la transacción modificadora.
6.4. Granularidad de Bloqueos
Los bloqueos pueden aplicarse a diferentes niveles de granularidad. Los bloqueos de fila ofrecen máxima concurrencia bloqueando solo registros específicos, pero generan overhead de gestión cuando se bloquean muchas filas. Los bloqueos de tabla son más eficientes administrativamente pero reducen concurrencia significativamente. Los bloqueos de página son un compromiso intermedio, bloqueando grupos de filas almacenadas en la misma página física.
Oracle soporta bloqueos a nivel de fila por defecto, evitando escaladas automáticas a bloqueos de tabla que reducirían concurrencia. Si una transacción modifica 100.000 filas, Oracle mantiene bloqueos individuales sobre cada fila sin consolidarlos en un bloqueo de tabla, aunque esto consume más recursos de memoria en el pool de locks del SGA.
6.5. Deadlocks (Interbloqueos)
Un deadlock ocurre cuando dos o más transacciones esperan mutuamente recursos bloqueados por las otras, creando un ciclo de espera infinito. Por ejemplo, la transacción T1 bloquea la fila A y solicita la fila B, mientras T2 bloquea la fila B y solicita la fila A. Ninguna puede progresar porque cada una espera un recurso retenido por la otra.
Los SGBD detectan deadlocks mediante grafos de espera que representan dependencias entre transacciones. Cuando se detecta un ciclo, el sistema elige una víctima (usualmente la transacción con menor costo de reversión) y la aborta mediante ROLLBACK, liberando sus bloqueos y permitiendo que otras transacciones progresen. Oracle detecta deadlocks automáticamente cada 3 segundos y registra información detallada en el alert.log para análisis posterior.
Respuesta correcta: B (El alert.log registra eventos importantes: errores, warnings, deadlocks, inicio/parada de instancia)
6.6. Estrategias de Prevención de Deadlocks
Para minimizar deadlocks, se pueden adoptar varias estrategias. Ordenamiento de acceso a recursos: Si todas las transacciones acceden a tablas/filas en el mismo orden, se eliminan ciclos de espera. Timeouts de bloqueo: Configurar límites de tiempo para espera de bloqueos, abortando transacciones que excedan el umbral. Bloqueos optimistas: En lugar de bloquear preventivamente, verificar al final de la transacción si hubo conflictos. Reducción de duración de transacciones: Transacciones más cortas retienen bloqueos menos tiempo, reduciendo probabilidad de conflictos.
7. Recuperación de Errores e Integridad
7.1. Tipos de Fallos
Los sistemas de bases de datos deben ser resilientes ante diversos tipos de fallos. Los fallos de transacción ocurren cuando una transacción no puede completarse debido a errores lógicos (violación de restricciones, deadlock, timeout) o solicitudes explícitas de ROLLBACK. Los fallos del sistema resultan de caídas del software del SGBD, del sistema operativo, o pérdidas de energía que provocan pérdida de contenido de memoria volátil pero no afectan discos.
Los fallos de medios son los más graves, involucrando daños físicos en discos que causan pérdida permanente de datos. Estos fallos requieren restauración desde backups y aplicación de logs de transacciones para recuperar el estado más reciente posible de la base de datos.
7.2. Técnicas de Recuperación
Los SGBD implementan recuperación mediante write-ahead logging (WAL): antes de modificar datos en disco, se escriben registros de log que describen los cambios. Los logs de transacciones incluyen información de UNDO (para revertir cambios de transacciones no confirmadas) y REDO (para rehacer cambios de transacciones confirmadas). Tras un fallo del sistema, el proceso de recuperación automática lee los logs y ejecuta operaciones UNDO y REDO necesarias para restaurar consistencia.
Oracle implementa recuperación mediante redo logs (circulares, sobrescriben cuando se llenan) que registran todos los cambios y archived redo logs (copia permanente de redo logs llenos) que permiten recuperación point-in-time. El parámetro ARCHIVE LOG MODE determina si Oracle guarda archived logs, habilitando recuperación completa ante fallos de medios.
Respuesta correcta: B (AWR – Automatic Workload Repository recopila estadísticas de rendimiento)
7.3. Estrategias de Backup y Restore
Las copias de seguridad son fundamentales para recuperación ante fallos de medios. Los backups completos copian toda la base de datos, siendo la base de cualquier estrategia de recuperación pero consumiendo tiempo y espacio. Los backups incrementales copian solo bloques modificados desde el último backup (incremental o completo), reduciendo tiempo y espacio pero requiriendo múltiples archivos para restauración.
Oracle RMAN (Recovery Manager) es la herramienta estándar para backup y recovery en Oracle. RMAN gestiona backups completos e incrementales, verifica integridad de backups, implementa compresión y cifrado, y automatiza restauración y recuperación. En el SAS, las bases de datos críticas como Diraya ejecutan backups RMAN diarios incrementales de nivel 1 y un backup completo semanal de nivel 0, con retención de 30 días de archived logs para recovery point objetivo de 1 hora.
Respuesta correcta: C (Los backups no son un tipo de fichero interno del SGBD, sino copias externas generadas por RMAN)
7.4. Alta Disponibilidad con Oracle Data Guard
Oracle Data Guard proporciona disaster recovery y alta disponibilidad manteniendo una o más bases de datos standby sincronizadas con la base de datos primaria mediante aplicación continua de redo logs. Existen dos modos: physical standby (réplica física exacta, aplicando redo a nivel de bloque) y logical standby (réplica lógica mediante SQL, permitiendo acceso de solo lectura simultáneo).
Respuesta correcta: C (Oracle ASM – Automatic Storage Management virtualiza y distribuye almacenamiento automáticamente)
7.5. Integridad de Datos
La integridad garantiza corrección y consistencia de datos mediante restricciones y reglas de negocio. La integridad de entidad requiere que cada tabla tenga clave primaria única y no nula, identificando inequívocamente cada fila. La integridad referencial mantiene coherencia entre tablas relacionadas mediante claves foráneas, evitando huérfanos (filas con referencias a registros inexistentes).
La integridad de dominio restringe valores permitidos en columnas mediante tipos de datos, restricciones CHECK, y valores por defecto. La integridad semántica o de negocio implementa reglas específicas de la organización mediante triggers, procedimientos almacenados, y restricciones complejas.
En Diraya, la integridad referencial garantiza que toda prescripción (tabla PRESCRIPCIONES) referencia un episodio asistencial existente (tabla EPISODIOS) mediante clave foránea, y todo episodio referencia un paciente válido (tabla PACIENTES) mediante NUHSA. Si se intenta eliminar un paciente con episodios asociados, la restricción de clave foránea lo impide a menos que se configure ON DELETE CASCADE, que eliminaría en cascada todos los datos relacionados (comportamiento peligroso en entornos sanitarios donde la preservación de historiales es obligación legal).
8. Bases de Datos NoSQL en Profundidad
8.1. Teorema CAP y Trade-offs
El teorema CAP (Consistency, Availability, Partition tolerance), propuesto por Eric Brewer, establece que un sistema distribuido solo puede garantizar simultáneamente dos de las siguientes tres propiedades: Consistencia (todos los nodos ven los mismos datos al mismo tiempo), Disponibilidad (toda petición recibe respuesta sobre éxito o fallo), y Tolerancia a particiones (el sistema continúa operando a pesar de particionamiento de red entre nodos).
Los SGBD relacionales tradicionales priorizan CP (Consistency + Partition tolerance), sacrificando disponibilidad ante particiones de red para mantener consistencia. Los sistemas NoSQL suelen priorizar AP (Availability + Partition tolerance), permitiendo inconsistencias temporales mediante consistencia eventual para mantener disponibilidad ante fallos de red.
8.2. Bases de Datos Orientadas a Objetos
Las bases de datos orientadas a objetos (BDOO) almacenan objetos directamente, soportando herencia, encapsulamiento, polimorfismo y relaciones complejas sin necesidad de mapping objeto-relacional. Aunque los SGBD relacionales dominan el mercado, BDOO tienen ventajas en aplicaciones con modelos de dominio complejos, como sistemas de información geográfica (GIS) o CAD.
Respuesta correcta: C (Las BDOO utilizan lenguajes de consulta orientados a objetos como OQL, no SQL)
8.3. OLAP y Data Warehousing
Los sistemas OLAP (Online Analytical Processing) optimizan consultas analíticas complejas sobre grandes volúmenes históricos de datos, contrastando con sistemas OLTP (Online Transaction Processing) optimizados para transacciones cortas y frecuentes. Los sistemas OLAP organizan datos en estructuras multidimensionales (cubos) que permiten análisis rápido mediante operaciones de drill-down, roll-up, slice y dice.
Existen tres arquitecturas OLAP principales. MOLAP (Multidimensional OLAP) almacena datos precalculados en estructuras multidimensionales propietarias, ofreciendo máximo rendimiento pero consumiendo más espacio. ROLAP (Relational OLAP) almacena datos en tablas relacionales, generando consultas SQL dinámicamente, consumiendo menos espacio pero con rendimiento inferior. HOLAP (Hybrid OLAP) combina ambos enfoques, almacenando agregaciones en MOLAP y detalle en ROLAP.
Respuesta correcta: B (ROLAP almacena en bases de datos relacionales)
8.4. Herramientas ETL
Los procesos ETL (Extract, Transform, Load) extraen datos de múltiples fuentes heterogéneas, los transforman aplicando reglas de limpieza, validación, agregación y enriquecimiento, y los cargan en un data warehouse para análisis. En el SAS, Oracle Data Integrator (ODI) extrae datos de Diraya, BDU, sistemas de gestión económica y recursos humanos, transformándolos en un modelo dimensional unificado en InfoWeb.
Respuesta correcta: D (Todas son herramientas ETL válidas)
8.5. Big Data y Hadoop
Apache Hadoop es un framework de procesamiento distribuido para grandes volúmenes de datos (Big Data). El componente central es HDFS (Hadoop Distributed File System), que almacena archivos grandes fragmentados y replicados en múltiples nodos commodity hardware. MapReduce proporciona el modelo de programación para procesamiento paralelo distribuido.
Respuesta correcta: B (HDFS es el sistema de almacenamiento distribuido de Hadoop)
9. SGBD Comerciales y Open Source en el SAS
9.1. Oracle Database
Oracle Database es el SGBD relacional líder del mercado enterprise, utilizado extensivamente en el SAS para sistemas críticos. Oracle 19c, la versión Long Term Support actual, proporciona alta disponibilidad mediante RAC, disaster recovery con Data Guard, gestión automática de almacenamiento con ASM, particionamiento avanzado de tablas, compresión de datos, cifrado transparente (TDE), y herramientas de monitorización como AWR y ASH (Active Session History).
🏥 Oracle en Sistemas Corporativos del SAS
Diraya: Oracle Database 19c Enterprise Edition con RAC en 3 nodos, ASM para almacenamiento, Data Guard para DR, TDE para cifrado de datos de salud, particionamiento por rango de fechas en tablas históricas.
BDU: Oracle 19c Standard Edition en configuración standalone con backups RMAN diarios, replicación mediante Oracle GoldenGate a sistemas analíticos.
InfoWeb (Data Warehouse): Oracle Exadata Database Machine con compresión columnar Hybrid Columnar Compression, optimizado para cargas OLAP.
Respuesta correcta: B (El esquema agrupa todos los objetos de un usuario)
9.2. PostgreSQL
PostgreSQL es el SGBD relacional open source más avanzado, ofreciendo características enterprise como transacciones ACID completas, integridad referencial, triggers complejos, procedimientos almacenados en múltiples lenguajes (PL/pgSQL, Python, Perl), vistas materializadas, índices avanzados (B-tree, Hash, GiST, GIN, BRIN), soporte JSON nativo, full-text search, y replicación streaming.
Respuesta correcta: C (PostgreSQL es el único open source de las opciones)
9.3. MariaDB y MySQL
MariaDB es un fork de MySQL creado por los desarrolladores originales tras la adquisición de MySQL por Oracle. Ambos SGBD son ampliamente utilizados en aplicaciones web por su simplicidad, rendimiento y licencia open source. En el SAS, MySQL/MariaDB se emplean en aplicaciones departamentales, sistemas de gestión de contenidos (CMS) y portales web no críticos.
Respuesta correcta: A (MariaDB es un SGBD válido; las demás opciones son inventadas)
9.4. MongoDB
MongoDB es el SGBD NoSQL documental líder, almacenando datos en documentos BSON (Binary JSON) con esquema flexible. Proporciona escalabilidad horizontal mediante sharding automático, alta disponibilidad con replica sets, consultas ricas incluyendo agregaciones, índices secundarios, y búsqueda geoespacial. En el SAS, MongoDB se evalúa para casos de uso con datos semiestructurados como logs de aplicaciones, telemetría de dispositivos IoMT, y formularios clínicos con estructura variable por especialidad.
9.5. Microsoft SQL Server
SQL Server es el SGBD relacional de Microsoft, integrado profundamente con el ecosistema Windows y Azure. Ofrece alta disponibilidad mediante AlwaysOn Availability Groups, análisis in-database con servicios de integración (SSIS), análisis (SSAS) y reporting (SSRS), y soporte nativo de procedimientos almacenados .NET CLR. Aunque menos prevalente en el SAS que Oracle, SQL Server se utiliza en algunas aplicaciones desarrolladas sobre plataforma Microsoft.
10. Casos Prácticos del SAS
10.1. Optimización de Rendimiento en Diraya
🏥 Caso Práctico: Consultas Lentas en Historia Clínica
Situación: Los profesionales sanitarios del Hospital Virgen del Rocío reportan lentitud al acceder a historiales clínicos de pacientes con muchos episodios asistenciales acumulados. La consulta de pacientes con más de 100 episodios tarda más de 10 segundos, comprometiendo la actividad asistencial.
Análisis: El DBA consulta AWR (Automatic Workload Repository) y detecta que la consulta problemática realiza un full table scan en la tabla EPISODIOS_ASISTENCIALES (200 millones de filas) cada vez que se busca un paciente, porque el índice por NUHSA está fragmentado tras años de inserts/deletes sin mantenimiento.
Solución implementada:
- Rebuild del índice EPISODIOS_NUHSA_IDX para eliminar fragmentación
- Creación de índice compuesto (NUHSA, FECHA_EPISODIO) para acelerar ordenamiento temporal
- Particionamiento de tabla EPISODIOS_ASISTENCIALES por año, mejorando partition pruning
- Actualización de estadísticas mediante DBMS_STATS.GATHER_TABLE_STATS
- Configuración de result cache para cachear consultas frecuentes de pacientes
Resultado: Tiempo de consulta reducido de 10 segundos a menos de 500ms, mejorando significativamente la experiencia de usuario y productividad clínica.
10.2. Implementación de Disaster Recovery
🏥 Caso Práctico: Configuración de Data Guard para Diraya
Requisito: Garantizar continuidad del servicio de Diraya ante desastre que afecte al CPD principal en Sevilla, cumpliendo objetivos RPO (Recovery Point Objective) de 1 hora y RTO (Recovery Time Objective) de 4 horas conforme al análisis de impacto de negocio y requisitos ENS.
Arquitectura implementada:
- Base de datos primaria: Oracle RAC 19c en CPD Sevilla (3 nodos)
- Base de datos standby física: Oracle RAC 19c en CPD Málaga (2 nodos)
- Replicación en modo MAXIMUM PERFORMANCE con ASYNC transport
- Aplicación de redo mediante REAL-TIME APPLY para minimizar lag
- Monitorización con Oracle Enterprise Manager y alertas proactivas
- Procedimientos documentados de switchover (planificado) y failover (emergencia)
- Pruebas de DR trimestrales verificando cumplimiento de RTO/RPO
Configuración técnica:
-- Primaria: Habilitar FORCE LOGGING
ALTER DATABASE FORCE LOGGING;
-- Primaria: Configurar parámetros Data Guard
ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(diraya_prod,diraya_dr)';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=diraya_dr ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=diraya_dr';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE;
-- Standby: Habilitar REAL TIME APPLY
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;
10.3. Migración de Base de Datos Legacy
🏥 Caso Práctico: Migración de Sistema de Gestión de Farmacia
Situación: Una aplicación legacy de gestión de farmacia hospitalaria desarrollada hace 15 años utiliza una base de datos Oracle 11g en fin de soporte, con esquema mal diseñado (falta de normalización, sin integridad referencial, sin índices adecuados). Se requiere migración a Oracle 19c con rediseño del esquema.
Proceso de migración:
- Fase 1: Análisis del esquema actual – Extracción de DDL, análisis de dependencias, identificación de problemas de diseño
- Fase 2: Diseño del nuevo esquema – Normalización a 3FN, definición de claves primarias/foráneas, diseño de índices, estrategia de particionamiento
- Fase 3: Desarrollo de scripts de migración – Creación de procedimientos PL/SQL para transformación y carga de datos, validación de integridad
- Fase 4: Migración en entorno de pruebas – Ejecución de migración completa, verificación de integridad, testing funcional de aplicación
- Fase 5: Migración en producción – Ventana de mantenimiento de 6 horas, backup completo previo, ejecución de migración, verificación, puesta en servicio
Problemas encontrados y soluciones:
- Duplicados sin PK: Identificación mediante analíticas GROUP BY HAVING COUNT(*)>1, limpieza manual con validación funcional
- Referencias huérfanas: Detección de FKs inválidas, reconciliación con datos maestros o eliminación de registros inconsistentes
- Tipos de datos inadecuados: Conversión de campos VARCHAR almacenando fechas a tipo DATE con validación y manejo de formatos inconsistentes
- Performance de migración: Uso de APPEND hint, deshabilitación temporal de índices, paralelización con DBMS_PARALLEL_EXECUTE
Resultado: Migración exitosa con mejora del 70% en rendimiento de consultas, eliminación de inconsistencias, y cumplimiento de normativa de integridad de datos sanitarios.
10.4. Diseño de Base de Datos para Nuevo Sistema
🏥 Caso Práctico: Sistema de Gestión de Citas Online
Requisitos funcionales:
- Pacientes pueden solicitar citas con profesionales de atención primaria
- Sistema de agenda con disponibilidad de profesionales por centro y franja horaria
- Notificaciones automáticas por SMS/email de confirmación y recordatorio
- Integración con Diraya para validación de NUHSA y obtención de médico asignado
- Auditoría completa de todas las operaciones (quién, qué, cuándo)
Requisitos no funcionales:
- Soporte de 100.000 citas diarias simultáneas (picos de 10.000 peticiones/minuto)
- Disponibilidad 99.9% (tiempo de caída máximo 8.7 horas/año)
- Tiempo de respuesta <2 segundos para consulta de disponibilidad
- Cumplimiento ENS nivel MEDIO en disponibilidad e integridad, ALTO en confidencialidad
Diseño de esquema relacional:
-- Tabla de Centros Sanitarios
CREATE TABLE centros (
id_centro NUMBER PRIMARY KEY,
nombre VARCHAR2(200) NOT NULL,
codigo_centro VARCHAR2(10) UNIQUE NOT NULL,
provincia VARCHAR2(50),
tipo_centro VARCHAR2(20) CHECK (tipo_centro IN ('CS', 'HOSPITAL', 'DCCU'))
);
-- Tabla de Profesionales
CREATE TABLE profesionales (
id_profesional NUMBER PRIMARY KEY,
cnp VARCHAR2(15) UNIQUE NOT NULL,
nombre_completo VARCHAR2(200) NOT NULL,
especialidad VARCHAR2(100),
id_centro NUMBER REFERENCES centros(id_centro)
);
-- Tabla de Agendas
CREATE TABLE agendas (
id_agenda NUMBER PRIMARY KEY,
id_profesional NUMBER REFERENCES profesionales(id_profesional),
fecha DATE NOT NULL,
hora_inicio TIMESTAMP NOT NULL,
hora_fin TIMESTAMP NOT NULL,
duracion_cita NUMBER DEFAULT 10, -- minutos
estado VARCHAR2(20) CHECK (estado IN ('ACTIVA', 'BLOQUEADA', 'CANCELADA')),
CONSTRAINT uk_agenda UNIQUE (id_profesional, fecha, hora_inicio)
);
-- Tabla de Citas
CREATE TABLE citas (
id_cita NUMBER PRIMARY KEY,
nuhsa VARCHAR2(20) NOT NULL,
id_agenda NUMBER REFERENCES agendas(id_agenda),
fecha_solicitud TIMESTAMP DEFAULT SYSTIMESTAMP,
motivo VARCHAR2(500),
estado VARCHAR2(20) CHECK (estado IN ('SOLICITADA', 'CONFIRMADA', 'ANULADA', 'ATENDIDA', 'NO_ACUDE')),
fecha_confirmacion TIMESTAMP,
fecha_anulacion TIMESTAMP,
usuario_anulacion VARCHAR2(50)
);
-- Tabla de Auditoría
CREATE TABLE auditoria_citas (
id_auditoria NUMBER PRIMARY KEY,
id_cita NUMBER REFERENCES citas(id_cita),
accion VARCHAR2(50),
usuario VARCHAR2(100),
fecha TIMESTAMP DEFAULT SYSTIMESTAMP,
ip_origen VARCHAR2(45),
datos_anteriores CLOB,
datos_nuevos CLOB
);
-- Índices para optimización
CREATE INDEX idx_citas_nuhsa ON citas(nuhsa);
CREATE INDEX idx_citas_agenda ON citas(id_agenda);
CREATE INDEX idx_citas_estado ON citas(estado);
CREATE INDEX idx_agendas_prof_fecha ON agendas(id_profesional, fecha);
CREATE INDEX idx_auditoria_fecha ON auditoria_citas(fecha);
Consideraciones de diseño:
- Normalización: Esquema en 3FN evitando redundancia y garantizando integridad
- Integridad referencial: FKs aseguran coherencia entre citas, agendas y profesionales
- Auditoría: Tabla específica con trigger para registrar todas las modificaciones
- Índices estratégicos: B-tree en columnas de búsqueda frecuente (NUHSA, fecha, estado)
- Particionamiento: Tabla CITAS particionada por rango de fechas (mensual) para mejorar mantenimiento
- Compresión: Particiones históricas con OLTP compression reduciendo espacio sin impacto en performance
11. Cuestionario de 30 Preguntas (Exámenes Reales SAS)
⚠️ IMPORTANTE: Todas estas preguntas están extraídas de exámenes reales del SAS de los años 2019, 2023 y 2025 (OEP Libre, Promoción Interna, Técnico Titulado Medio, Agencia Sanitaria). Son el mejor material de estudio porque reflejan exactamente el nivel y el enfoque que encontrarás en tu examen. Estudia cada pregunta a fondo, comprendiendo no solo la respuesta correcta sino también por qué las otras opciones son incorrectas.
Explicación:
Respuesta correcta: B
La normalización es el proceso de organizar los datos de una base de datos relacional para reducir redundancia y mejorar integridad. Consiste en aplicar formas normales (1FN, 2FN, 3FN, BCNF, 4FN, 5FN) que descomponen tablas eliminando dependencias funcionales problemáticas. En Diraya, las tablas están normalizadas para evitar almacenar repetidamente datos demográficos del paciente en cada episodio, manteniendo esa información en una tabla PACIENTES referenciada mediante NUHSA.
Explicación:
Respuesta correcta: D
Apache HBase es un SGBD NoSQL columnar distribuido, inspirado en Google Bigtable, que funciona sobre Hadoop HDFS. No implementa el modelo relacional ni soporta SQL estándar, sino que proporciona acceso aleatorio de lectura/escritura en tiempo real sobre grandes datasets estructurados de forma columnar. Oracle, SQL Server y MySQL son SGBD relacionales tradicionales que implementan SQL y el modelo relacional de Codd.
Explicación:
Respuesta correcta: A
MariaDB es un SGBD relacional open source, fork de MySQL creado por los desarrolladores originales tras la adquisición de MySQL por Oracle. Es compatible con MySQL pero incluye mejoras de rendimiento, nuevos storage engines y características enterprise. Las otras opciones son nombres inventados que no corresponden a SGBD reales.
Explicación:
Respuesta correcta: C
PostgreSQL es el SGBD relacional open source más avanzado, con licencia PostgreSQL (similar a BSD/MIT). SQL Server, Oracle Database e IBM DB2 son productos comerciales propietarios con licencias de pago, aunque SQL Server ofrece una edición Express limitada gratuita y Oracle tiene Oracle XE (Express Edition) también limitada.
Explicación:
Respuesta correcta: A
Una transacción es una unidad lógica de trabajo que agrupa múltiples operaciones que deben ejecutarse atómicamente (todas o ninguna) para mantener la consistencia de la base de datos. Las transacciones deben cumplir propiedades ACID: Atomicidad (todo o nada), Consistencia (de estado válido a estado válido), Aislamiento (transacciones concurrentes no interfieren), Durabilidad (efectos permanentes tras COMMIT). Un solo comando SQL puede ser una transacción, pero conceptualmente una transacción puede incluir múltiples comandos coordinados.
Explicación:
Respuesta correcta: B
El modelo ANSI/SPARC define una arquitectura estándar de tres niveles (externo, conceptual, interno) para SGBD, proporcionando independencia de datos y abstracción entre las vistas de usuario, el esquema lógico y la implementación física. Este modelo no regula interfaces gráficas, tipos de datos específicos ni técnicas de optimización, sino la estructura conceptual de cómo debe organizarse un SGBD para separar aspectos de presentación, lógica y almacenamiento.
Explicación:
Respuesta correcta: C
El Diccionario de Datos (data dictionary o metadatos) almacena información sobre la estructura de la base de datos, incluyendo definiciones de tipos de datos, tablas, columnas, restricciones, índices, vistas, usuarios y permisos. Cuando se define una columna como INTEGER, esta información de tipo se registra en el diccionario para que el SGBD valide operaciones futuras. El diccionario es consultado constantemente por el optimizador de consultas, el sistema de seguridad y las herramientas de administración.
Explicación:
Respuesta correcta: C
MongoDB es un SGBD NoSQL documental que almacena datos en formato BSON (Binary JSON) con esquema flexible, sin implementar el modelo relacional ni SQL estándar. MariaDB, SQLite y SQL Server son SGBD relacionales que implementan tablas, relaciones, SQL y propiedades ACID completas. SQLite es especialmente ligero, usado en dispositivos móviles y aplicaciones embebidas, pero sigue siendo relacional.
Explicación:
Respuesta correcta: C
No existe «nivel contextual» en la arquitectura ANSI/SPARC. Los tres niveles definidos son: Nivel Interno (físico), que especifica cómo se almacenan físicamente los datos; Nivel Conceptual (lógico), que define el esquema completo de la base de datos con todas las entidades y relaciones; y Nivel Externo (vistas), que define vistas personalizadas para diferentes grupos de usuarios. El formato de campos se define en el nivel conceptual mediante tipos de datos y se almacena en el diccionario de datos.
Explicación:
Respuesta correcta: A (Propiedades ACID)
Las transacciones deben cumplir las propiedades ACID: Atomicity (todo o nada), Consistency (de estado válido a estado válido), Isolation (transacciones concurrentes no interfieren), Durability (efectos permanentes tras confirmación). Estas propiedades garantizan fiabilidad y corrección de operaciones sobre la base de datos. Concurrencia, rendimiento y escalabilidad son características deseables del SGBD pero no propiedades intrínsecas de transacciones.
Explicación:
Respuesta correcta: C
DDL (Data Definition Language) incluye sentencias para definir y modificar la estructura de la base de datos: CREATE, ALTER, DROP, TRUNCATE, RENAME. CREATE sirve para crear objetos de base de datos (tablas, vistas, índices, procedimientos). SELECT e INSERT son DML (Data Manipulation Language). REVOKE es DCL (Data Control Language) para gestión de permisos.
Explicación:
Respuesta correcta: C
En sistemas federados débilmente acoplados, no existe un administrador global con control total, sino que los usuarios crean federaciones ad-hoc mediante vistas que integran esquemas heterogéneos. Los sistemas componente mantienen autonomía completa. En contraste, sistemas fuertemente acoplados tienen un administrador global que controla creación y acceso, y soportan esquemas federados predefinidos.
Explicación:
Respuesta correcta: C
Las Bases de Datos Orientadas a Objetos (BDOO) no utilizan SQL estándar como lenguaje de consulta principal, sino lenguajes específicos como OQL (Object Query Language) que soportan conceptos orientados a objetos directamente. Las BDOO sí implementan encapsulamiento, herencia, polimorfismo y son adecuadas para modelar dominios complejos como Sistemas de Información Geográfica donde las relaciones espaciales y jerárquicas son naturales en un modelo orientado a objetos.
Explicación:
Respuesta correcta: B
ROLAP (Relational OLAP) almacena datos en tablas relacionales estándar y genera consultas SQL dinámicamente para operaciones analíticas. MOLAP (Multidimensional OLAP) usa estructuras multidimensionales propietarias. HOLAP (Hybrid OLAP) combina ambos enfoques. NOLAP no es un término estándar en tecnologías OLAP.
Explicación:
Respuesta correcta: D
ODI (Oracle Data Integrator), Pentaho Data Integration y Azure Data Factory son todas herramientas ETL válidas para extraer datos de fuentes heterogéneas, transformarlos aplicando reglas de negocio y cargarlos en data warehouses. ODI es usado en InfoWeb del SAS para integración de datos de sistemas corporativos.
Explicación:
Respuesta correcta: B
La cláusula HAVING filtra grupos resultantes de GROUP BY, aplicando condiciones sobre funciones de agregación (COUNT, SUM, AVG, MAX, MIN). WHERE filtra filas individuales antes de agrupar. ORDER BY ordena resultados. Ejemplo: SELECT especialidad, COUNT(*) FROM profesionales GROUP BY especialidad HAVING COUNT(*) > 10 retorna especialidades con más de 10 profesionales.
Explicación:
Respuesta correcta: B
Database Links en Oracle permiten ejecutar consultas distribuidas entre instancias Oracle remotas. Ejemplo: CREATE DATABASE LINK diraya_central CONNECT TO usuario IDENTIFIED BY password USING ‘TNS_SERVICE’; luego SELECT * FROM pacientes@diraya_central WHERE provincia=’SEVILLA’ consulta pacientes en la base remota. Vínculos entre tablas locales se implementan con claves foráneas, no database links.
Explicación:
Respuesta correcta: B
El alert.log de Oracle registra eventos críticos: errores ORA-, warnings, inicio/parada de instancia, creación/modificación de tablespaces, switches de redo log, deadlocks detectados, fallos de archivado, checkpoints. No registra sentencias SQL individuales (para eso existen traces y auditoría), ni conexiones de usuarios (listener.log), ni informes periódicos de rendimiento (AWR reports).
Explicación:
Respuesta correcta: B
AWR (Automatic Workload Repository) recopila, procesa y mantiene estadísticas de rendimiento en snapshots periódicos (por defecto cada hora, retención 8 días). AWR reports analizan consumo de CPU, I/O, memoria, top SQL por tiempo de ejecución, eventos de espera, y recomendaciones de tuning. RAC es alta disponibilidad. RMAN es backup/recovery. Data Guard es disaster recovery.
Explicación:
Respuesta correcta: C
Oracle ASM (Automatic Storage Management) virtualiza discos en disk groups, distribuyendo automáticamente datafiles en stripes para balanceo de carga, implementando redundancia configurable (normal, high, external), y permitiendo rebalanceo online al agregar/eliminar discos. ASM simplifica administración eliminando necesidad de volúmenes LVM o filesystems tradicionales. Data Pump es exportación/importación. RAC es clustering. Data Guard es replicación para DR.
Explicación:
Respuesta correcta: A
Una tabla está en 3FN si está en 2FN y no tiene dependencias transitivas (atributo no clave depende de otro atributo no clave). Ejemplo de violación: PACIENTES(NUHSA, PROVINCIA, CAPITAL_PROVINCIA) donde CAPITAL_PROVINCIA depende transitivamente de NUHSA a través de PROVINCIA. Solución: separar en PACIENTES(NUHSA, PROVINCIA) y PROVINCIAS(PROVINCIA, CAPITAL). La opción B describe 1FN. La C describe 2FN. La D corresponde a 4FN.
Explicación:
Respuesta correcta: B
HDFS es el sistema de almacenamiento distribuido de Hadoop. Fragmenta archivos grandes en bloques (típicamente 128MB), replica bloques en múltiples DataNodes para tolerancia a fallos, y los coordina mediante NameNode. El procesamiento lo gestiona MapReduce o Spark. Consultas SQL las gestiona Hive o Impala sobre HDFS. Minería de datos la implementan frameworks específicos como Mahout o MLlib.
Explicación:
Respuesta correcta: B
En Oracle, un esquema (schema) es la colección de objetos (tablas, vistas, índices, procedimientos, triggers) que pertenecen a un usuario. El esquema tiene el mismo nombre que el usuario propietario. Tablespace es espacio de almacenamiento físico asignado al usuario pero no define su colección de objetos. Datafiles son archivos físicos del tablespace. Procesos son sesiones activas del usuario, no objetos persistentes.
Explicación:
Respuesta correcta: D
Los tres roles principales en ecosistemas de bases de datos son: Usuario Final (consume información desde aplicaciones, ejemplos en SAS: médicos consultando Diraya), Desarrollador de Aplicaciones (programa interfaces y lógica de negocio que interactúa con SGBD, ejemplos: equipo de desarrollo de Diraya), y DBA (administra SGBD, gestiona rendimiento, backups, seguridad, disponibilidad, ejemplos: equipo de administración de Oracle en el SAS).
Explicación:
Respuesta correcta: C
Los ficheros internos de Oracle son: Control Files (metadatos críticos de la BD), Data Files (almacenan datos de tablas e índices), y Redo Log Files (registran cambios para recovery). Los backups son copias externas generadas por herramientas como RMAN, no son un tipo de fichero interno del SGBD operativo. Oracle también gestiona temp files (tablespace temporal), archived redo logs (copies de redo logs llenos), y parameter files (init.ora/spfile).
Explicación:
Respuesta correcta: D
Los SGBD son software especializado que actúa como interfaz entre aplicaciones y datos (opción A), proporcionando servicios de almacenamiento, consulta, seguridad y transacciones. Se componen de lenguajes especializados: DDL para definir estructura, DML para manipular datos, DQL para consultas, DCL para control de acceso, y TCL para gestión de transacciones (opción C). La opción B es parcialmente correcta pero incompleta, omitiendo funcionalidades críticas de transacciones, seguridad e integridad.
Explicación:
Respuesta correcta: B
AGESCON (Aplicación de Gestión de Contraseñas) unifica y sincroniza credenciales de usuarios del SAS entre Active Directory (dominio DMSAS), Diraya, correo corporativo Exchange, portal E-profesional y plataforma de formación GESFORMA. Permite a profesionales cambiar su contraseña una sola vez propagándose automáticamente a todos los sistemas integrados. MACO gestiona estructuras organizativas. IDENTIK es gestión de identidades. WebSSO es single sign-on web pero no gestiona sincronización de contraseñas entre sistemas heterogéneos.
Explicación:
Respuesta correcta: B
DIRAYA es el Sistema de Información de la Historia de Salud Digital del SAS, cuyo objetivo principal es integrar toda la información clínica y asistencial de cada ciudadano andaluz en una historia clínica digital única, accesible desde cualquier centro del SSPA. Incluye módulos de atención primaria (Asistencial DIRAYA), hospitalaria (Médico DIRAYA), emergencias, quirófano, farmacia, laboratorio, radiología, etc. GIRO es sistema económico-administrativo pero no es módulo de Diraya. El control de accesos lo gestiona el sistema corporativo de identidad.
Explicación:
Respuesta correcta: A
El protocolo Two-Phase Commit garantiza atomicidad en transacciones distribuidas mediante dos fases: 1) Fase de preparación donde el coordinador pregunta a todos los participantes si pueden comprometerse (PREPARE), 2) Fase de confirmación donde, si todos responden afirmativamente, el coordinador ordena COMMIT; si alguno falla, ordena ROLLBACK global. Esto asegura que todos los nodos cometan o abortan la transacción juntos. La opción B es falsa, 2PC puede provocar bloqueos si un nodo falla durante la segunda fase. La C describe protocolos como Paxos/Raft. La D describe protocolos de orden total de mensajes.
Explicación:
Respuesta correcta: B
Elasticsearch es un motor de búsqueda y análisis distribuido basado en Apache Lucene, que utiliza índices invertidos para búsquedas full-text extremadamente rápidas. En el SAS se utiliza para: indexar logs de aplicaciones (ELK stack con Logstash y Kibana), auditoría de accesos a historias clínicas, búsquedas en documentación clínica, y análisis de eventos de seguridad. La opción A es incorrecta, usa índices invertidos no B-Trees y no está optimizado para SQL. La C es falsa, indexa cualquier fuente de datos vía API REST. La D es incorrecta, Elasticsearch no tiene garantías ACID completas y no reemplaza RDBMS para datos transaccionales críticos.
📊 Mapa Conceptual – Sistemas de Gestión de Bases de Datos
╔══════════════════════════════════════════════════════════════════════════════════════════╗
║ SISTEMAS DE GESTIÓN DE BASES DE DATOS (SGBD) ║
║ TEMA 33 - OPOSICIONES SAS 2025 ║
╚══════════════════════════════════════════════════════════════════════════════════════════╝
│
┌───────────────────────┼───────────────────────┐
│ │ │
┌─────────▼─────────┐ ┌────────▼────────┐ ┌─────────▼─────────┐
│ MODELOS Y TIPOS │ │ ARQUITECTURAS │ │ COMPONENTES │
│ DE SGBD │ │ DE SISTEMAS │ │ CRÍTICOS │
└─────────┬─────────┘ └────────┬────────┘ └─────────┬─────────┘
│ │ │
┌──────────┼──────────┐ │ ┌────────┼────────┐
│ │ │ │ │ │ │
┌────▼───┐ ┌───▼────┐ ┌──▼─────┐ │ ┌────▼───┐ ┌─▼──────┐ │
│RELACIO-│ │ NoSQL │ │DISTRI- │ │ │ MOTOR │ │MONITOR │ │
│ NALES │ │ │ │ BUIDAS │ │ │ALMACE- │ │TRANSA- │ │
│ │ │ │ │ │ │ │NAMIENTO│ │CCIONES │ │
└────┬───┘ └───┬────┘ └──┬─────┘ │ └────┬───┘ └─┬──────┘ │
│ │ │ │ │ │ │
│ ┌────┴────┐ │ │ │ │ │
│ │ │ │ │ │ │ │
┌────▼────▼──┐ ┌───▼────▼──┐ ┌──────▼──────┐ ┌─────▼───────▼────────┴──────┐
│ Oracle │ │ MongoDB │ │ Centralizada │ │ CONTROL DE CONCURRENCIA │
│ MySQL │ │ Cassandra │ │ Distribuida │ │ - Bloqueos (2PL) │
│ PostgreSQL│ │ Redis │ │ Federada │ │ - Timestamp Ordering │
│ SQL Server│ │ Neo4j │ │ Replicada │ │ - MVCC (Snapshots) │
└────────────┘ └───────────┘ └──────────────┘ └─────────────────────────────┘
│
┌───────────────────────┼────────────────────────┐
│ │ │
┌─────────▼─────────┐ ┌────────▼────────┐ ┌─────────▼──────────┐
│ MODELO ANSI-SPARC│ │ INTEGRIDAD Y │ │ RECUPERACIÓN │
│ (3 NIVELES) │ │ TRANSACCIONES │ │ Y RESPALDO │
└─────────┬─────────┘ └────────┬────────┘ └─────────┬──────────┘
│ │ │
┌──────────┼──────────┐ │ ┌─────────┼─────────┐
│ │ │ │ │ │ │
┌────▼───┐ ┌───▼────┐ ┌──▼────┐ │ ┌────▼───┐ ┌──▼──────┐ ┌▼────────┐
│ NIVEL │ │ NIVEL │ │NIVEL │ │ │ REDO │ │ UNDO │ │ BACKUP │
│EXTERNO │ │CONCEP- │ │FÍSICO │ │ │ LOG │ │ LOG │ │ & RPNT │
│(Vistas)│ │ TUAL │ │ │ │ │ │ │ │ │ │
└────────┘ └────────┘ └───────┘ │ └────────┘ └─────────┘ └─────────┘
│
┌────▼─────┐
│ ACID │
│ │
│ Atomicity│
│Consisten-│
│ cy │
│ Isolation│
│Durability│
└──────────┘
│
┌────────────────────┼─────────────────────┐
│ │ │
┌─────────▼─────────┐ ┌──────▼───────┐ ┌────────▼─────────┐
│ APLICACIONES SAS │ │ ESTÁNDARES Y │ │ SEGURIDAD Y │
│ │ │ NORMATIVA │ │ AUDITORÍA │
└─────────┬─────────┘ └──────┬───────┘ └────────┬─────────┘
│ │ │
┌──────────┼──────────┐ │ ┌────────┼────────┐
│ │ │ │ │ │ │
┌────▼───┐ ┌───▼────┐ ┌──▼─────┐ │ ┌────▼───┐ ┌─▼──────┐ │
│ DIRAYA │ │ BPS │ │ BDU │ │ │ SQL │ │ ENS │ │
│ HSD │ │Receta │ │Business│ │ │Injection│ │ RGPD │ │
│ │ │ XXI │ │ Intel. │ │ │Protec- │ │Trazabi-│ │
└────────┘ └────────┘ └────────┘ │ │ tion │ │ lidad │ │
│ └────────┘ └────────┘ │
┌────────▼────────┐ │
│ ISO/IEC 9075 │ │
│ (Estándar SQL) │ ┌───────▼────────┐
│ ANSI X3.135 │ │ AUDITORÍA │
│ Modelo ER │ │ - Accesos │
│ Normalización │ │ - Cambios │
└─────────────────┘ │ - Compliance │
└────────────────┘
╔══════════════════════════════════════════════════════════════════════════════════════════╗
║ CASOS DE USO EN EL SAS: ║
║ • Oracle Database: Sistema Diraya (Historia de Salud Digital), BPS, GIRO ║
║ • PostgreSQL: Aplicaciones departamentales, sistemas de gestión interna ║
║ • MongoDB: Logs de auditoría, documentos clínicos no estructurados ║
║ • Elasticsearch: Búsqueda full-text en historias clínicas, análisis de logs ║
║ • Redis: Caché de sesiones de usuarios, datos de alta frecuencia de acceso ║
╚══════════════════════════════════════════════════════════════════════════════════════════╝
📚 Referencias Normativas y Bibliográficas
Normativa y Legislación
- Reglamento General de Protección de Datos (RGPD): Reglamento (UE) 2016/679 del Parlamento Europeo y del Consejo, de 27 de abril de 2016 – Protección de datos de salud (Artículo 9)
- Ley Orgánica 3/2018: Protección de Datos Personales y garantía de los derechos digitales (LOPDGDD)
- Real Decreto 311/2022: Esquema Nacional de Seguridad (ENS) – Categorización y medidas de seguridad para SGBD
- Ley 41/2002: Ley básica reguladora de la autonomía del paciente y de derechos y obligaciones en materia de información y documentación clínica – Historia Clínica Digital
- Ley 2/1998, de 15 de junio: de Salud de Andalucía
- Decreto 534/2021: por el que se regula la organización administrativa y funcionamiento del Servicio Andaluz de Salud
- Política de Seguridad de la Información del SAS: Normativa interna de gestión de bases de datos y sistemas de información sanitarios
Estándares Internacionales
- ISO/IEC 9075 (SQL):2023: Information technology — Database languages — SQL (última revisión del estándar SQL)
- ISO/IEC 2382:2015: Information technology — Vocabulary (terminología de bases de datos)
- ISO/IEC 27001:2022: Sistemas de gestión de la seguridad de la información – Requisitos para SGBD seguros
- ISO 27799:2016: Health informatics — Information security management in health using ISO/IEC 27001 – Seguridad específica en sanidad
- ISO/IEC 20000-1:2018: Information technology — Service management – Gestión de servicios de bases de datos
- ANSI X3.135-1992: Database Language SQL (base histórica del estándar SQL)
- CAP Theorem (Brewer, 2000): Consistency, Availability, Partition tolerance – Fundamentos de bases de datos distribuidas
- ACID Properties (Gray, 1981): Atomicity, Consistency, Isolation, Durability – Propiedades transaccionales
Bibliografía Técnica
- Date, C.J. (2019). «Database Design and Relational Theory: Normal Forms and All That Jazz» (2nd Edition). Apress.
- Elmasri, R. & Navathe, S.B. (2020). «Fundamentals of Database Systems» (7th Edition). Pearson Education.
- Silberschatz, A., Korth, H.F. & Sudarshan, S. (2019). «Database System Concepts» (7th Edition). McGraw-Hill Education.
- Özsu, M.T. & Valduriez, P. (2020). «Principles of Distributed Database Systems» (4th Edition). Springer.
- Garcia-Molina, H., Ullman, J.D. & Widom, J. (2014). «Database Systems: The Complete Book» (2nd Edition). Pearson.
- Connolly, T. & Begg, C. (2014). «Database Systems: A Practical Approach to Design, Implementation and Management» (6th Edition). Pearson.
- Ramakrishnan, R. & Gehrke, J. (2015). «Database Management Systems» (3rd Edition). McGraw-Hill.
- Sadalage, P.J. & Fowler, M. (2012). «NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence». Addison-Wesley Professional.
- Kleppmann, M. (2017). «Designing Data-Intensive Applications». O’Reilly Media – Referencia moderna sobre arquitecturas de datos distribuidas.
Documentación Técnica de Fabricantes
- Oracle Database 19c: Documentation Library – Concepts, Administrator’s Guide, High Availability Guide
- PostgreSQL 16: Official Documentation – Administration, Performance, Replication
- MongoDB 7.0: Manual – Architecture, Replication, Sharding, Security
- Microsoft SQL Server 2022: Technical Documentation – Always On, Security Features, Performance Tuning
- MySQL 8.0: Reference Manual – InnoDB Storage Engine, Replication, Backup and Recovery
- Redis 7.2: Documentation – Data Structures, Persistence, Clustering
- Elasticsearch 8.x: Reference Guide – Indexing, Search, Security
Recursos y Guías del SAS
- Plan de Transformación Digital del SSPA 2022-2027: Estrategia de gestión de datos y bases de datos corporativas
- Arquitectura Corporativa de Sistemas de Información del SAS: Documentación técnica interna sobre SGBD utilizados
- Guía de Administración de Oracle en el SAS: Procedimientos operativos de bases de datos corporativas
- Manual de Diraya – Arquitectura Técnica: Diseño de bases de datos de la Historia de Salud Digital
- Política de Copias de Seguridad del SAS: RPO y RTO para sistemas críticos con bases de datos
- Procedimientos de Auditoría de Acceso a Datos Clínicos: Trazabilidad y compliance en SGBD sanitarios
Artículos y Publicaciones Académicas Relevantes
- Codd, E.F. (1970). «A Relational Model of Data for Large Shared Data Banks». Communications of the ACM, 13(6), 377-387. (Artículo fundacional del modelo relacional)
- Gray, J. (1981). «The Transaction Concept: Virtues and Limitations». Proceedings of the 7th International Conference on Very Large Data Bases, 144-154.
- Brewer, E.A. (2000). «Towards Robust Distributed Systems». PODC Keynote. (Teorema CAP)
- DeCandia, G. et al. (2007). «Dynamo: Amazon’s Highly Available Key-value Store». SOSP ’07. (Fundamentos de NoSQL distribuido)
- Stonebraker, M. & Cetintemel, U. (2005). «‘One size fits all’: An idea whose time has come and gone». ICDE 2005. (Diversidad de SGBD según caso de uso)
💡 Estrategia de Estudio y Consejos Prácticos
📖 Enfoque de Estudio para este Tema
El Tema 33 es fundamentalmente técnico y requiere un equilibrio entre teoría de bases de datos y conocimiento práctico de los sistemas utilizados en el SAS. Te recomiendo este plan de ataque:
Primera fase (Conceptos fundamentales – 40% del tiempo): Domina sólidamente los conceptos base: modelo relacional, ACID, normalización, arquitectura ANSI-SPARC, control de concurrencia. Estos son la columna vertebral del tema y aparecen constantemente en preguntas de examen. Crea tarjetas Anki con definiciones precisas y ejemplos del SAS (por ejemplo, «¿Qué es 3FN? → Tabla sin dependencias transitivas, ejemplo con tabla PACIENTES del sistema Diraya»).
Segunda fase (Arquitecturas y sistemas – 35% del tiempo): Estudia las diferentes arquitecturas (centralizadas, distribuidas, federadas) y tipos de SGBD (relacionales vs NoSQL). Dibuja diagramas comparativos. Relaciona cada tipo con casos de uso reales en el SAS: Oracle para Diraya (transaccional crítico), MongoDB para logs de auditoría (documentos no estructurados), Redis para caché de sesiones (alto rendimiento), Elasticsearch para búsquedas en historias clínicas.
Tercera fase (Componentes técnicos – 25% del tiempo): Profundiza en monitores de transacciones, mecanismos de bloqueo (2PL, timestamp ordering, MVCC), recuperación ante fallos (redo/undo logs), y replicación. Estos temas son favoritos en preguntas de dificultad media-alta. Practica explicando cómo se resuelve un conflicto de escritura concurrente en Diraya cuando dos médicos modifican simultáneamente la misma historia clínica.
🎯 Puntos Críticos para el Examen
Preguntas frecuentes basadas en exámenes anteriores:
- Diferencias entre 1FN, 2FN, 3FN y BCNF con ejemplos de tablas sanitarias (aparece casi en cada convocatoria)
- Características ACID y su aplicación en entornos críticos como Diraya
- Niveles de aislamiento de transacciones (Read Uncommitted, Read Committed, Repeatable Read, Serializable)
- Componentes internos de Oracle (Control Files, Data Files, Redo Logs, Tablespaces)
- Diferencias entre SGBD relacionales y NoSQL, con ventajas/desventajas según caso de uso
- Protocolo Two-Phase Commit en bases de datos distribuidas
- Arquitectura ANSI-SPARC de tres niveles (externo, conceptual, físico)
- Tipos de backups (completo, incremental, diferencial) y estrategias RPO/RTO en el SAS
Trampas comunes en preguntas tipo test: Confundir niveles de normalización (especialmente 2FN vs 3FN), mezclar conceptos de ACID con BASE (NoSQL), no distinguir entre bloqueos pesimistas y MVCC, olvidar que HDFS es almacenamiento y MapReduce es procesamiento en Hadoop.
🔧 Ejercicios Prácticos Recomendados
La mejor forma de consolidar este tema es practicar con casos concretos del SAS. Te propongo estos ejercicios:
Ejercicio 1 – Normalización: Toma una tabla desnormalizada de pacientes con datos redundantes (PACIENTES: NUHSA, NOMBRE, PROVINCIA, CAPITAL_PROVINCIA, MEDICO_REFERENCIA, ESPECIALIDAD_MEDICO) y normalízala paso a paso hasta 3FN, explicando qué anomalías de inserción/actualización/borrado eliminas en cada paso.
Ejercicio 2 – Arquitectura distribuida: Diseña la arquitectura de replicación para la base de datos de Diraya considerando: BD principal en CPD de Sevilla, réplica en standby en CPD de Granada para alta disponibilidad, réplicas de solo lectura en hospitales principales para balanceo de carga de consultas. Define RPO y RTO para cada escenario de fallo.
Ejercicio 3 – Control de concurrencia: Dos médicos intentan actualizar simultáneamente la misma historia clínica en Diraya. El Médico A lee presión arterial 120/80 y la actualiza a 130/85. El Médico B lee temperatura 36.5°C y la actualiza a 37.2°C. Explica cómo los mecanismos MVCC de Oracle permiten que ambas transacciones se ejecuten sin bloqueos destructivos, y qué pasaría con bloqueos tradicionales (2PL).
Ejercicio 4 – Selección de SGBD: El SAS necesita implementar un nuevo sistema para gestionar: 1) Auditoría de accesos a historias clínicas (millones de registros diarios, consultas analíticas), 2) Caché de sesiones de usuarios (acceso ultra-rápido, volatilidad aceptable), 3) Datos maestros de centros sanitarios (integridad crítica, transacciones ACID). Justifica qué tipo de SGBD (Oracle, PostgreSQL, MongoDB, Redis, Elasticsearch) usarías para cada caso y por qué.
🧠 Técnicas de Memorización
Para propiedades ACID: Crea la nemotecnia «A-C-I-D guarda tu salud». Atomicity (Todo o Nada), Consistency (Estado válido siempre), Isolation (Transacciones independientes), Durability (Cambios permanentes tras COMMIT).
Para niveles de normalización: Regla mnemotécnica: «La clave (1FN), toda la clave (2FN), y nada más que la clave (3FN)». 1FN elimina grupos repetitivos, 2FN elimina dependencias parciales de claves compuestas, 3FN elimina dependencias transitivas.
Para arquitectura ANSI-SPARC: Piensa en «ECI» (Externo-Conceptual-Interno) como «El Cliente Ignora» los detalles físicos. Nivel Externo son las vistas de usuarios, Conceptual es el esquema lógico global, Interno es el almacenamiento físico.
Para tipos NoSQL: «DCGC» – Documental (MongoDB para JSON), Clave-Valor (Redis para caché), Grafo (Neo4j para relaciones complejas), Columnar (Cassandra para analytics). Asocia cada uno con un caso de uso del SAS.
⏱️ Gestión del Tiempo en el Examen
Las preguntas de SGBD suelen ser de dificultad media-alta y pueden consumir tiempo si no dominas bien los conceptos. Mi recomendación:
Preguntas conceptuales directas (tipo «¿Qué es ACID?», «¿Qué ficheros internos tiene Oracle?»): 30-45 segundos por pregunta. Si conoces la respuesta, márcala de inmediato. Si dudas, márcala para revisión y continúa.
Preguntas de comparación o análisis (tipo «diferencia entre 2FN y 3FN», «ventajas de NoSQL vs relacional»): 60-90 segundos. Lee todas las opciones cuidadosamente, descarta claramente incorrectas primero, luego elige entre las plausibles.
Preguntas de caso práctico (tipo «diseña arquitectura de replicación», «qué SGBD usar para X»): hasta 2 minutos. Estas valen la pena porque suelen discriminar mejor el conocimiento aplicado vs memorístico.
Estrategia de revisión: En la primera pasada, responde todas las que sabes con certeza. Segunda pasada, ataca las de dificultad media que marcaste. Tercera pasada (si queda tiempo), intenta deducir las difíciles eliminando opciones claramente incorrectas.
📱 Recursos Complementarios
Para profundizar en normalización: Ejercicios interactivos en Database Design Tutorial (dbdesigner.net). Practica con casos reales de tablas sanitarias.
Para entender ACID prácticamente: Instala PostgreSQL localmente y experimenta con transacciones concurrentes. Abre dos sesiones psql y prueba escenarios de lectura sucia, escritura perdida, lecturas no repetibles.
Para arquitecturas distribuidas: Lee documentación de Oracle RAC (Real Application Clusters) que usa el SAS. Entiende cómo funciona la sincronización entre nodos del cluster en entornos de alta disponibilidad.
Para NoSQL: Sigue tutoriales de MongoDB Atlas (versión cloud gratuita). Crea colecciones de documentos JSON simulando registros clínicos y experimenta con consultas de agregación.
Simuladores de examen: Después de estudiar el tema, haz los 30 tests de este documento en condiciones de examen (sin consultar apuntes, cronometrado). Analiza tus fallos y refuerza esos puntos.
