Píldora TAI CXLV; Bloqueos y Transacciones en Bases de Datos: Guía para Opositores TIC

Bloqueos, Transacciones y Recuperación en Bases de Datos: Guía Completa para Opositores TIC

El estudio de los bloqueos, transacciones y mecanismos de recuperación en bases de datos es fundamental para quienes se preparan para oposiciones de informática (TAI, GSI, etc.) y para cualquier profesional de la administración de sistemas o desarrollo de software.

En este artículo encontrarás una explicación clara y actualizada de los principales conceptos: tipos de bloqueos, niveles de aislamiento definidos por ANSI/ISO SQL, mecanismos de acceso a datos en entornos Microsoft, bitácoras de recuperación y problemas clásicos del acceso concurrente.


1. Bloqueos en Bases de Datos (Locks)

Los bloqueos son mecanismos que garantizan que los datos no puedan ser accedidos simultáneamente por varias transacciones de forma conflictiva.
Cuando una transacción bloquea un recurso, otra debe esperar hasta que este se libere.

1.1. Granularidad del bloqueo

La granularidad define el tamaño del recurso bloqueado.

  • A mayor granularidad (ej. base de datos completa) → menor concurrencia.
  • A menor granularidad (ej. registro concreto) → mayor concurrencia.

Niveles de bloqueo más comunes:

  • Nivel de base de datos.
  • Nivel de tabla o conjunto de registros.
  • Nivel de página (grupo de registros en memoria).
  • Nivel de registro individual.

1.2. Tipos de bloqueos

  • Optimista (Compartido o Shared): Permite lecturas concurrentes, el registro solo se bloquea si se intenta modificar.
  • Pesimista (Exclusivo o X): Nadie más puede acceder al registro mientras se está modificando.
  • Bloqueo mutuo (Dead Lock): Dos transacciones esperan indefinidamente los recursos que la otra posee.

2. Niveles de Aislamiento según ANSI/ISO SQL

El nivel de aislamiento determina el grado de independencia entre transacciones.

2.1. Serializable

  • Máximo aislamiento.
  • Equivalente a ejecutar las transacciones en serie.
  • Garantiza coherencia, pero reduce concurrencia.

2.2. Lecturas repetibles (Repeatable Reads)

  • Evita modificaciones en los datos leídos hasta el final de la transacción.
  • Puede permitir inserciones que generen lecturas fantasma.

2.3. Lecturas comprometidas (Read Committed)

  • Solo se bloquea escritura en los datos seleccionados hasta finalizar la transacción.
  • Muy usado en entornos productivos.

2.4. Lecturas no comprometidas (Read Uncommitted)

  • Permite leer datos sin confirmar.
  • Máxima concurrencia, pero riesgo de lecturas sucias.

3. Acceso a Datos en Entornos Microsoft

Microsoft desarrolló diferentes tecnologías de acceso a datos para facilitar la conexión de aplicaciones con bases de datos.

  • DAO (Data Access Objects): Usado en versiones iniciales de Access y Visual Basic.
  • MDAC (Microsoft Data Access Components): Framework que unifica tecnologías de acceso (ADO, OLE DB, ODBC).
  • ODBC (Open DataBase Connectivity): Estándar para acceso a distintos motores de bases de datos.
  • OLE DB: Permite acceso tanto a datos relacionales como no relacionales (Excel, ficheros).
  • ADO (ActiveX Data Objects): Middleware ligero de Microsoft.
  • ADO.NET: Evolución en .NET con soporte nativo a XML.

4. Recuperación: La Bitácora o Log de Transacciones

La bitácora (transaction log) es un fichero que registra todas las operaciones realizadas sobre la base de datos antes de que se confirmen.

4.1. Funciones principales

  • Recuperar información ante fallos de sistema.
  • Deshacer modificaciones (rollback).
  • Apoyo en auditoría y análisis forense.

4.2. Información registrada

  • Nombre de la transacción.
  • Nombre del dato modificado.
  • Valor antiguo y nuevo.
  • Fecha, hora, usuario y host de origen.

5. Transacciones y Propiedades ACID

Una transacción es una unidad lógica de trabajo que debe ser indivisible y atómica.

5.1. Propiedades ACID

  1. Atomicidad: La operación se ejecuta toda o no se ejecuta.
  2. Consistencia: La BD pasa de un estado válido a otro válido.
  3. Aislamiento: Una transacción no debe afectar a otras concurrentes.
  4. Durabilidad: Una vez confirmada, la operación persiste.

5.2. Comandos principales

  • COMMIT: Consolida cambios.
  • ROLLBACK: Deshace cambios.
  • SAVEPOINT: Punto de guardado intermedio.

6. Problemas del Acceso Concurrente

Cuando varias transacciones actúan sobre los mismos datos, pueden aparecer inconsistencias:

  • Lecturas sucias: Se leen datos no confirmados.
  • Lecturas no repetibles: Una segunda lectura devuelve valores distintos.
  • Lecturas fantasma: Nuevos registros aparecen en una consulta repetida.

7. Estados de una Transacción

Una transacción puede atravesar distintos estados:

  • BEGIN: Inicio de la ejecución.
  • READ / WRITE: Operaciones de lectura y escritura.
  • END: Finaliza la ejecución.
  • COMMIT: Cambios confirmados permanentemente.
  • ROLLBACK: Transacción abortada, cambios descartados.
  • UNDO / REDO: Mecanismos de recuperación.

Conclusión

El conocimiento de bloqueos, niveles de aislamiento, bitácoras y problemas de concurrencia es indispensable tanto para oposiciones TIC como para la práctica profesional en administración de bases de datos.

Dominar estos conceptos no solo permite responder con seguridad en un examen, sino también comprender cómo los sistemas de gestión de bases de datos (SGBD) aseguran la integridad y consistencia de la información en entornos críticos.

Respuesta

  1. […] Píldora TAI CXLV; Bloqueos y Transacciones en Bases de Datos: Guía para Opositores TIC – Anacrol… […]

    Me gusta

Deja un comentario