Ver Mensaje Individual
  #2 (permalink)  
Antiguo 29/02/2004, 01:31
Avatar de Bartak
Bartak
 
Fecha de Ingreso: enero-2004
Ubicación: Chilito
Mensajes: 121
Antigüedad: 20 años, 3 meses
Puntos: 0
tienes razon lo semaforos son para reservar recursos a un proceso, luego de terminado este proceso los recursos se le asignan a otro, es parecido a las colas de banco en ellas tienes un fila de personas esperando por un cajero desocupado.

ahora con respecto a las actualizaciones de datos en las BD,
se ocupa harto la exclusividad o bloqueo de la tabla o tupla
para ingresar o actualizar datos de manera que en ese momento nadie mas pueda hacer algun ajuste a esa tabla o tupla(este es un control de concurrencia pesimista) . ponte tu en los sistemas de informacion de las agencias de vuelo, hay vuelos que hacen varias escalas y en cada escala la agencia vende pasajes con un determinado asiento, imagina que en un mismo momento en dos paise diferente se vende el mismo asiento, esto no puede ocurrir por que ocurriria un fallo de integirdad de la BD por esto existen tecnicas para manejar esots errores:

tecnica de bloqueo : es una variable asociada acada elemento de datos que describe el estado de dicho elemento respecto a las posibles operaciones (recuperar o actualizacion) que se pueden
realizar sobre ellos en cada momento. las transacciones pueden llevar a cabo bloqueos, impidiendo a otros usuarios la recuperacion o actualizacion de los elementos bloqueados, para evitar inconsistencias en el acceso concurrente.
Los SGBD tienen bloqueos(por tupla, por tabla) para asegurar la consistencia. Los usuarios también pueden bloquear explícitamente los objetos, impidiendo el acceso por parte de otros usuarios.

Tipos de bloqueo


Exclusivos: cuando una transacción mantiene un bloqueo de este tipo, ninguna otra transacción puede acceder a el objeto bloqueado, ni bloquearlo, hasta que sea liberado por la transacción que lo había retenido. Se utiliza cuando se quiere actualizar datos.


Bloqueo compartido: cuando una transacción bloquea en este modo, permite que otras transacciones retengan también el objeto en bloque compartido, pero no exclusivo. Este tipo se utiliza cuando no se requiere actualizar datos, pero se desea impedir cualquier modificación mientras los datos son consultados.

El algoritmo que se utiliza se llama bloqueo de dos fases (two phase locking).

El problema de las técnicas de bloqueo es que puede producirse un interbloqueo (deadlock), dos o mas transacciones están esperando cada una de ellas que la otra libere algún objeto antes de seguir

esto se puede solucionar

Prevenir el deadlock: obliga a que las transacciones bloqueen todos los elementos que necesitan por adelantado. EN caso de no poder conseguir todos esos elementos no bloquea ninguno y se queda en espera hasta volver a intentarlo.

Detectar el deadlock: Se controla de forma periódica si se ha producido un deadlock. Se construye un grafo en espera, cada nodo es una transacción en ejecución y un arco de una transacción Ti a Tj, en caso que Ti esté esperando un elemento que ocupa Tj. Si existe un ciclo en el grafo tenemos un deadlock. La solución es escoger transacciones víctimas y deshacerlas, hasta que desaparezca el deadlock. Cada SGBD tiene políticas diferentes para escoger víctimas.

Otra técnicas mas optimista es la
Técnicas de marca de tiempo (timestamping)

Las marcas de tiempo son identificadores únicos que se asignan a las transacciones, que se consideran como el tiempo de inicio de una transacción. Con esta técnica no existen bloqueos. Ordena las transacciones. Se retrasan.


Las transacciones acceden libremente a los elementos, y antes de finalizar se determina si ha habido interferencias.

Este tipo de técnicas considera que las transacciones tienen 3 fases:


Lectura: las transacciones realizan operaciones sobre copias privadas de los objetos (accesibles solo por la transacción)


Validación : en la que se comprueba si el conjunto de objetos modificados por una transacción se solapa con el conjunto de objetos modificados por alguna otra que haya hecho la validación durante la fase de lectura de dicha transacción


Grabación:, en el caso de no detectar interferencias se graban las modificaciones, convirtiendo las versiones privadas de los objetos en versiones actuales.

para menejar estas transacciones hay funciones como por
ejemplo el commit y el rollback en Oracle, en otros gestores
de BD cambian o existen susedaneas.

Pd: parece una seccion del foro BD
__________________
"Llegado el momento supervisare my propia caida" - Alvaro Henriquez