Vous êtes sur la page 1sur 7

Construccin de Bases de Datos

3.1.1
Programa y ejecuta
transacciones en la base de
datos elaborada en la
actividad de evaluacin
1.3.1
utilizando el protocolo de
bloqueo de dos fases y
control de concurrencia
A. Administracin de transacciones.
Definicin de transacciones
Protocolo de bloqueo en dos fases.
Recuperacin de informacin mediante transacciones.
B. Manejo de Concurrencia.
Definicin de concurrencia.
Tcnicas de bloqueo
Seriabilidad con el bloqueo en dos fases
Definicin de transacciones

QUE ES UNA TRANSCICION?


Una transaccin en un sistema de gestin de bases de datos (SGBD), es un
conjunto de rdenes que se ejecutan formando una unidad de trabajo, es decir,
en forma indivisible o atmica.
Un SGBD se dice transaccional si es capaz de mantener la integridad de los
datos, haciendo que estas transacciones no puedan finalizar en un estado
intermedio. Cuando por alguna causa el sistema debe cancelar la transaccin,
empieza a deshacer las rdenes ejecutadas hasta dejar la base de datos en su
estado inicial (llamado punto de integridad), como si la orden de la transaccin
nunca se hubiese realizado.
Para esto, el lenguaje de consulta de datos SQL (Structured query language),
provee los mecanismos para especificar que un conjunto de acciones deben

constituir una transaccin.


BEGIN TRAN: Especifica que va a empezar una transaccin.
COMMIT TRAN: Le indica al motor que puede considerar la transaccin
completada con xito.
ROLLBACK TRAN: Indica que se ha alcanzado un fallo y que debe restablecer
la base al punto de integridad.
En un sistema ideal, las transacciones deberan garantizar todas las propiedades
ACID; en la prctica, a veces alguna de estas propiedades se simplifica o debilita
con vistas a obtener un mejor rendimiento.
Un ejemplo habitual de transaccin es el traspaso de una cantidad de dinero
entre cuentas bancarias. Normalmente se realiza mediante dos operaciones
distintas, una en la que se decrementa el saldo de la cuenta origen y otra en la
que incrementamos el saldo de la cuenta destino. Para garantizar la consistencia
del sistema (es decir, para que no aparezca o desaparezca dinero), los dos
operaciones deben ser atmicas, es decir, el sistema debe garantizar que, bajo
cualquier circunstancia (incluso una cada del sistema), el resultado final es que,
o bien se han realizado las dos operaciones, o bien no se ha realizado ninguna.
Protocolo de bloqueo en dos fases.
En l, todas las operaciones de bloqueo preceden a la primera operacin
de desbloqueo de la transaccin. El proceso se puede as dividir en dos fases; la
fase de bloqueo y de desbloqueo. Si se permite la conversin entre bloqueos, las
conversiones de bloqueos de lectura a bloqueos de escritura son en la primera
fase y las de bloqueos de escritura a lectura en la segunda.
Cualquier transaccin que despus de liberar un bloqueo adquiere otro
siempre corre el riesgo de producir resultados incorrectos. Esto es, siempre es
posible definir una segunda transaccin que pueda ejecutarse concurrentemente
con la primera de manera tal que la ejecucin intercalada o concurrente de
ambas no sea serializable y por ende no correcta. Se define el siguiente
teorema:
Teorema: Si todas las transacciones obedecen las siguientes reglas:
a) Antes de operar sobre cualquier objeto la transaccin debe adquirir primero un
bloqueo sobre ese objeto; y
b) Despus de liberar un bloqueo la transaccin no adquiere ningn otro bloqueo
Entonces, todas las ejecuciones intercaladas de esas transacciones son
serializables.
Una transaccin que obedece las reglas a) y b) se dice que satisface el
protocolo de bloqueo en dos fases. Las dos fases son una fase creciente durante
la cual los bloqueos son adquiridos, y una fase decreciente durante la cual los
bloqueos son liberados.

Su principal ventaja es que garantiza la seriabilidad, lo que no se


consigue usando simplemente bloqueos.
Como inconvenientes podemos citar varios:
Bloquea los elementos que podran ser desbloqueados tras su uso ocupados
hasta la segunda fase, impidiendo que otras transacciones que los necesiten los
utilicen. Esto hace que el rendimiento de este protocolo se degrade conforme
aumenta el grado de concurrencia;
No permite todos los planes serializables posibles.
La implementacin de este este bloqueo depende del programador, que puede
no realizar su tarea convenientemente.

Bloqueo en dos fases bsico, conservador, estricto y riguroso


Son variaciones del bloqueo en dos fases. Se detallan a continuacin:
Conservador o esttico
Requiere que una transaccin bloquee todos los elementos a los que tendr
acceso antes decomenzar a ejecutarse. Una vez bloqueados, no habr
conversin de bloqueos de lectura a escritura.
Si no es posible bloquearlos todos, la transaccin no bloquear nada y
esperar a poder bloquear todos los elementos necesarios en su totalidad.
Su principal ventaja es que no slo garantiza la seriabilidad, sino que evita el
interbloqueo de transacciones.
Como principal inconveniente, en la prctica, es muy difcil saber
quelementos sern necesarios durante la transaccin antes de que esta
comience, si no imposible. es interesante destacar que, al tener que esperar a
poder bloquear todos los elementos que la transaccin necesite, este protocolo

reduce la concurrencia.
Estricto
La transaccin no libera ninguno de sus bloqueos de escritura antes de
confirmarse o abortar.
Este tipo de bloqueo garantiza planes estrictos en cuanto a recuperabilidad
(recuperable es un plan que, una vez confirmada la transaccin, no ser
necesaria deshacerla). Sin embargo, puede sufrir interbloqueos.
Riguroso
Es una versin ms restrictiva del estricto. Similar al anterior, pero adems
tampoco libera los bloqueos de lectura. Es ms fcil de implementar.

Recuperacin de informacin mediante transacciones.


La Recuperacin de Transaccin vence los defectos de recuperacin tradicionales
eliminando el tiempo de indisponibilidad y evitando la prdida de datos buenos. La
Recuperacin de Transaccin es el proceso de borrar los efectos indeseados de
transacciones especficas de la base de datos. La recuperacin tradicional est
en el nivel de objeto de base de datos: por ejemplo, en el espacio de datos,
espacio de mesa o nivel de ndice. Realizando una recuperacin tradicional, un
objeto de base de datos especfico es elegido. Entonces, una copia de seguridad
de aquel objeto es aplicada, seguida volviendo a aplicar entradas de registro para
cambios que ocurrieron despus de que la copia de imagen fue tomada. Recuerde
que todos los cambios hechos a una base de datos relacional son capturados en
el registro de base de datos. De este modo, si los detalles de cambio pueden ser
ledos del registro, la recuperacin puede ser conseguida invirtiendo el impacto de
los cambios registrados.
Una de las formas de la Recuperacin de Transaccin es el Registro la
recuperacin de transaccin basada toma dos forma: DESHAGA la recuperacin o
REHAGA la recuperacin. Para DESHACEN la recuperacin, el registro de base
de datos es ledo para encontrar las modificaciones de datos que fueron aplicadas
durante un margen de tiempo dado y : el ENCARTE es girado en BORRAR. La
ACTUALIZACIN es girada para ACTUALIZAR al viejo valor en Efecto, una
recuperacin DESHAR invierte modificaciones de base de datos usando SQL.
DESHAGA la Recuperacin de Transaccin es la recuperacin de base de datos
en lnea. Por supuesto, si es deseable conservarse la base de datos en lnea

durante una Recuperacin de Transaccin depender en la naturaleza y la


severidad del problema de base de datos.
El segundo tipo de la Recuperacin de Transaccin es REHACEN la
Recuperacin de Transaccin. Ya que el proceso REHACER no genera las
transacciones de problema, realizando una recuperacin y luego ejecutando
REHACER SQL puede restaurar los datos a un estado corriente que no incluye las
transacciones de problema. Una Recuperacin de Transaccin REHAR requiere
una interrupcin para la recuperacin de HOYO. Rehaciendo transacciones en un
ambiente donde la disponibilidad es crucial, la base de datos puede ser rebajada
durante la recuperacin de HOYO y cuando hecho, la base de datos puede
devuelto en lnea. Rehacer subsecuente de las transacciones vlidas para
completar la recuperacin puede ser hecho con los datos en lnea, as reduciendo
el tiempo de indisponibilidad de aplicacin.
La Recuperacin de Transaccin permite que un usuario recupere una parte
especfica de los datos basados en criterios definidos por el usuario. Una
recuperacin tradicional es realizada objeto por el objeto por la base de datos. Una
transaccin es un juego de operaciones relacionadas que, cuando agrupado
juntos, definen una unidad lgica del trabajo dentro de una aplicacin. Las
transacciones son definidas por la vista del usuario del proceso. Mientras la
Recuperacin de Transaccin puede parecer a la respuesta a todos sus
problemas de recuperacin de base de datos, hay tiempos cuando no es posible o
no aconsejable. El coste tena que equilibrar contra el coste de exploraciones
largas de los juegos de datos de registro para aislar datos para deshacer y el
coste de aplicacin de aquellos datos usando SQL.

Definicin de concurrencia.

La concurrencia es un fenmeno que se presenta en varios contextos. Uno de


ellos es la multiprogramacin ya que el tiempo del procesador es compartido
dinmicamente por varios procesos. Otro caso son las aplicaciones estructuradas,
donde la programacin estructurada se implementa como un conjunto de procesos
concurrentes. Y por ultimo se tiene que la misma estructuracin recin
mencionada es utilizada en el diseo de los sistemas operativos, los cuales se
implementan como un conjunto de procesos. El termino concurrencia se refiere al
hecho de que los DBMS(SISTEMAS DE ADMINISTRACION DE BD)permiten que
muchas transacciones puedan

accesar a una misma base de datos a la vez.. En un sistema de estos se


necesitan algn tipo de mecanismos de control de concurrencia para asegurar que
las transacciones concurrentes no interfieran entre si. En sistemas multiusuario, es
necesario un mecanismo para controlar la concurrencia. Se pueden producir
inconsistencias importantes derivadas del acceso concurrente, como por ejemplo,
el problema de la operacin perdida. La concurrencia se da cuando dos
transacciones estn interconectadas, lo que es comn en un entorno multiusuario.
As pues en un entorno de multiprogramacin es posible ejecutar varias
transacciones de manera concurrente.

Tecnicas de Bloqueo
BLOQUEOS BINARIOS
La forma ms simple de bloquear es utilizar bloqueos binarios. basta con un
vector de la siguiente forma: <referencia al dato bloqueado, booleano, referencia a
la transaccin que lo bloquea> donde el booleano es en s el indicador del
bloqueo.
Donde cada transaccin debe solicitar el bloqueo de cada fragmento de datos A
que vaya a utilizar antes de acceder a l (sea para leerlo o escribirlo), mediante
una operacin bloquear(A).
Se caracterizan por tener dos valores posibles; bloqueado y desbloqueado.
Cada elemento de la base de datos tiene un bloqueo distinto. El bloqueo seala si
una transaccin est operando sobre el elemento o est libre para que se pueda
operar con l. De esta manera se impide que dos o ms transacciones estn
operando sobre un mismo elemento al mismo tiempo.
Deber liberar todos los bloqueos, mediante una operacin desbloquear(A)
de modo que otras tareas puedan tomarlos. Este sistema de bloqueos tiene una
implementacin muy simple, ya que solo requiere mantener una tabla que indica
qu partes de los datos est bloqueada y por qu transaccin.
Usando bloqueos binarios
Cuando se usan bloqueos, una transaccin ha de usarlos mediante las
funciones bloquear_elemento y desbloquear_elemento, cumpliendo las siguientes
reglas:

1. Una transaccin T debe emitir la operacin bloquear_elemento(x) antes de


que se realice cualquier operacin leer_elemento(X) i escribir_elemento(x).

2. Una transaccin T debe emitir la operacin desbloquear_elemento(X)


despus de haber completado todas las operaciones leer_elemento(X) y
escribir_elemento(X) en T.
3. Una transaccin T no emitir una operacin bloquear_elemento(X) si ya
posee el bloqueo del elemento X.
4. Una transaccin T no emitir una operacin desbloquear_elemento(X) a
menos que ya posea el bloqueo del elemento X.
Seriabilidad con bloqueo en dos fases
- Es un protocolo que usa bloqueos y asegura la seriabilidad.
- El uso de bloqueos nicamente no la garantiza. La transaccin puede estar mal
diseada
a
nivel
lgico,
etc.
- Cada transaccin puede hacer peticiones de bloqueos y desbloqueos en dos
fases:
- Fase de crecimiento: Una transaccin puede obtener un bloqueo, pero no
liberar
ninguno.
- Fase de encogimiento: Una transaccin puede liberar bloqueos, pero no
adquirirlos.

- Se trata de pedir todos los bloqueos antes de empezar a soltarlos.


- Esta tcnica logra la serializacin, pero no evita interbloqueos (ej: 2
transacciones
piden
bloqueos
cruzados).
- Para evitar interbloqueos pueden usarse otras tcnicas (SO), o bien codificar las
transacciones cuidadosamente...

Vous aimerez peut-être aussi