Want to create interactive content? It’s easy in Genially!
Control de Concurrencia y Transacciones
Nicolas Orozco Jimenez
Created on March 29, 2023
En esta presentacion se muestra informacion breve sobre el control de cocurrencia de una base de datos
Start designing with a free template
Discover more than 1500 professional designs like these:
View
Vaporwave presentation
View
Animated Sketch Presentation
View
Memories Presentation
View
Pechakucha Presentation
View
Decades Presentation
View
Color and Shapes Presentation
View
Historical Presentation
Transcript
Bases De Datos
Control de Concurrencia Y Transacciones.
Orozco Jiménez Nicolás
M.T.I. Gersai Pérez Osorio
Control de Concurrencia Y Transacciones.
Introducción
Las bases de datos son una herramienta fundamental en el mundo de la informática, ya que permiten el almacenamiento y gestión de grandes cantidades de información. Sin embargo, en entornos en los que varios usuarios acceden a una misma base de datos al mismo tiempo, es necesario garantizar la integridad y consistencia de los datos, lo que puede lograrse mediante el control de concurrencia y transacciones. El control de concurrencia se refiere a la gestión de los accesos concurrentes a la base de datos, mientras que las transacciones se utilizan para asegurar la integridad y consistencia de los datos. En esta presentación se profundizará en estos conceptos y se describirán algunas de las técnicas más utilizadas para implementar el control de concurrencia y transacciones en una base de datos.
¿Qué es?
Concurrencia: La concurrencia se refiere a la capacidad de varios usuarios para acceder a los mismos datos al mismo tiempo. Cuando varios usuarios intentan acceder y modificar la misma información al mismo tiempo, pueden ocurrir conflictos que afecten la integridad de los datos. Por lo tanto, es importante implementar mecanismos para garantizar que la concurrencia se gestione adecuadamente.
Transacciones: Una transacción es una secuencia de operaciones que se realizan en una base de datos, y que deben ser tratadas como una unidad indivisible. Si una de las operaciones falla, la transacción completa debe ser revertida para garantizar la integridad de los datos. Por lo tanto, es importante implementar mecanismos para garantizar la atomicidad, consistencia, aislamiento y durabilidad de las transacciones (ACID).
Tecnica De Control de Concurrecia
La técnica de control de concurrencia es una parte esencial de la gestión de bases de datos. Su objetivo es asegurar que varias transacciones que intentan acceder simultáneamente a la misma información en una base de datos se ejecuten de manera segura y sin errores. Para lograr esto, se utilizan varios métodos de control de concurrencia, como el bloqueo de registros, la serialización de transacciones, el control de versiones, entre otros. Estas técnicas se aplican en diferentes niveles, como a nivel de base de datos, a nivel de tabla y a nivel de registro, para garantizar la integridad de los datos y evitar problemas como la inconsistencia y las condiciones de carrera.
Bloqueo (Locking): Esta técnica es la más comúnmente utilizada en la gestión de concurrencia en las bases de datos. Consiste en bloquear los recursos de la base de datos (como filas o tablas) que son utilizados por una transacción, impidiendo así que otras transacciones puedan acceder a ellos hasta que el bloqueo sea liberado.
Control de versiones (Versioning): Esta técnica mantiene múltiples versiones de un mismo objeto en la base de datos. Cada transacción trabaja con su propia versión del objeto, y cuando la transacción finaliza, la versión actualizada se fusiona con la versión global. Esto asegura que varias transacciones puedan trabajar con el mismo objeto sin bloquear el acceso a otros.
Estampado de tiempo (Timestamping): Esta técnica utiliza marcas de tiempo para controlar la concurrencia. Cada transacción se registra con un momento de inicio y fin, y se utiliza un orden de tiempo para determinar qué transacción debe ejecutarse primero.
Validación de transacciones (Transaction validation): Esta técnica utiliza reglas de validación para asegurarse de que las transacciones no interfieran entre sí. Antes de ejecutar una transacción, se comprueba si esta transacción cumple con las reglas de validación establecidas. Si se cumplen las reglas, se permite la ejecución de la transacción, de lo contrario se rechaza y se revierte cualquier cambio realizado por la transacción.
Multiversión (Multiversion concurrency control - MVCC): Esta técnica es similar al control de versiones, pero se utiliza en bases de datos distribuidas. Cada nodo de la base de datos mantiene su propia versión de los datos, y las transacciones pueden trabajar con diferentes versiones de los mismos datos sin bloquear el acceso a otros nodos.
Ejemplos de Control de Cocurrencia Y Donde se Usan
Cajero Automatico: Cuando varios usuarios realizan transacciones en un cajero automático al mismo tiempo, puede haber un problema de concurrencia. Las técnicas de control de concurrencia se utilizan para garantizar que las transacciones se procesen correctamente y que el saldo de la cuenta se actualice adecuadamente.
Reservas de Vuelo: Cuando un usuario reserva un vuelo en línea, la información de la reserva se guarda en una base de datos. Si varios usuarios intentan reservar el mismo vuelo al mismo tiempo, puede haber un problema de concurrencia en la base de datos. Las técnicas de control de concurrencia se utilizan para garantizar que cada reserva se procese correctamente y que no se pierda información.
sistema de control de inventario: Cuando varios usuarios intentan actualizar el inventario de una tienda al mismo tiempo, puede haber un problema de concurrencia en la base de datos. Las técnicas de control de concurrencia se utilizan para garantizar que las actualizaciones se procesen correctamente y que el inventario se mantenga actualizado y preciso.
Sistema de reservas en hoteles: Cuando un usuario realiza una reserva en línea en un hotel, la información se guarda en una base de datos. Si varios usuarios intentan reservar la misma habitación al mismo tiempo, puede haber un problema de concurrencia en la base de datos. Las técnicas de control de concurrencia se utilizan para garantizar que cada reserva se procese correctamente y que no se pierda información.
Pasos a Seguir para la implementacion en la bases de datos
- Definir las transacciones: Antes de comenzar a implementar la transacción y el control de concurrencia, es importante definir qué operaciones se considerarán una transacción completa en la base de datos. Una transacción suele ser un conjunto de operaciones que se realizan juntas y se consideran como una sola entidad.
- Establecer un modelo de control de concurrencia: El modelo de control de concurrencia determina cómo se gestionará el acceso a los datos compartidos entre varias transacciones en la base de datos. Algunos de los modelos más comunes son el de bloqueo, el de estampado temporal, y el de control de versiones.
- Implementar el modelo de control de concurrencia: Una vez que se ha elegido el modelo de control de concurrencia, se deben implementar los mecanismos que permitirán su funcionamiento. Por ejemplo, si se ha elegido el modelo de bloqueo, se deben implementar los mecanismos para adquirir y liberar bloqueos.
- Establecer puntos de guardado y restauración: Los puntos de guardado son puntos en el proceso de transacción donde se registran los datos que se han modificado hasta ese momento. En caso de que la transacción no se pueda completar, se pueden utilizar los puntos de guardado para restaurar los datos a su estado anterior.
- Establecer un mecanismo de rollback: Si una transacción no se puede completar correctamente, se debe tener un mecanismo de rollback que permita revertir todas las operaciones realizadas en la transacción y restaurar los datos a su estado anterior.
- Probar y ajustar: Una vez implementados los mecanismos de transacción y control de concurrencia, es importante realizar pruebas exhaustivas para asegurarse de que funcionan correctamente. Si se identifican problemas, se deben ajustar los mecanismos para resolverlos.
Ejemplo de SQL Server sobre implementacion utilizando Modelo de estampado Temporal.
Ejemplo de SQL Server sobre implementacion utilizando modelo de bloqueo.
BEGIN TRANSACTION; # Adquirir un bloqueo exclusivo sobre la tabla "usuarios" LOCK TABLE usuarios IN EXCLUSIVE MODE; # Realizar operaciones en la tabla "usuarios" UPDATE usuarios SET nombre = 'Juan' WHERE id = 1; # Establecer un punto de guardado SAVEPOINT punto_guardado; # Realizar más operaciones en la tabla "usuarios" UPDATE usuarios SET apellido = 'Pérez' WHERE id = 2; # Comprobar si se puede realizar commit o rollback IF (condición) THEN COMMIT; ELSE # Utilizar rollback para restaurar los datos a su estado anterior ROLLBACK TO SAVEPOINT punto_guardado; END IF; # Liberar el bloqueo sobre la tabla "usuarios" UNLOCK TABLE usuarios;
BEGIN TRANSACTION; # Establecer un estampado temporal para la transacción TIMESTAMP estampado_temporal = GET_CURRENT_TIMESTAMP(); # Realizar operaciones en la tabla "usuarios" UPDATE usuarios SET nombre = 'Juan' WHERE id = 1; # Establecer el estampado temporal en los registros afectados UPDATE usuarios SET estampado_temporal = estampado_temporal WHERE id = 1; # Realizar más operaciones en la tabla "usuarios" UPDATE usuarios SET apellido = 'Pérez' WHERE id = 2; # Establecer el estampado temporal en los registros afectados UPDATE usuarios SET estampado_temporal = estampado_temporal WHERE id = 2; # Comprobar si se puede realizar commit o rollback IF (condición) THEN # Hacer efectivos los cambios estableciendo el estampado temporal COMMIT; ELSE # Utilizar rollback para restaurar los datos a su estado anterior # eliminando los cambios que no se han establecido aún DELETE FROM usuarios WHERE estampado_temporal = estampado_temporal; END IF;
¡GRACIAS!