ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Proteccion de Datos.

oscarPMApuntes31 de Enero de 2017

2.100 Palabras (9 Páginas)209 Visitas

Página 1 de 9

P r o t e c c i o n  d e  D a t o s

Transacciones.

¿Qué es una Transacció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. Representan eventos del mundo real.

UNIDAD LÓGICA DE TRABAJO

  •    Registrar un producto para ponerlo en venta por una empresa.
  •   Concertar la compra de un producto por un cliente.
  •   Dar de alta a un nuevo empleado o registrar un nuevo cliente.

Estas transacciones se deben realizar sobre la base de datos para que ésta siga siendo un fiel reflejo de la realidad.

Ejemplo:

Para entender el concepto de transacción considere una transacción bancaria que transfiere una cantidad de dinero  de la cuenta de una persona a otra, se requerirán por lo menos dos consultas:

UPDATE cuentas SET balance = balance - cantidad_transferida

WHERE cliente = persona1;

UPDATE cuentas SET balance = balance + cantidad_transferida

 WHERE cliente = persona2;

¿Qué sucede si ocurre algún imprevisto y "se cae" el sistema después de que se ejecuta la primera consulta, y la segunda aún no se ha completado?.

La persona1 tendrá una cantidad de dinero menos en su cuenta, y creerá que ha realizado su pago, sin embargo, la persona2 pensará que no se le ha depositado el dinero que le deben.

Propiedades de las Transacciones.

Se dice que toda Base de Datos debe cumplir con la prueba del ácido, denominada ACID (Atomicity, Consistency, Isolation, Durability). Estas propiedades son responsabilidad del SGBD.

Atomicity Garantiza que todas sus acciones sean realizadas o ninguna sea ejecutada.

Consistency Garantiza mantener el estado consistente de la base de datos.

Isolation Garantiza que cada transacción esté aislada del resto de las transacciones, una transacción no puede usar datos de otra transacción que todavía no ha sido completada.

Durability Garantiza que la transacción sea guardada permanentemente con independencia de cualquier tipo de fallo del sistema, o sea la transacción debe mantener la unidad de trabajo guardando los cambios que han hecho el commit o haciendo el Rollback de toda la transacción.

Estados de una Transacción:

Activa La transacción ha comenzado su ejecución.

Parcialmente cometida Justo después de ejecutar la última operación de la transacción.

Fracasada La transacción no puede seguir con la ejecución normal de sus operaciones.

Abortada La base de datos se deja como estaba justo antes de empezar la ejecución de la transacción. (después se reiniciará, fallo de hardware, de red, etc, ...) o se eliminará (fallo en la programación de la transacción, ...).

Cometida Las modificaciones realizadas por la transacción han quedado almacenadas de forma estable.

Esquema de Recuperación. 

Una transacción puede estar en uno de los siguientes estados.

[pic 1]

Desde el punto de vista del SGBD.

  •  Una transacción puede estar compuesta por varias operaciones.

  •  Una transacción lleva a la base de datos de un estado consistente a otro   estado consistente.
  •  Garantiza la consistencia de la base de datos incluso si se produce algún fallo.
  •  Si la transacción no se puede finalizar por cualquier motivo, garantiza que los cambios realizados por esta transacción sean deshechos.

Ejemplo

Registrar una venta a credito de 100 unidades de producto X al cliente Y por 500 pesos.

UPDATE PRODUCT
SET cantidad_prod = cantidad_prod - 100
WHERE codigo_prod = ‘X’;

UPDATE CLIENTE

SET balance_act = balance_act + 500
WHERE codigo_cl = ‘Y’;

  •   El estado es consistente solo si ambas transacciones son ejecutadas completamente.
  •   El SGBD no garantiza  que la transacción represente un evento del mundo real.

Administración de Transacciones con SQL.

Una transacción comienza cuando la primera instrucción SQL es encontrada, algunas versiones de SQL y algunos SGBD utilizan determinadas instrucciones.

SQL soporta las transacciones utilizando dos comandos:

  •   COMMIT Finaliza automáticamente la transacción. Cuando se ejecuta, se realizaron todos los cambios en la base de datos.
  •   ROLLBACK Cuando se ejecuta, todos los cambios son abortados y la base de datos regresa  a su estado original, manteniendo su estado consistente.

Cuando un programa finaliza satisfactoriamente es equivalente a alcanzar un COMMIT, si por el contrario no termina satisfactoriamente sería equivalente a un ROLLBACK.

Fichero de Transacciones Log.

Los SGBD utilizan la transacción Log para guardar todas las transacciones que modifican la base de datos.

En toda base de datos de SQL Server hay al menos dos ficheros:

1- El fichero de base de datos, donde estarán almacenados los datos de nuestras tablas (y demás objetos).

2- El fichero de transacciones, que consiste en una serie de registros de todas las modificaciones de la base de datos y de la transacción que ha realizado cada modificación. En el registro de transacciones figura el inicio de cada transacción,  los cambios de los datos y facilita suficiente información para deshacer las modificaciones (si fuera necesario posteriormente) realizadas durante cada transacción.

Control de Concurrencia.

Coordinación de la ejecución de transacciones que se ejecutan simultáneamente.

Objetivos:

Garantizar la secuencia de ejecución de transacciones que se ejecutan simultáneamente, permitiendo mantener la consistencia de la base de datos.

Problemas de la concurrencia:

La ejecución simultánea de transacciones sobre una base de datos compartida puede crear diferentes problemas en la integridad y consistencia de los datos.

¿Cuáles pueden ser estos problemas?

Actualizaciones Perdidas.     

Analice el siguiente ejemplo:

Suponga que en la Tabla PRODUCTO se tiene Cantidad_prod = 35

Ocurren las transacciones T1 y T2 de forma concurrente tratando de actualizar el valor de cantidad_prod.

La siguiente tabla muestra el problema que ocurre al ejecutarse las transacciones de forma concurrente.

Actualización Perdida.

TIME

TRANSACCIÓN

PASOS

VALOR ALMACENADO

1

T1

Leer Cantidad_prod

35

2

T2

Leer Cantidad_prod

35

3

T1

Cantidad_prod = 35 + 100

4

T2

Cantidad_prod = 35 - 30

 

5

T1

Escribe cantidad_prod

(Actualización Perdida)

135

6

T2

Escribe cantidad_prod

5

Cuál es el problema ?

Una transacción T2 está tratando de leer el valor Cantidad_prod, antes de que otra transacción T1, accediendo al mismo valor, haya sido acometida. Por lo tanto T2 opera sobre el valor 35 y está sustrayendo 35 unidades, mientras tanto T1 escribe el valor 135 (valor perdido), el cual es rápidamente sobrescrito por T2. La adición de las 100 unidades se pierden.

Recuperación Inconsistente:

Ocurre cuando una transacción calcula algún resumen sobre un dato, mientras  otras transacciones están actualizando el dato. Una transacción puede leer ciertos datos antes de que se cambien y otros datos después que hayan sido cambiados, produciendo  resultados inconsistentes

...

Descargar como (para miembros actualizados) txt (14 Kb) pdf (108 Kb) docx (22 Kb)
Leer 8 páginas más »
Disponible sólo en Clubensayos.com