lunes, 3 de junio de 2013

UNIDAD 3

A) ADMINISTRACION DE TRANSACCIONES

Una transacción en un Sistema de Gestión de Bases de Datos (SGBD), es un conjunto de órdenes que se ejecutan formando una unidad de trabajo, es decir, en forma indivisible o atómica.
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 transacción, 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 transacción 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 transacción.
  • BEGIN TRAN: Especifica que va a empezar una transacción.
  • COMMIT TRAN: Le indica al motor que puede considerar la transacción 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 deberían garantizar todas las propiedades ACID; en la práctica, a veces alguna de estas propiedades se simplifica o debilita con vistas a obtener un mejor rendimiento.


TECNICAS DE BLOQUEO 

Protocolo de bloqueo en dos fases

En él, todas las operaciones de bloqueo preceden a la primera operación de desbloqueo de la transacción. El proceso se puede así dividir en dos fases; la fase de bloqueo y de desbloqueo. Si se permite la conversión 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 transacción que después de liberar un bloqueo adquiere otro siempre corre el riesgo de producir resultados incorrectos. Esto es, siempre es posible definir una segunda transacción que pueda ejecutarse concurrentemente con la primera de manera tal que la ejecución 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 transacción debe adquirir primero un bloqueo sobre ese objeto; y
b) Después de liberar un bloqueo la transacción no adquiere ningún otro bloqueo  Entonces, todas las ejecuciones intercaladas de esas transacciones son serializables.
         Una transacción 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 podrían 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 implementación de este este bloqueo depende del programador, que puede no realizar su tarea convenientemente.




Bloqueo en dos fases básico, conservador, estricto y riguroso

Son variaciones del bloqueo en dos fases. Se detallan a continuación:
Conservador o estático
    Requiere que una transacción bloquee todos los elementos a los que tendrá acceso antes decomenzar a ejecutarse. Una vez bloqueados, no habrá conversión de bloqueos de lectura a escritura.
     Si no es posible bloquearlos todos, la transacción no bloqueará nada y esperará a poder bloquear todos los elementos necesarios en su totalidad.
Su principal ventaja es que no sólo garantiza la seriabilidad, sino que evita el interbloqueo de transacciones.
   Como principal inconveniente, en la práctica, es muy difícil saber quéelementos serán necesarios durante la transacción antes de que esta comience, si no imposible. es interesante destacar que, al tener que esperar a poder bloquear todos los elementos que la transacción necesite, este protocolo reduce la concurrencia.

Estricto
    La transacción 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 transacción, no será necesaria deshacerla). Sin embargo, puede sufrir interbloqueos.

Riguroso
     Es una versión más restrictiva del estricto. Similar al anterior, pero además tampoco libera los bloqueos de lectura. Es más fácil de implementar.
recuperacion de informacion mediante transacciones

  La Recuperación de Transacción es el proceso de borrar los efectos indeseados de transacciones específicas de la base de datos.
La Recuperación de Transacción vence los defectos de recuperación tradicionales eliminando el tiempo de indisponibilidad y evitando la pérdida de datos buenos. La Recuperación de Transacción es “el proceso de borrar los efectos indeseados de transacciones específicas de la base de datos”. La recuperación 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 recuperación tradicional, un objeto de base de datos específico es elegido. Entonces, una copia de seguridad de aquel objeto es aplicada, seguida volviendo a aplicar entradas de registro para cambios que ocurrieron después 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 leídos del registro, la recuperación puede ser conseguida invirtiendo el impacto de los cambios registrados.  



B)Manejo de concurrencia

☼Definición de concurrencia
procesos sean ejecutados al mismo tiempo, y que potencialmente puedan interactuar entre sí.

Los procesos concurrentes pueden ser ejecutados realmente de forma simultánea, sólo cuando cada uno es ejecutado en diferentes procesadores. En cambio, la concurrencia es simulada si sólo existe un procesador encargado de ejecutar los procesos concurrentes, simulando la concurrencia, ocupándose de forma alternada en uno y otro proceso a pequeñísimos intervalos de tiempo. De esta manera simula que se están ejecutando a la vez.

 
☼Técnicas de bloqueo  
Las técnicas más empleadas para controlar el acceso concurrente de las transacciones se basan en el concepto de bloquear elementos de datos. Un bloqueo corresponde a una variable asociada al
gránulo que describe las operaciones que se pueden realizar sobre él.

☼Seriabilidad con el bloqueo en dos frases
Cuando se utiliza el protocolo de bloqueo en dos fases, puede demostrarse que la ejecución será serializable.
Bloqueo de dos fases (2PL)
El algoritmo 2PL utiliza bloqueos de lectura y escritura para prevenir conflictos entre operaciones. Consiste en los siguientes pasos para una transacción T:
  1. Obtiene bloqueo de lectura para un elemento L (bloqueo compartido)
  2. Obtiene bloqueo de escritura para un elemento E (bloqueo exclusivo)
  3. Lee el elemento L
  4. Escribe en el elemento E
  5. Libera el bloqueo de L
  6. Libera el bloqueo de E
Las reglas básicas para manejar los bloqueos son: transacciones distintas no pueden tener acceso simultáneamente a un elemento (lectura-escritura o escritura-escritura), y una vez se libere un bloqueo no se puede pedir otro, es decir, los bloqueos de la transacción crecerán mientras no libere ninguno y luego de liberar alguno solo puede liberar los demás.
Ejemplos del algoritmo 2PL son
  • La básica en la que se sigue el esquema previamente explicado con la variante que el bloqueo de escritura se pide para todas las copias del elemento.
  • 2PL de copia primaria: en vez de pedir bloqueo para cada copia del elemento de escritura se le pide a una copia primaria o principal.
  • 2PL de voto: se pide a todos los nodos que voten para ver si se concede el bloqueo.
  • 2PL centralizado: el manejador de bloqueos está centralizado y todas las peticiones de bloqueo las maneja el.
Antes de implementar un algoritmo de control de concurrencia 2PL es necesario considerar distintos factores como cual es la unidad atómica más pequeña que el sistema permite bloquear, cual es el intervalo de sincronización para todas las copias de un elemento, donde se deben colocar las tablas con la información de los bloqueos y por último que tan probable es que ocurra por los factores anteriores un bloqueo mutuo.
Time-stamp
Cada transacción realizada se le asigna un timestamp (literalmente: sello de tiempo) único en el nodo que se originó. Este sello se adjunta a cada petición de lectura y escritura. En el caso de que se dé un conflicto de que dos operaciones de escritura traten de acceder al mismo elemento, este se resuelve serializandolo respecto a los sellos que tengan. A pesar de que existen varios algoritmos de control de concurrencia basados en timestamps, muy pocos son utilizados en aplicaciones comerciales. Esto es en gran parte porque se requiere que el sistema distribuido cuente con un reloj sincronizado que es raro que se tenga implementado.

No hay comentarios:

Publicar un comentario