Transacciones en Base de Datos

INSTITUTO TECNOLOGICO DE IGUALA Materia: Base de Datos Distribuidas Nombre del Profesor: José Luis Zagal Arce Integrante

Views 137 Downloads 66 File size 698KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

INSTITUTO TECNOLOGICO DE IGUALA Materia: Base de Datos Distribuidas Nombre del Profesor: José Luis Zagal Arce Integrantes del Equipo. Ma. Alejandra Tapia Hernández

12670092

Oswaldo Valladares Zavaleta

12670091

Dulce Rocío Dimas Figueroa

12670153

Dency Aurora Padilla Jaimes

10670249

Antonio Rodríguez Rosas

12670152

David Emmanuel Valle Abarca

12670035

UNIDAD 5

Aula: E-6

7° Semestre

Ingeniería en Sistemas Computacionales

Turno Matutino

Iguala de la Independencia a 30 de Noviembre del 2015

Base de Datos Distribuidas

Contenido INTRODUCCION .................................................................................................................................. 3 DEFINICIÓN. ........................................................................................................................................ 3 CARACTERISTICAS ............................................................................................................................... 3 Propiedades de las transacciones ...................................................................................................... 3 Operaciones de una transacción ........................................................................................................ 4 Estados de una Transacción ............................................................................................................... 4 Tipos de transacciones ....................................................................................................................... 5 Función del manejador ....................................................................................................................... 5 CONCLUSIONES ................................................................................................................................. 11 BIBLIOGRAFIA ................................................................................................................................... 11

2|Página

Base de Datos Distribuidas

INTRODUCCION En este tema abarcaremos las transacciones dentro de una Base de datos el cual debe completarse hasta el final sin tener ningún fallo dentro de las operaciones, cualquier cambio realizado se verá reflejado al conocer el resultado. Así como también cuales son los tipos de transacciones y todo lo que engloba un proceso de transacción, con sus respectivas propiedades.

1. transacciones Un sistema transaccional es aquel que asegura que una unidad de trabajo se realice completamente o que no tenga efecto. El manejo de transacciones librea al programador de la responsabilidad de ocuparse del acceso a datos, incluyendo modificaciones concurrentes en los datos, tolerancia a fallas y programación multiusuario.

DEFINICIÓN. Una transacción es una secuencia de una o más operaciones agrupadas como una unidad. El inicio y el final de la transacción definen los puntos de consistencia de la base de datos. Si una acción de la transacción no se puede ejecutar, entonces ninguna acción dentro de la secuencia que conforma la transacción tendrá efecto.

CARACTERISTICAS  Datos que utiliza la transacción  Características funcionales de la transacción  Salida de la transacción  Importancia para los usuarios  Frecuencia de utilización

Propiedades de las transacciones 

Atomicidad: Una transacción es una unidad atómica de procesamiento, esta se realiza o no se realiza.

3|Página

Base de Datos Distribuidas 

Consistencia: Si se ejecuta una transacción sobre un estado consistente, el resultado será un nuevo estado consistente.



Aislamiento: Una transacción no hará visibles sus modificaciones a otras transacciones hasta que termine de ejecutarse completamente. Es decir, una transacción desconoce si otras transacciones se estén ejecutando en el sistema.



Durabilidad: Una vez una transacción se ejecuta exitosamente y realiza cambios sobre el sistema, estos cambios nunca se deben perder a causa de fallas en el sistema.

Operaciones de una transacción 

Inicio de Transacción: Operación que marca el momento en el que una transacción comienza a ejecutarse.



Leer o Escribir: Operaciones de lectura/escritura de elementos de la base de datos.



Fin de la Transacción: Se verifica si la transacción debe abortarse por alguna razón.



Confirmar (COMMIT): La operación termino con éxito.



Abortar (ROLLBACK): La transacción termino sin éxito.

Estados de una Transacción Transacción Activa (Active): se encuentra en este estado justo después de iniciar su ejecución. 

Transacción Parcialmente Confirmada (Uncommited): en este punto, se efectúan diferentes operaciones de verificación para asegurar que la transacción no interfiera con otras transacciones en ejecución.



Transacción Confirmada (Commited): Ha concluido su ejecución con éxito.



Transacción Fallida (Failed): En este caso, es posible que la transacción deba ser cancelada.



Transacción Terminada (Rolled Back): indica que la transacción ha abandonado el sistema. (Monografias, s.f.)

4|Página

Base de Datos Distribuidas

Tipos de transacciones Una transacción puede clasificarse de diferentes maneras dependiendo básicamente de tres criterios: 1. Áreas de aplicación. En primer lugar, las transacciones se pueden ejecutar en aplicaciones no distribuidas. Las transacciones que operan en datos distribuidos se les conoce como transacciones distribuidas. Por otro lado, dado que los resultados de una transacción que realiza un commit son durables, la única forma de deshacer los efectos de una transacción con commit es mediante otra transacción. A este tipo de transacciones se les conoce como transacciones compensatorias. Finalmente, en ambientes heterogéneos se presentan transacciones heterogéneas sobre los datos. 2. Tiempo de duración. Tomando en cuenta el tiempo que transcurre desde que se inicia una transacción hasta que se realiza un commit o se aborta, las transacciones pueden ser de tipo batch o en línea. Estas se pueden diferenciar también como transacciones de corta y larga vida. Las transacciones en línea se caracterizan por tiempos de respuesta muy cortos y por acceder una porción relativamente pequeña de la base de datos. Por otro lado, las transacciones de tipo batch toman tiempos relativamente largos y accedan grandes porciones de la base de datos. 3. Estructura. Considerando la estructura que puede tener una transacción se examinan dos aspectos: si una transacción puede contener a su vez sub-transacciones o el orden de las acciones de lectura y escritura dentro de una transacción. (Capitulo 5, s.f.)

Función del manejador El manejador de transacciones es el encargado de definir la estructura de las transacciones, mantener la consistencia en la base de datos cuando se ejecuta una transacción o se cancela la ejecución de una, mantener protocolos de fiabilidad, implementar algoritmos para el control de la concurrencia y sincronizar las transacciones que se ejecutan simultáneamente. El manejador recibe solicitudes de procesamiento de transacciones y las traduce en acciones para el calendarizador. Commit. Una transacción siempre termina, en la presencia de fallas. Sin ninguna de las operaciones englobadas por una transacción hace efectivas las modificaciones realizadas por

5|Página

Base de Datos Distribuidas las operaciones que involucra, llevando el sistema a un nuevo estado consistente. A este proceso se le conoce como hacer un commit. Rollback. Si existe por lo menos una falla dentro de las operaciones de una transacción, se dice que esta aborta. Su ejecución es detenida y todas las operaciones ejecutadas hasta el momento del error son deshechas, regresando la base de datos al estado consistente en que se encontraban antes de iniciar la transacción. A esta operación se le conoce como hacer un rollback.

(Wikipedia, 2015)

EJEMPLO Las transacciones representan eventos del mundo real como: Una compra puede ser una transacción que conste de dos operaciones: 1. Insertar un registro del pago del producto. 2. Insertar el producto en el inventario. No se debe insertar un producto que no se haya pagado, ni pagar un producto que no esté en el inventario, por lo tanto, las dos operaciones forma una transacción.

6|Página

Base de Datos Distribuidas Los pasos para usar transacciones en MySQL son: 

Iniciar una transacción con el uso de la sentencia BEGIN.



Actualizar, insertar o eliminar registros en la base de datos.



Si se quieren los cambios a la base de datos, completar la transacción con el uso de la sentencia COMMIT. Únicamente cuando se procesa un COMMIT los cambios hechos por las consultas serán permanentes.



Si sucede algún problema, podemos hacer uso de la sentencia ROLLBACK para cancelar los cambios que han sido realizados por las consultas que han sido ejecutadas hasta el momento.

Vamos a ejecutar algunas consultas para ver cómo trabajan las transacciones. Lo primero que tenemos que hacer es crear una tabla del tipo InnoDB e insertar algunos datos. Para crear una tabla InnoDB, procedemos con el código SQL estándar CREATE TABLE, pero debemos especificar que se trata de una tabla del tipo InnoDB (TYPE= InnoDB). Esto es aplicable a cualquier tipo de tabla, pero cuando no se especifica nada, MySQL supone que se trata de una tabla MyISAM. mysql> CREATE TABLE innotest (campo INT NOT NULL PRIMARY KEY) TYPE = InnoDB; Query OK, 0 rows affected (0.10 sec)

mysql> INSERT INTO innotest VALUES(1); Query OK, 1 row affected (0.08 sec)

mysql> INSERT INTO innotest VALUES(2); Query OK, 1 row affected (0.01 sec)

mysql> INSERT INTO innotest VALUES(3); Query OK, 1 row affected (0.04 sec)

mysql> SELECT * FROM innotest; +-------+ | campo | +-------+ |

1 |

7|Página

Base de Datos Distribuidas

|

2 |

|

3 |

+-------+ 3 rows in set (0.00 sec)

De acuerdo, nada espectacular. Ahora veamos cómo usar transacciones. mysql> BEGIN; Query OK, 0 rows affected (0.01 sec)

mysql> INSERT INTO innotest VALUES(4); Query OK, 1 row affected (0.00 sec)

mysql> SELECT * FROM innotest; +-------+ | campo | +-------+ |

1 |

|

2 |

|

3 |

|

4 |

+-------+ 4 rows in set (0.00 sec)

Si en este momento ejecutamos un ROLLBACK, la transacción no será completada, y los cambios realizados sobre la tabla no tendrán efecto. mysql> ROLLBACK; Query OK, 0 rows affected (0.06 sec)

mysql> SELECT * FROM innotest; +-------+ | campo | +-------+ |

1 |

8|Página

Base de Datos Distribuidas

|

2 |

|

3 |

+-------+ 3 rows in set (0.00 sec)

Ahora vamos a ver qué sucede si perdemos la conexión al servidor antes de que la transacción sea completada. mysql> BEGIN; Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO innotest VALUES(4); Query OK, 1 row affected (0.00 sec)

mysql> SELECT * FROM innotest; +-------+ | campo | +-------+ |

1 |

|

2 |

|

3 |

|

4 |

+-------+ 4 rows in set (0.00 sec)

mysql> EXIT; Bye

Cuando obtengamos de nuevo la conexión, podemos verificar que el registro no se insertó, ya que la transacción no fue completada. Welcome to the MySQL monitor.

Commands end with ; or g.

Your MySQL connection id is 449 to server version: 4.0.13

Type 'help;' or 'h' for help. Type 'c' to clear the buffer.

9|Página

Base de Datos Distribuidas

mysql> SELECT * FROM innotest; +-------+ | campo | +-------+ |

1 |

|

2 |

|

3 |

+-------+ 3 rows in set (0.00 sec)

Ahora vamos a repetir la sentencia INSERT ejecutada anteriormente, pero haremos un COMMIT antes de perder la conexión al servidor al salir del monitor de MySQL. mysql> BEGIN; Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO innotest VALUES(4); Query OK, 1 row affected (0.00 sec)

mysql> COMMIT; Query OK, 0 rows affected (0.02 sec)

mysql> EXIT; Bye

Una vez que hacemos un COMMIT, la transacción es completada, y todas las sentencias SQL que han sido ejecutadas previamente afectan de manera permanente a las tablas de la base de datos. Welcome to the MySQL monitor.

Commands end with ; or g.

Your MySQL connection id is 450 to server version: 4.0.13

Type 'help;' or 'h' for help. Type 'c' to clear the buffer.

10 | P á g i n a

Base de Datos Distribuidas

mysql> SELECT * FROM innotest; +-------+ | campo | +-------+ |

1 |

|

2 |

|

3 |

|

4 |

+-------+ 4 rows in set (0.00 sec)

CONCLUSIONES Para finalizar con el tema se mostró a detalle un poco sobre las transacciones dentro del campo de Base de Datos, y así tener una idea de cómo es que se estructura y cuáles son las acciones que se encuentran dentro de ella. Conociendo mejor sobre las transacciones enfocándolo al manejador de MySQL.

BIBLIOGRAFIA Capitulo 5. (s.f.). Obtenido de Transacciones Distribuidas: http://132.248.9.195/pd2006/0606805/A8.pdf Monografias. (s.f.). Obtenido de Manejo de Transacciones: http://www.monografias.com/trabajos96/manejo-transacciones/manejotransacciones.shtml Wikipedia. (25 de Noviembre de 2015). Obtenido de Base de Datos Distribuidas: https://es.wikipedia.org/wiki/Bases_de_datos_distribuidas

11 | P á g i n a