0% encontró este documento útil (0 votos)
48 vistas8 páginas

Guiacs

Cargado por

Luis Chavarria
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
48 vistas8 páginas

Guiacs

Cargado por

Luis Chavarria
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

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.

También podría gustarte