UNIVERSIDAD CRISTIANA NUEVO MILENIO FACULTAD DE
INGENIERIA EN SISTEMAS INFORMATICOS
Laboratorio de Base de Datos
Tema:
Conceptos teóricos transacciones
Presentado por:
114140075bb José Nahúm Díaz Santos
120270026 Nayeli Alexandra Valle
118550132 Ceida Dinora Morales
221010002 Alejandrina Salgado Meléndez
120630073 Luis Andrés Maldonado Chavarría
116350069 Yefri Hernández Ruiz
119600014 Jennifer Paola Arias Ávila
Nombre de Docente:
Ing. Karen Melissa Girón Castillo
Plataforma Virtual de Aprendizaje (PVA)
02/07/2024 Honduras C.A
Guía de trabajo
Lab. Base de datos
Tema: Conceptos teóricos transacciones
1. ¿Qué es una transacción en base de datos?
Una transacción en base de datos es una secuencia de operaciones que se
realiza como una unidad indivisible de trabajo. Esto significa que todas las
operaciones dentro de una transacción deben completarse correctamente; si
alguna falla, toda la transacción se deshace para mantener la integridad de la
base de datos.
2. ¿Cómo funciona una transacción en base de datos?
Una transacción comienza con la ejecución de una serie de operaciones
(inserciones, actualizaciones, eliminaciones). Durante este proceso, la base de
datos asegura que las operaciones se realicen de manera segura y sin afectar
otras transacciones concurrentes. Una transacción puede terminar de dos
maneras:
Commit: Si todas las operaciones se completan con éxito, la transacción se
confirma y los cambios se hacen permanentes en la base de datos.
Rollback: Si alguna operación falla, la transacción se revierte y se
deshacen todos los cambios realizados durante la transacción.
3. ¿Cuáles son las propiedades de las transacciones en base de datos?
Las transacciones en bases de datos tienen cuatro propiedades fundamentales
conocidas como ACID:
Atomicidad: Todas las operaciones dentro de una transacción se
consideran una sola unidad. Si una operación falla, toda la transacción falla
y se revierte.
Consistencia: Una transacción lleva la base de datos de un estado
consistente a otro estado consistente.
Aislamiento: Las transacciones concurrentes no se ven afectadas entre sí.
El resultado es el mismo que si las transacciones se ejecutaran
secuencialmente.
Durabilidad: Una vez que una transacción se ha confirmado (commit), los
cambios son permanentes, incluso en caso de fallos del sistema.
4. ¿Cómo es el ciclo de vida de una transacción?
El ciclo de vida de una transacción típicamente sigue estos pasos:
Inicio: La transacción comienza.
Ejecución: Se realizan las operaciones de la transacción.
Commit: Si todas las operaciones se completan con éxito, la transacción se
confirma.
Rollback: Si alguna operación falla, la transacción se revierte.
Finalización: La transacción finaliza, y la base de datos vuelve a un estado
de espera para la siguiente transacción.
5. ¿Por qué es importante el uso de transacciones en una base de
datos?
Las transacciones son importantes porque garantizan la integridad y
consistencia de la base de datos. Aseguran que las operaciones sean
atómicas y consistentes, permiten el aislamiento de transacciones
concurrentes y garantizan la durabilidad de los datos.
6. De ejemplos de operaciones en base de datos que pueden formar
parte de una transacción
Transferencia de fondos entre cuentas bancarias.
START TRANSACTION;
-- Suponemos que tenemos una tabla "accounts" con columnas
"account_id" y "balance".
-- Transferir 100 unidades de la cuenta 1 a la cuenta 2
UPDATE accounts SET balance = balance - 100 WHERE account_id = 1;
UPDATE accounts SET balance = balance + 100 WHERE account_id = 2;
-- Verificar que ambas operaciones fueron exitosas antes de confirmar
IF (SELECT balance FROM accounts WHERE account_id = 1) >= 0 THEN
COMMIT;
ELSE
ROLLBACK;
END IF;
Actualización de inventarios en un sistema de gestión de stock.
START TRANSACTION;
-- Suponemos que tenemos una tabla "inventory" con columnas "item_id" y
"quantity".
-- Disminuir el inventario del producto 1 y aumentar el inventario del
producto 2
UPDATE inventory SET quantity = quantity - 10 WHERE item_id = 1;
UPDATE inventory SET quantity = quantity + 10 WHERE item_id = 2;
-- Verificar que ambas operaciones fueron exitosas antes de confirmar
IF (SELECT quantity FROM inventory WHERE item_id = 1) >= 0 THEN
COMMIT;
ELSE
ROLLBACK;
END IF;
Procesamiento de un pedido en un sistema de comercio electrónico.
START TRANSACTION;
-- Suponemos que tenemos las tablas "orders" y "order_items".
-- Insertar un nuevo pedido y sus artículos
INSERT INTO orders (order_id, customer_id, order_date) VALUES (1, 123,
'2024-07-01');
INSERT INTO order_items (order_item_id, order_id, product_id, quantity,
price)
VALUES (1, 1, 456, 2, 19.99), (2, 1, 789, 1, 29.99);
-- Verificar que ambas operaciones fueron exitosas antes de confirmar
IF (SELECT COUNT(*) FROM orders WHERE order_id = 1) = 1 THEN
COMMIT;
ELSE
ROLLBACK;
END IF;
Inserción de registros relacionados en múltiples tablas.
START TRANSACTION;
-- Suponemos que tenemos las tablas "students" y "enrollments".
-- Insertar un nuevo estudiante y sus inscripciones
INSERT INTO students (student_id, name, date_of_birth) VALUES (1, 'Juan
Perez', '2000-01-01');
INSERT INTO enrollments (enrollment_id, student_id, course_id,
enrollment_date)
VALUES (1, 1, 'CSE101', '2024-07-01'), (2, 1, 'MTH101', '2024-07-01');
-- Verificar que ambas operaciones fueron exitosas antes de confirmar
IF (SELECT COUNT(*) FROM students WHERE student_id = 1) = 1 THEN
COMMIT;
ELSE
ROLLBACK;
END IF;
7. ¿Cuáles son los niveles de aislamiento de una transacción?
Los niveles de aislamiento determinan cómo se manejan las operaciones de
lectura y escritura entre transacciones concurrentes:
Read Uncommitted: Las transacciones pueden leer datos no confirmados
(dirty reads).
Read Committed: Las transacciones solo pueden leer datos confirmados.
Repeatable Read: Las transacciones pueden leer los mismos datos
múltiples veces con garantía de que no cambiarán durante la transacción.
Serializable: La mayor nivel de aislamiento, donde las transacciones se
ejecutan de manera completamente secuencial, evitando interferencias
entre ellas.
8. ¿Qué es la concurrencia en base de datos?
La concurrencia en bases de datos se refiere a la capacidad de manejar múltiples
transacciones al mismo tiempo sin que interfieran entre sí, asegurando la
consistencia y la integridad de los datos.
9. ¿Cuáles son los problemas comunes de la concurrencia en base de
datos?
Los problemas comunes incluyen:
Dirty Read: Lectura de datos no confirmados por otra transacción.
Non-Repeatable Read: Los datos leídos por una transacción cambian si
otra transacción los modifica y confirma.
Phantom Read: Nuevos registros que coinciden con los criterios de una
consulta aparecen si otra transacción los inserta y confirma.
10. ¿Cuáles son los mecanismos de control de concurrencia usados en
los sistemas gestores de base de datos?
Los mecanismos de control de concurrencia incluyen:
Bloqueo (Locking): Uso de bloqueos para controlar el acceso simultáneo a
los datos.
Versionado de Datos (Multiversion Concurrency Control, MVCC): Cada
transacción trabaja con una versión de los datos, evitando bloqueos.
Timestamp Ordering: Asignación de marcas de tiempo a las transacciones
para ordenar su ejecución.
Optimistic Concurrency Control: Supone que las colisiones son raras y
verifica conflictos al final de la transacción.