Documentos de Académico
Documentos de Profesional
Documentos de Cultura
DOCENTE: INTEGRANTES:
ING. CAMPOS MARILEN
TSU. GÁMEZ JOSELVIS
C.I.: V-26.984.065
TSU. HERNANDEZ DANIEL
C.I.: V-26.384.551
TSU. JARAMILLO JESÚS
C.I.: V-25.568.229
Ingeniería en Informática
Sección 01 – Trayecto IV, Semestre I
Algoritmo no deshacer/rehacer
- Algoritmo deshacer/rehace
a) Diarios de recuperación
Se utilizan también los términos log y journal. Estos mantienen un registro de todas las
operaciones que afectan a ítems de la base de datos, esta información permite recuperar
datos y se almacena en disco.
La entrada de un diario debe establecer las diferencias entre los dos tipos de información
que puede tener una entrada del diario para una operación de escritura.
1. La información necesaria para DESHACER. Las entradas de diario del tipo Deshacer
incluyen el valor antiguo (BFIM) del elemento ya que son necesarias para deshacer el
efecto de la operación a partir del diario (asignando el valor del elemento en la base de
datos otra vez a su BFIM).
2. La información necesaria para REHACER. Una entrada de diario del tipo Rehacer
incluye el nuevo valor (AFIM) del elemento escrito por la operación ya que se requiere
rehacer el efecto de la operación a partir del diario (asignado el valor del elemento en la
base de datos a su AFIM).
1. La estrategia no-robar establece que una página de la caché actualizada por una
transacción no puede escribirse a disco antes de la confirmación de dicha transacción. El bit
de reserva indica si la página puede escribirse en disco ya o no. Por el contrario, si el
protocolo permite escribir un búfer actualizado antes de la confirmación de la transacción,
se le llama estrategia robar. Robar se usa cuando el gestor del búfer reemplaza una página
existente que ha sido actualizada pero cuya transacción no se ha confirmado.
2. Si todas las páginas actualizadas por una transacción son escritas inmediatamente a disco
cuando se confirma la transacción, se le llama estrategia forzar. A lo contrario se le llama
estrategia no-forzar.
Restauración de transacciones
Si por cualquier razón una transacción falla después de actualizar la base de datos, puede
ser necesario revertir la transacción. Cualquier valor de elementos de información que la
transacción haya alterado y se haya escrito en la base de datos, deberá restablecerse a sus
valores anteriores (BFIM). Las entradas del diario del tipo deshacer sirven para recuperar
los valores antiguos de los elementos de información que deben revertirse.
Si una transacción T se revierte, cualquier transacción S que haya leída mientras tanto el
valor de algún elemento de datos X escrito por T también deberá revertirse. De manera
similar, una vez que S se revierta, cualquier transacción R que haya leído el valor de algún
elemento de datos Y escrito por S deberá revertirse también, y así sucesivamente. Este
fenómeno se denomina restauración (rollback) en cascada, y puede ocurrir cuando el
protocolo de recuperación garantiza que los planes sean recuperables pero no que sean
estrictos o sin cascada. Obviamente, la restauración en cascada puede ser bastante compleja
y costosa en tiempo. Es por ello que casi todos los mecanismos de recuperación se diseñan
de modo que la restauración en cascada nunca sea necesaria.
II. TÉCNICAS DE RECUPERACIÓN
1. Una transacción no puede hacer cambios a la base de datos hasta que llegue a su
COMMIT.
2. Una transacción no llega a su COMMIT hasta que todas las operaciones de actualización
hayan sido registradas en el log y el log haya sido forzado a escribirse en disco.
Si la transacción falla después de llegar a su COMMIT pero antes de que los cambios
sean reflejados en la base de datos, basta con aplicar el algoritmo REDO según las
operaciones y los valores de los data ítems que aparecen en el log.
PROCEDURE RDU_S usa dos listas de transacciones: las transacciones que han llegado
a su COMMIT desde el último checkpoint y las transacciones activas. Aplica el algoritmo
REDO a todas las operaciones que han escrito (write- ítem) sobre los ítems, de las
transacciones que han llegado a su COMMIT según el orden en el que ellas aparecen en el
log. Luego reinicia todas las transacciones activas. El REDO es definido de la siguiente
manera: REDO (WRITE_OP) rehacer una operación de escritura sobre un data ítem
WRITE_OP consiste en examinar sus entradas al log y colocar como valor del data ítem X
el valor que aparece en new_value, considerado el valor del data ítem después de la
actualización. La operación REDO se aplica para buscar lo idéntico. Esto es que, si ella se
ejecuta una y otra vez, el resultado debe ser equivalente a que si se ejecutara una sola vez.
PROCEDURE RDU_M: Usa dos listas de transacciones mantenidas por el sistema: las
transacciones que llegaron a su COMMIT (T) desde el último checkpoint y las
transacciones activas (T´). Aplica el algoritmo REDO a todas las operaciones que han
escrito (write-ítem) sobre los ítems, de las transacciones que han llegado a su COMMIT
según el orden en el que ellas aparecen en el log. Las transacciones que están activas y que
no han llegado a su COMMIT deben ser canceladas y sometidas nuevamente a ejecución.
En ambientes monousuarios:
PROCEDURE RIU_S usa dos listas de transacciones: las transacciones que han llegado
a su COMMIT desde el último checkpoint y las transacciones activas (por lo menos, una
transacción cae en esta categoría ges el ambiente es monousuario).
Aplica el algoritmo UNDO a Todas las operaciones que han escrito (write-ítem) sobre
los ítems, de las transacciones activas que aparecen en el log.
Aplica el algoritmo REDO a todas las transacciones que han llegado a su COMMIT
según el orden en el que ellas aparecen en el log.
En ambientes multiusuarios:
PROCEDURE RIU_M usa dos listas de transacciones: las transacciones que han llegado
a su COMMIT desde el último checkpoint y las transacciones.
Activa el algoritmo UNDO a todas las operaciones que han escrito (write-ítem) sobre los
ítems, de las transacciones activas que aparecen en el log. Las operaciones deben ser
deshechas en orden inverso a como aparecen en el log.
Aplica el algoritmo REDO a todas las transacciones que han llegado a su COMMIT
según el orden en el que ellas aparecen en el log.
Paginación en la sombra
Supóngase ahora que una segunda transacción T1 realiza una nueva modificación sobre
Q antes de retroceder T0. En este caso, al retroceder T0, se perdería la modificación
realizada por T1.
Este requisito puede satisfacerse fácilmente utilizando bloqueo estricto de dos fases, esto
es, bloqueo de dos fases manteniendo bloqueos exclusivos hasta el final de la transacción.
Retroceso de transacciones
Estos registros del registro histórico representan una modificación del elemento de datos
A por parte de la transacción Ti, seguida de otra modificación de A hecha también por Ti.
Al recorrer el registro histórico al revés se establece correctamente el valor de A como 10.
Si el registro histórico se recorriera hacia delante, A tomaría como valor 20, lo cual es
incorrecto. Si para el control de concurrencia se utiliza el bloqueo estricto de dos fases, los
bloqueos llevados a cabo por una transacción T sólo pueden ser desbloqueados después de
que la transacción se haya retrocedido según se acaba de describir. Una vez que T (que se
está retrocediendo) haya actualizado un elemento de datos, ninguna otra transacción podría
haber actualizado el mismo elemento de datos debido a los requisitos del control de. Así
pues, la restitución del valor anterior de un elemento de datos no borrará los efectos de otra
transacción.
Puntos de revisión
Para hacer una copia de respaldo de una base de datos se recomienda crear un dump.
a) Para hacer un dump de todas las bases de datos es necesario ejecutar el comando:
b) Para hacer un dump de sólo algunas bases de datos es necesario ejecutar el comando:
c) Para hacer un dump de todas las tablas de una base de datos es necesario ejecutar el
comando:
d) Para hacer un dump de sólo ciertas tablas de una base de datos es necesario ejecutar
el comando:
Para cada uno de estos comandos es necesario indicar un usuario (user) y la contraseña
(password) con derechos de administrador en la base de datos.
2. Como restaurar
Para restaurar un dump tan sólo hay que ejecutar el comando:
1. Una transacción no puede hacer cambios a la base de datos hasta que llegue a su
COMMIT.
2. Una transacción no llega a su COMMIT hasta que todas las operaciones de actualización
hayan sido registradas en el log y el log haya sido forzado a escribirse en disco.
Mientras que en la inmediata establece qué todas las operaciones que han escrito (write-
ítem) sobre los ítems, de las transacciones activas que aparecen en el log. Es decir, trabaja
de manera directa con las transacciones que están activas.
Daniel santana (2013). Administración de base de datos [Pagina web en línea]. Disponible
en: http://dan1456bd.blogspot.com/p/respaldos.html. [Consulta: 2018, octubre 22]