You are on page 1of 24

INTEGRANTES:

Burguete López
Erick Jonathan
Jiménez
Martínez Beatriz
DOCENTE:
DRA. Hernández
Castillo Jehiely
Belem
MATERIA:

INSTITUTO Taller de Base de


Datos
TECNOLOGICO DE CARRERA:

TAPACHULA ING EN
SISTEMAS
COMPUTACIONA
LES
TAPACHULA, CHIAPAS A 09 DE NOVIEMBRE DEL 2018
PRACTICA:
Control de
Acceso
SEMESTRE: 5°
GRUPO: “C”
SALON: JG
INDICE

INTRODUCCION………………………………………………………………………… 1

Concurrencia……………………………………………………………………,,,,……. 2

Concurrencia intercalada y simultanea………………………………….…………. 3

Conceptos Básicos………………………………………………………….…………. 4

Métodos de control de concurrencia…………………………………….…………. 5

Propiedades de la transacción............................................................................. 7

Grados de consistencia………………………………………………………………. 13

Niveles de aislamiento…………………………………………………...…………… 15

Commit y Rollback…………………………………………………………………….. 19

Conclusion……………………………………………………………..………………. 22

Referencias……………………………………………………………...……………… 23

1
INTRODUCCION

El presente trabajo de investigación se explican los diferentes conceptos del tema


de concurrencia como definición es un conjunto de acciones llevadas a cabo por un
usuario o un programa de aplicación, que acceden o cambian el contenido de la
base de datos.
Otro punto es que las transacciones representan eventos del mundo real, como una
compra puede ser una transacción que consiste en dos operaciones: inserta
un registro del pago del producto, insertar el producto en el inventario.
No se debe insertar un producto que no se haya pagad, ni pagar un producto que
no este en el inventario, por lo tanto, las dos operaciones toman una transacción.

1
CONCURRENCIA

El control de concurrencia es el que asegura que muchos usuarios puedan acceder


a la data al mismo tiempo. Al realizar procesos de transacciones se producen
operaciones de R/W.

Ninguna transacción debe ver el resultado de otras transacciones inconclusas, si


esto no fuera así estaríamos leyendo datos inconsistentes.
El control de accesos concurrentes y específicamente de transacciones
concurrentes en SQL es manejado por un módulo del dbms llamado "scheduler".
• Los SGBD según el número de usuarios que pueden utilizarlos de forma
concurrente, se clasifican en sistemas:

Varios usuarios pueden usar un mismo equipo a la vez gracias a la


multiprogramación: el computador puede procesar al mismo tiempo varias
transacciones.

2
Concurrencia Intercalada Vs.
Simultanea

3
CONCEPTOS BÁSICOS
Desde el punto de vista del usuario la interacción con la base de datos se lleva a
cabo mediante operaciones con significado en el modelo semántico (por ejemplo,
una transferencia de fondos en un banco).
Desde el punto de vista de la base de datos estas operaciones pueden estar
formadas por varias operaciones elementales (por ejemplo, quitar fondos de una
cuenta y añadírselos a otra)

Se llama Transacción a una colección de operaciones que forman una unidad


lógica de trabajo en una BD realizada por una o más sentencias SQL
estrechamente relacionadas.

Una transacción es una unidad de la ejecución de un programa que lee y escribe


datos a y desde la Base de Datos. Puede consistir en varias operaciones de acceso
a la base de datos. Una Transacción está delimitada por instrucciones de inicio
transacción y fin transacción (la transacción consiste en todas las operaciones
que se ejecutan entre inicio transacción y fin transacción).
El concepto de transacción se desarrolló para atender los casos en los que el estado
resultante de la base de datos depende del éxito completo en una serie de
operaciones. Este concepto vio la luz debido a que varias operaciones sucesivas
pueden modificar el resultado de operaciones anteriores. En esos casos, si alguna
operación produce un error, el estado resultante puede ser indeterminado.
Para solucionar este problema, las transacciones agrupan una serie de operaciones
de manera que es posible garantizar la integridad del resultado final. O todas las
operaciones se ejecutan con éxito y se confirman (se escriben en la base de datos),
o toda la transacción se considera no realizada. La acción de cancelar una
transacción se denomina deshacer la transacción. Deshacer una transacción
permite anular los cambios y recuperar el estado de la base de datos previo a la
transacción.
Por ejemplo, en una transacción bancaria automatizada, si un banco transfiere
dinero desde la cuenta A la cuenta B, la retirada de fondos de A y el depósito en B
deben producirse con éxito para procesar los fondos correctamente, de lo contrario
la transacción entera debe cancelarse.
Esquematizando el proceso de transacciones tenemos: O se ejecutan todas las
operaciones que componen la transacción, o no se realiza ninguna.

4
MÉTODOS DE CONTROL DE CONCURRENCIA

PROTOCOLOS BASADOS EN TÉCNICAS DE BLOQUEO

Cabe destacar antes de comenzar el estudio de los protocolos basados en bloqueos


que son los más utilizados por los SGBD comerciales. Los demás tienen un alcance
más teórico que práctico.

Un bloqueo es una variable asociada a un elemento de datos de la base de datos,


usada para restringir las operaciones que se pueden aplicar sobre él.

Existen varios tipos de bloqueo: binarios (de propiedades limitadas), compartidos,


exclusivos (usados en la práctica), y bloqueos de certificación.

Las operaciones sobre bloqueos se deben implementar como secciones críticas, es


decir, de forma indivisible; el SGBD no deberá alternar sus instrucciones con otras.

BLOQUEOS BINARIOS

Se caracterizan por tener dos valores posibles, bloqueados y desbloqueados. Cada


elemento de la base de datos tiene un bloqueo distinto. El bloqueo señala si una
transacción está operando sobre el elemento o está libre para que se pueda operar
con él. De esta manera se impide que dos o más transacciones estén operando
sobre un mismo elemento al mismo tiempo.

La implementación de un bloqueo binario es simple; basta con un vector de la


siguiente forma: donde el booleano es en sí el indicador del bloqueo.

Bloqueos de lectura/escritura

Son una ampliación de los bloqueos binarios. Tenemos que el bloqueo puede tener
tres posibles posiciones: libre, bloqueado para lectura, y bloqueado para escritura.
De esta forma, más de una transacción puede tener un mismo elemento de datos
bloqueado para lectura, pero sólo una para escritura. Si una transacción quiere
escribir en ese elemento, habrá de esperar a que el bloqueo quede libre (cualquiera
que sea el tipo de bloqueo), y a continuación, bloquearlo para escritura. Si quiere
leer, sólo tendrá que esperar si el elemento está bloqueado para escritura. Se dice,
por tanto, que el bloqueo de lectura es compartido y el de escritura exclusivo.
Tendremos por tanto tres operaciones; bloquear escritura(X), bloquear lectura(X) y
desbloquear(X).

5
Problemas del bloqueo en dos fases: interbloqueo y espera indefinida
El interbloqueo se produce cuando cada transacción T en un conjunto de dos o más
transacciones está esperando a algún elemento que está bloqueado por alguna otra
transacción T' de dicho conjunto. En este estado, cada transacción está parada en
espera a que otra transacción libere el recurso. Las condiciones para que se
produzca en interbloqueo son las siguientes:

1. Exclusión mutua. Cada elemento está bloqueado por una transacción, o está
libre.

2. Retención y espera: Una transacción que ya tiene elementos bloqueados puede


solicitar un elemento adicional, y esperar que se le asigne, sin devolver previamente
ninguno de los anteriores.

3. No apropiación: Sólo puede liberar un elemento la transacción que lo tiene


asignado; no se lo puede quitar otra transacción que tenga mayor prioridad, ni el
SGBD.

4. Espera circular: Existe una cadena circular, compuesta por dos transacciones o
más, y otros tantos elementos intercalados, de manera que cada proceso está
esperando que se le asigne un elemento, el cual, a su vez, está asignado al
siguiente proceso de la cadena.

5. Bloqueo mutuo o deadlock: Un proceso se encuentra en estado de deadlock si


está esperando por un suceso que no ocurrirá nunca. Se puede producir en la
comunicación de procesos y más frecuentemente en la gestión de recursos.

6
PROPIEDADES DE LA TRANSACCIÓN

Una unidad lógica de trabajo debe exhibir cuatro propiedades,


conocidas como propiedades ACID (atomicidad, coherencia,
aislamiento y durabilidad), para ser calificacada como transacción.

Atomicity: Una Transacción (X) se ejecuta completamente o de otra


manera se eliminan los cambios parciales realizados.

Begin Transacction: comentado anteriormente es donde inicia


la transacción.
Programa: realizas los cambios que deseas en la base de datos.
End Transacction: termina la transacción que acabas de realizar.

Responsable: El método de recuperación, de no completar todas las


operaciones, devuelve la BD a su estado anterior a empezar esa X
(rollback) se utiliza rollback cuando los cambios que utilizamos no
son los requeridos en la base de datos, dejándolos en un estado
original como si no se hubiera realizado ningún movimiento o cambio.

Coherencia: Asegura que los datos que observamos no cambian


(por otros usuarios) hasta que acabemos la Transacción.

Responsable: los programadores mediante la definición adecuada de


la integridad referencial: check, triggers, primary key, foreign key,…

Aislamiento: Los efectos de una X no son visibles a otros usuarios


mientras no se confirmen.

Una Transacción en ejecución no puede revelar sus resultados a


otras transacciones concurrentes antes de finalizar.

7
Más aun, si varias transacciones, se ejecutan consecuentemente los
resultados deben ser los mismos que si ellas se hubieran ejecutado
secuencialmente. Esto se conoce como seriabilidad debido a que su
resultado es la capacidad de volver a cargar los datos iniciales y
reproducir una serie de transacciones para finalizar con los datos en
el mismo estado en que estaban después de realizar transacciones
originales.

Durabilidad: Si el sistema falla no debe permitir que se pierdan las


operaciones realizadas por X ya confirmadas.

COMMIT: Finaliza la transacción actual y hace permanentes


(confirma) los cambios realizados dentro de la base de datos.

ROLLBACK: Finaliza la transacción actual y deshace los cambios


realizados si los datos ingresados no son los que se requerían dentro
de la base de datos.

8
Además, en las transacciones tenemos operaciones básicas (“leer
elemento”, “escribir elemento”), y cálculos sobre los datos leídos.

Iniciar TO
Las transacciones tienen otras
Leer (A)
propiedades “deseables” que
Leer (B)
verán mas adelante
A=A+B
B= B * 1.1
escribir (A)
escribir (B)
terminar TO
Sean T0 Y T1 dos transacciones

T0: T1
Leer (A) Leer (A)
A= A – 50 Temp = A * 0.1
Escribir (A) A = A – temp
Leer (B) Escribir (A)
B = B + 50 Leer (B)
Escribir (B) B= B + temp
Escribir (B)

Donde A y B son saldos de dos cuentas bancarias diferentes con valores de 1000 y 2000
BsF respectivamente A + B = 3000 BsF.

9
Cosas que pueden salir mal

10
11
12
GRADOS DE CONSISTENCIA
Consistencia es un término más amplio que el de integridad. Podría definirse como
la coherencia entre todos los datos de la base de datos. Cuando se pierde la
integridad también se pierde la consistencia. Pero la consistencia también puede
perderse por razones de funcionamiento.
Una transacción finalizada (confirmada parcialmente) puede no confirmarse
definitivamente (consistencia).

 Si se confirma definitivamente el sistema asegura la persistencia de los


cambios que ha efectuado en la base de datos.
 Si se anula los cambios que ha efectuado son deshechos.

La ejecución de una transacción debe conducir a un estado de la base de datos


consistente (que cumple todas las restricciones de integridad definidas).

 Si se confirma definitivamente el sistema asegura la persistencia de los


cambios que ha efectuado en la base de datos.
 Si se anula los cambios que ha efectuado son deshechos.

Una transacción que termina con éxito se dice que está comprometida (commited),
una transacción que haya sido comprometida llevará a la base de datos a un nuevo
estado consistente que debe permanecer incluso si hay un fallo en el sistema. En
cualquier momento una transacción sólo puede estar en uno de los siguientes
estados.

 Activa (Active): el estado inicial; la transacción permanece en este estado


durante su ejecución.

 Parcialmente comprometida (Un commited): Después de ejecutarse la


última transacción.

 Fallida (Failed): tras descubrir que no se puede continuar la ejecución


normal.
 Abortada (Rolled Back): después de haber retrocedido la transacción y
restablecido la base de datos a su estado anterior al comienzo de la
transacción.
 Comprometida (Commited): tras completarse con éxito.

13
Aspectos relacionados al procesamiento de transacciones
Los siguientes son los aspectos más importantes relacionados con el
procesamiento de transacciones:

 Modelo de estructura de transacciones. Es importante considerar si las


transacciones son planas o pueden estar anidadas.

 Consistencia de la base de datos interna. Los algoritmos de control de


datos semántico tienen que satisfacer siempre las restricciones de integridad
cuando una transacción pretende hacer un commit.

 Protocolos de confiabilidad. En transacciones distribuidas es necesario


introducir medios de comunicación entre los diferentes nodos de una red para
garantizar la atomicidad y durabilidad de las transacciones. Así también, se
requieren protocolos para la recuperación local y para efectuar los
compromisos (commit) globales.

 Algoritmos de control de concurrencia. Los algoritmos de control de


concurrencia deben sincronizar la ejecución de transacciones concurrentes
bajo el criterio de correctitud. La consistencia entre transacciones se
garantiza mediante el aislamiento de estas.

 Protocolos de control de réplicas. El control de réplicas se refiere a cómo


garantizar la consistencia mutua de datos replicados. Por ejemplo, se puede
seguir la estrategia read-one-write-all (ROWA).

14
NIVELES DE AISLAMIENTO

El nivel de aislamiento de una transacción determina qué datos de la transacción


pueden verse desde otra transacción que se está ejecutando concurrentemente.
SQL estándar define 4 niveles de aislamiento en términos de 3 fenómenos que
deben ser prevenidos entre transacción concurrentes. Estos son:

*DIRTY READ

*NONREPEATABLE READ

*PHANTOM READ

*REPEATABLE READ

DIRTY READ cuando la transacción accede a datos escritos por otra transacción
que aún no hace Commit.

NONREPEATABLE READ

cuando la transacción relee datos que ya ha leído previamente y encuentra que han
sido modificados por una transacción que ha hecho Commit después de la lectura
inicial.

PHANTOM READ

Una transacción re-ejecuta un query devolviendo un conjunto de filas que


satisfacen una condición de búsqueda y encuentra que han sido modificadas por
otra transacción que ha hecho Commit recientemente.

REPEATABLE READ

Este nivel es muy parecido al Read Committed, salvo que también puede ver
modificaciones a las que aún no se les ha hecho Commit dentro de la misma
transacción en que se está ejecutando. Las aplicaciones corriendo en este nivel
deben estar preparadas para reintentar transacciones debido a fallos de
serialización. Provee el mínimo de aislamiento que cualquier nivel debe proveer.

15
Isolation Level Dirty Read Nonrepeatable Read Phantom Read

Read uncommitted Possible

Read committed Not possible

Repeatable read Not possible Not possible

Serializable Not possible Not possible Not possible

Niveles de aislamiento
PostgreSQL ofrece Read Committed (default) y Serializable

READ COMMITED

Nivel de aislamiento por defecto de PostgreSQL, donde las modificaciones de otras


transacciones se ven si se terminaron con COMMIT antes de comenzar la consulta.
En caso de intentar cambiar un dato que otra transacción está cambiando, la actual
queda bloqueada hasta saber si proceder con el cambio (en caso de rollback) o si
volver a ejecutar la condición de consulta del cambio para comprobar que las filas
a cambiar aún la cumplen (en caso de commit).

16
17
SERIALIZABLE
Es la empleada por defecto en SQL estándar, solo se ven las modificaciones de otra
transacción que hayan sido aceptadas (COMMIT) al principio de la transacción
actual. PostgreSQL no tiene un nivel SERIALIZABLE real puesto que solo ve los
datos que han sido COMMIT antes de la primera consulta o modificación de datos.

18
COMMIT Y ROLLBACK
Commit
Esta instrucción de SQL se utiliza para confirmar como permanentes las
modificaciones realizadas en una transacción.Cuando se produce el
COMMIT, se hacen efectivos los cambios en los ficheros de datos (.mdf y
.ndf). Mientras no se realiza el COMMIT las sentencias de los cambios se
guardan en el log de transacciones (.ldf), que gracias a este es posible
revertir los cambios si fuese necesario.
Transacciones explicitas
Este tipo de transacciones son las que se definen en el código y hay que
indicar cuando se inicia con BEGIN TRANSACTION y cuando finaliza
COMMIT TRANSATION.

19
ROLLBACK
Es una operación que devuelve a la base de datos a algún estado previo.
Los Rollbacks son importantes para la integridad de la base de datos, a
causa de que significan que la base de datos puede ser restaurada a una
copia limpia incluso después de que se han realizado operaciones erróneas.

EJEMPLO
Guardar los cambias de una transacción si el numero máximo de productos
vendidos de un solo producto es menor que 1600 y si es mayor restablecer.

BEGIN TRANSACTION
if((SELECT SUM([Order Details].Quantity) FROM Products,[Order Details]
WHERE Products.ProductID = [Order Details].ProductID GROUP BY
Products.ProductName
HAVING SUM([Order Details].Quantity)=(SELECT MAX(QR.Cantidad)
FROM (SELECT Products.ProductName,SUM([Order Details].Quantity) AS
Cantidad FROM Products,[Order Details]
WHERE Products.ProductID = [Order Details].ProductID
GROUP BY Products.ProductName) AS QR))<1600)
COMMIT TRANSACTION
ELSE
ROLLBACK;

En SQL, ROLLBACK es un comando que causa que todos los cambios


de datos desde la última sentencia BEGIN WORK, o START
TRANSACTION sean descartados por el sistema de gestión de base de
datos relacional (RDBMS), para que el estado de los datos sea "rolled
back"(devuelto) a la forma en que estaba antes de que aquellos cambios
tuvieran lugar.

En muchos dialectos de SQL, ROLLBACKs son específicos de la


conexión. Esto significa que si se hicieron dos conexiones a la misma
base de datos, un ROLLBACK hecho sobre una conexión no afectará a
cualesquiera otras conexiones. Esto es vital para el buen
funcionamiento de la Concurrencia.

20
La funcionalidad de rollback está normalmente implementada con un
Log de transacciones, pero puede también estar implementada
mediante control de concurrencia multiversión.

Lo que agregamos aquí a este blog es que experiencia no hemos


tenido demasiada mas sin embargo podemos observar que
la información obtenida sobre los temas no es muy entendible y fácil de
realizar, gracias a que estos temas ya los vimos previos en clase
podemos observar que son los mismo parámetros que utilizamos en la
clase y los realizamos de manera manual y practica.

21
CONCLUSION

El presente trabajo fue realizado para obtener información sobre los


temas abordados del tema de concurrencia, se obtuvieron resultados
en las funciones como las transacciones las transacciones base de
datos delimitan un conjunto de operaciones de base de datos (es decir,
sentencias SQL), que son procesadas como un todo, de forma
que las operaciones que están incluidas dentro de esas transacciones
base de datos se validan (commit) o se cancelan (rollback) como una
única operación.

22

You might also like