Subido por Alexis Montalvo

Bases de datos distribuidas

Taller de Bases de Datos
Unidad 5 Concurrencia
Talle de bases
de Datos
5.1 Conceptos
Procesamiento de transacciones:
• Operaciones de negocios sobre datos
compartidos
• Garantizan consistencia y disponibilidad
• Acciones complejas como unidad
• Escalabilidad
• Seguridad
5.1 Conceptoss
Talle de bases
de Datos
Transacciones:
Una transacción es una colección de acciones que transforman el
estado de los datos mientras que preservan la consistencia de los
mismos.
Base de datos
en estado
consistente
Inicio
La base de datos
puede estar en
un estado
inconsistente
durante la
ejecución
Ejecución de la transacción
Base de datos
en estado
consistente
Fin
Talle de bases
de Datos
5.1 Conceptos
Las transacciones proveen:
• Ejecucion atómica y confiable en caso de fallas
• Correcta ejecución en casos de múltiples
accesos.
• Correcta administración de réplicas (si son
soportadas).
Talle de bases
de Datos
5.2 Propiedades de Transacciones
Propiedades:
• Atomicidad
– Todo o nada
• Consistencia
– No hay violación de las limitantes de integridad
• Aislamiento
– Cambios concurrenes, indivisibles y
serializables
• Durabilidad
– Persistencia de actualizaciones comprometidas
Talle de bases
de Datos
5.2 Propiedades de Transacciones
Atomicidad:
• Todas o ninguna de las operaciones de transacción
son efectuadas.
• La atomicidad necesita en el caso que se
interrumpa una transacción por una falla, los
resultados parciales deben ser deshechos.
• La actividad de preservar la atomicidad de la
transacción en presencia de abortos debidos a
fallas de introducción de datos, sobrecargas del
sistema, o fechas expiradas se llama recuperación
de transacción.
• La actividad de asegurar la transacción en fallas
del sistema se llama “crash recovery”.
Talle de bases
de Datos
5.2 Propiedades de Transacciones
Consistencia:
• Consistencia Interna
– Una transacción que se ejecuta sola contra una
base de datos consistente, se queda en un
estado consistente.
– Las transacciones no deben violar las
restricciones de integridad de la base de datos.
• Las transacciones son programas correctos.
Talle de bases
de Datos
5.2 Propiedades de Transacciones
Aislamiento:
• Serialidad
Si varias transacciones son efectuadas al mismo
tiempo, el resultado debe ser igual que si se
efectuaran en un orden.
• Resultados Incompletos
Una transacción incompleta no puede revelar sus
resultados.
Es necesario evitar los abortos en cascada.
Talle de bases
de Datos
5.3 Grados de consistencia
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).
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. 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 (Uncommited): 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.
Talle de bases
de Datos
5.4 Niveles de aislamiento
Se obliga el control de la concurrencia usando seguros. Hay tres clases
de seguros que pueden ser usados:
* Seguro Exclusivo : Ningún otro seguro puede ser ubicado en los datos
que tienen un seguro exclusivo.
* Seguro Compartido : Los seguros compartidos son ubicados por los
procesos de lectura de datos. Un seguro compartido no puede ser puesto
en datos que tienen un seguro exclusivo. Más de un seguro compartido es
permitido en los datos.
* Seguro Actual: este seguro es similar al seguro compartido, excepto
que este puede ser gestionado después a seguro exclusivo.
Talle de bases
de Datos
5.4 Niveles de aislamiento
El estándar ANSI/ISO SQL define cuatro niveles de aislamiento
transaccional en función de tres eventos que son permitidos o no
dependiendo del nivel de aislamiento. Estos eventos son:
Talle de bases
de Datos
5.4 Niveles de aislamiento
Lectura Sucia ( dirty read )
En el nivel de aislamiento ' Lectura Sucia ', los procesos no están
completamente aislados. El proceso no verifica la existencia de algún seguro
antes de leer una fila. Durante la recuperación, se puede examinar cualquier
fila, aunque éstas contengan cambios inconclusos. Tales filas son conocidas
como ' Datos Sucios.
Una fila fantasma es una fila que ha sido insertada en una transacción, la
cual es después ejecutada antes de que la transacción finalize. Si bien, la fila
fantasma nunca existió en forma permanente, esta podría haber sido visible
para un proceso usando un nivel de aislamiento de ' Lectura Sucia' .
El nivel ' Lectura Sucia' puede ser útil cuando :
* La tabla es estática
* El 100% de exactitud, no es tan importante como la velocidad y la
imnunidad contra las contiendas.
Talle de bases
de Datos
5.4 Niveles de aislamiento
Lectura Terminada ( committed read )
Una ' Lectura Terminada' intenta adquirir un seguro compartido en una fila
antes de tratar de leerla. No se trata de actualizar en un seguro, más bien de
adquirirlo. Esto garantiza que una fila no esté siendo actualizada por otro
proceso mientras se lee. No se debe olvidar, que un seguro compartido no
puede ser adquirido en una fila que está asegurada exclusivamente, el cual
es siempre el caso cuando una fila está siendo actualizada.
Con ' Lectura Terminada' se puede tener un nivel bajo de aislamiento.
Durante una recuperación no se podrían observar datos fantasmas o sucios.
Después de que un proceso ha leído la fila, otro proceso puede cambiarla.
La ' Lectura Terminada' puede ser útil para :
* Exploraciones ( lookups )
* Consultas
* Reportes que proporcionan información general
Por ejemplo, la ' Lectura Terminada' es útil para reportes generales, tales
como análisis de ventas a fin de mes.
Talle de bases
de Datos
5.4 Niveles de aislamiento
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
* Exploraciones, * Consultas, * Reportes que permitan la operación de datos
Por ejemplo, los SELECTs que usan ' Posicionador Estable' son útiles para
describir tipos de reportes como cotizaciones.
Si el nivel de aislamiento de ' Posicionador Estable' es puesto y ningún
posicionador es usado, entonces éste funciona como un nivel de ' Lectura
Terminada'.
Talle de bases
de Datos
5.4 Niveles de aislamiento en MySQL
Los niveles de aislamiento de transacciones SQL:1992, el nivel
predeterminado en InnoDB es REPEATABLE READ. En MySQL
5.0, InnoDB ofrece los cuatro niveles de aislamiento de transacciones
descriptos por el estándar SQL.
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
READ COMMITTED
REPEATABLE READ
SERIALIZABLE
Talle de bases
de Datos
5.5 Problemas de Transacciones
1.
Problema de actualización perdida
Ocurre cuando dos programas leen los mismos datos y utilizan los datos como base para
un calculo y luego tratan de actualizar. Ejemplo: Inventarios.
Talle de bases
de Datos
5.5 Problemas de Transacciones
2.
Problema de Datos no confirmados
Ocurre cuando un programa tiene permiso para ver las actualizaciones no confirmadas de
otro y ha actuado sobre ellas. Produciendo resultados erróneos.
Talle de bases
de Datos
5.5 Problemas de Transacciones
3.
Problema de Datos Inconsistentes
Ocurre cuando un programa puede ver actualizaciones confirmadas de otro programa
que ya había examinado.
Talle de bases
de Datos
5.5 Problemas de Transacciones
4.
Problema de la inserción fantasma
Datos inconsistentes debido a una consulta realizada dos veces durante una transacción
produce resultados diferentes.
Talle de bases
de Datos
Practica 5
PRACTICA DE MANEJO DE TRANSACCIONES
1.- Desarrollar cuatro procedimientos almacenados
a) HacerCompra
parametros; orderid, productid, quantity
b) Existencia
parametros; productid
c) TotalProductos
parametros: ninguno
d) BloquearInsercion
parámetro: ninguno.
2.- Tener lista una instrucción de inserción de producto sobre la tabla Products.