Está en la página 1de 9

BASE DE DATOS II

UNIDAD IV: MANEJO DE TRANSACCIONES, RESPALDO Y RECUPERACION DE DATOS

1.- CONCEPTOS BÁSICOS DEL MANEJO DE TRANSACCIONES

Una manera de clasificar un sistema de bases de datos es el nro. de usuarios que la utilizarían, de ahí es
que podemos enumerar:

DBMS Monousuario lo puede utilizar sólo un usuario a la vez

DBMS Multiusuarios varios usuarios pueden utilizar el sistema (y, por tanto, acceder a la base de
datos) simultáneamente.

BDD II – Clase 15 lamina 1-7 Pág. 518 del texto recomendado Rafael Escalona
BASE DE DATOS II
UNIDAD IV: MANEJO DE TRANSACCIONES, RESPALDO Y RECUPERACION DE DATOS

1.- CONCEPTOS BÁSICOS DEL MANEJO DE TRANSACCIONES (cont.)

Elementos a considerar: volumen de transacciones y concurrencia


de las mismas

Que hacer?

BDD II – Clase 15 lamina 2-7 Rafael Escalona


BASE DE DATOS II
UNIDAD IV: MANEJO DE TRANSACCIONES, RESPALDO Y RECUPERACION DE DATOS

1.- CONCEPTOS BÁSICOS DEL MANEJO DE TRANSACCIONES (cont.)


Las transacciones son un conjunto de órdenes que se ejecutan formando una unidad de trabajo, es decir, en
forma indivisible o atómica. https://es.wikipedia.org/wiki/Transacci%C3%B3n_(base_de_datos)
Una transacción es un programa en ejecución que constituye una unidad lógica del procesamiento de una
base de datos. Una transacción incluye una o más operaciones de acceso a la base de datos (operaciones
de inserción, eliminación, modificación o recuperación). (Elmasri y Navathe 2006)

Límites

begin transaction y end_transaction -> commit_transaction


(adicionalmente existe el rollback o abort)

BDD II – Clase 15 lamina 3-7 Rafael Escalona


BASE DE DATOS II
UNIDAD IV: MANEJO DE TRANSACCIONES, RESPALDO Y RECUPERACION DE DATOS

1.- CONCEPTOS BÁSICOS DEL MANEJO DE TRANSACCIONES (cont.)

El DBMS es responsable de garantizar que todas las operaciones de la transacción se completen


satisfactoriamente y que su efecto se grabe permanentemente en la base de datos

No debe permitir que algunas operaciones de una transacción T se apliquen a la base de datos mientras
otras no.
Inconsistencia

Que puede pasar dentro de los limites?


Un fallo del computador (caída del sistema).
Un error de la transacción o del sistema
Errores locales o condiciones de excepción detectados por la transacción
Control de la concurrencia
Fallo del disco
Problemas físicos y catástrofes

BDD II – Clase 15 lamina 4-7 Rafael Escalona


UNIDAD IV: MANEJO DE TRANSACCIONES, RESPALDO Y RECUPERACION DE DATOS

1.- CONCEPTOS BÁSICOS DEL MANEJO DE TRANSACCIONES (continuación):

Estándar “ACID” (siglas en ingles):

1. Atomicidad. Una transacción es una unidad atómica de procesamiento; o se ejecuta en su totalidad o


no se ejecuta en absoluto.
2. Conservación de la consistencia. Una transacción está conservando la consistencia si su ejecución
completa lleva a la base de datos de un estado consistente a otro.
3. Aislamiento. Una transacción debe aparecer como si estuviera ejecutándose de forma aislada a las
demás. Es decir, la ejecución de una transacción no debe interferir con la ejecución de ninguna otra
transacción simultánea.
4. Durabilidad. Los cambios aplicados a la base de datos por una transacción confirmada deben
persistir en la base de datos. Estos cambios no deben perderse por culpa de un fallo.

BDD II – Clase 15 lamina 5-7 Rafael Escalona


UNIDAD IV: MANEJO DE TRANSACCIONES, RESPALDO Y RECUPERACION DE DATOS

1.- CONCEPTOS BÁSICOS DEL MANEJO DE TRANSACCIONES (continuación):

1 …n

Estado Estado
Insert, Insert, No
Inicial: Error No Error Final:
Update Update
Begin ? ? Commit
Delete Delete
Tran Tran
Si Si

Una Base de Datos con características “transaccional”, es capaz de mantener la integridad de los datos, haciendo que
estas transacciones no puedan finalizar en un estado intermedio

Recuperación: TODO O NADA, por eso es atómica

BDD II – Clase 15 lamina 6-7 Rafael Escalona


BASE DE DATOS II – 2do. CORTE

Ejercicio
Tomando en cuenta la BDD “urbe” con el modelo de “instituto educativo” (visto en clases) y con las entidades:
estudiantes, cursos y matricula; y tomando en cuenta la solución de inscribir por vía de un SP.
Modifique el script de modo que tenga el procesamiento de transacciones visto.

CREATE PROCEDURE inscribir (`pCedula` INT, `pIdCursos` INT)


BEGIN
DECLARE miIdEstudiantes INT(10); -- variable de apoyo
SELECT id INTO miIdEstudiantes FROM estudiantes WHERE cedula=pCedula; --busqueda
IF miIdEstudiantes IS NOT NULL THEN --validación de datos
INSERT INTO matricula (`idestudiantes`, `idcursos`, `nota`)
VALUES(miIdEstudiantes,pIdCursos,0); --solución final
SELECT 'SI' AS exito;
ELSE
SELECT 'NO' AS exito;
END IF;
END

BDD II – Clase 15 lamina 7-7 Rafael Escalona


BASE DE DATOS II – 2do. CORTE

Solución del ejercicio:

CREATE PROCEDURE inscribir (`pCedula` INT, `pIdCursos` INT)


inscripcion:Begin -- etiquetamos el begin
DECLARE miIdEstudiantes INT(10); -- variable de apoyo
START TRANSACTION; -- marcamos el limite inicial
SELECT id INTO miIdEstudiantes FROM estudiantes WHERE cedula=pCedula;
IF miIdEstudiantes IS NULL THEN
rollback; -- abortamos si encontramos error
SELECT 1 AS errores;
LEAVE inscripcion; -- dejamos de ejecutar el SP
END IF;
INSERT INTO matricula (idestudiantes, idcursos, notas)
VALUES(miIdEstudiantes,pIdCursos,0);
COMMIT; -- marcamos el final de la transacción
SELECT 0 AS errores;
END

BDD II – Clase 15 lamina 7-7 Rafael Escalona


BASE DE DATOS II – 2do. CORTE

Nota: Cómo verificar que se hizo el “insert” en matricula (por si hay mas líneas de código), solo deben apoyarse con:


insert into matricula(…) values(…);

if ROW_COUNT() = 0 then // evaluamos la inserción de fila


rollback;
SELECT 1 errores;
LEAVE Mi_etiqueta; // detenemos el SP
end if;
… mas líneas de código …
insert into matricula(…) values(…);
SELECT @@identity INTO id_generado;
if id_generado = 0 then // evaluamos la inserción de fila
rollback;
SELECT 1 errores;
LEAVE Mi_etiqueta; // detenemos el SP
end if;
… mas líneas de código

BDD II – Clase 15 lamina 7-7 Rafael Escalona

También podría gustarte