Logo Studenta

Acrividad Modulo 6

¡Estudia con miles de materiales!

Vista previa del material en texto

COM-506ES-AVOL1 Actividad del módulo 6 
 
1 
 
 
 
 
 
 
 
 
 
Actividad Módulo 6 
Luis Fernando Vera Jaimes 
1227709 
Saint Leo University 
Seguridad de bases de datos 
COM-506ES-AVOL1 
Dr. Dante Arias Torres 
17 de septiembre de 2023 
Declaración de honestidad académica de la maestría en Ciberseguridad 
 
 
Incluyo mi firma a continuación como compromiso de que el contenido de esta actividad es mío, excepto 
las partes que tengan las debidas citas y referencias. Entiendo y acepto la siguiente definición de plagio: 
 
1. El plagio incluye la repetición literal sin reconocimiento de las palabras de otros autores. Todas las 
frases, oraciones o pasajes de este trabajo son tomadas directamente de una fuente si indican con citas y 
reconocimiento dentro del texto, además de 
que se incluyen en la página de referencias. 2. El plagio incluye tomar las ideas ajenas y presentarlas como 
propias. 3. 
Parafrasear el trabajo de otro escritor sin reconocerlo implica incurrir en plagio. 4. El plagio también 
incluye parafrasear de forma incorrecta. Los pasajes parafraseados (expresados en mis propias palabras) 
incluyen un reconocimiento adecuado de autoría dentro del texto y en las referencias. 5. El plagio incluye 
usar a otra persona u organización para preparar este trabajo y entregarlo como propio. 6. El plagio 
incluye reenviar trabajos previos, total o parcialmente, para una actividad actual sin tener un permiso 
escrito del instructor actual antes de hacerlo. 
 
Es necesario que los estudiantes se comprometan a ser honestos, justos y congruentes en sus palabras y 
actos, de acuerdo con el 
 
Firma del estudiante: Luis Fernando Vera Jaimes 
COM-506ES-AVOL1 Actividad del módulo 6 
 
 
2 
 
 
Abstract 
 
El presente documento pretende responder las actividades planteadas en el módulo 6 del curso 
de seguridad de bases de datos consultas, orden de acciones que se deben seguir para poder 
modelar correctamente la base de datos y realizar un adecuado levantamiento de la información, 
además del tipo de operaciones que soporta la base de datos durante la ejecución de las 
diferentes operaciones realizadas.
COM-506ES-AVOL1 Actividad del módulo 6 
 
 
3 
 
 
Actividad Módulo 
CAPITULO 10 PROBLEMAS 1 AL 5 
 
 
1. PROBLEMA 1. 
 
Suponga que usted es fabricante del producto ABC, que está compuesto por las piezas A, B y C. 
Cada vez que sea creado un nuevo producto ABC, debe ser agregado al inventario usando la columna 
PROD_QOH en una tabla llamada PRODUCT. Y cada vez que el producto sea creado, el inventario 
de partes, usando PART_QOH en una tabla llamada PART, debe reducirse por cada una de las piezas 
A, B y C. El contenido de la base de datos de muestra se muestra en las siguientes tablas. 
 
 
 
 
 
 
 
 
 
 
 
Dada esa información, conteste las preguntas A a E. 
 
a. ¿Cuántas solicitudes de base de datos puede usted identificar para una actualización de inventario 
para PRO-DUCT y PART? 
b. Usando SQL, escriba cada una de las solicitudes de base de datos que identificó en el inciso a. 
c. Escriba la transacción(es) completa(s). 
d. Escriba la bitácora de transacción, usando la tabla 10.1 como plantilla. 
e. Usando la bitácora de transacción que creó en el inciso d, haga seguimiento de su uso en la 
recuperación de la base de datos. 
 
 
SOLUCIÓN: 
a. ¿Cuántas solicitudes de base de datos puede usted identificar para una actualización de inventario para 
PRODUCT y PART? 
Para llevar a cabo la actualización del inventario en las tablas PRODUCT y PART, necesitamos realizar dos 
solicitudes de base de datos: una para actualizar el inventario en la tabla PRODUCT y otra para reducir el 
inventario en la tabla PART. 
b. Usando SQL, escriba cada una de las solicitudes de base de datos que identificó en el inciso a. 
Primero, actualizamos el inventario en la tabla PRODUCT para agregar un nuevo producto ABC: 
 UPDATE PRODUCT 
 SET PROD_QOH = PROD_QOH + 1 
 WHERE PROD_CODE = 'ABC'; 
 
COM-506ES-AVOL1 Actividad del módulo 6 
 
 
4 
 
Luego, debemos reducir la cantidad de piezas A, B y C en la tabla PART: 
 
 UPDATE PART 
 SET PART_QOH = CASE 
 WHEN PART_CODE = 'A' THEN PART_QOH - 1 
 WHEN PART_CODE = 'B' THEN PART_QOH - 1 
 WHEN PART_CODE = 'C' THEN PART_QOH - 1 
 END 
 WHERE PART_CODE IN ('A', 'B', 'C'); 
c. Escriba la transacción completa. 
Para asegurarnos de que ambas operaciones se realicen correctamente o no se realicen en caso de un fallo, 
envolvemos estas dos consultas en una transacción: 
 START TRANSACTION; 
 
 -- Actualizar el inventario en la tabla PRODUCT para agregar un nuevo producto ABC 
 UPDATE PRODUCT 
 SET PROD_QOH = PROD_QOH + 1 
 WHERE PROD_CODE = 'ABC'; 
 
 -- Reducir la cantidad de piezas A, B y C en la tabla PART 
 UPDATE PART 
 SET PART_QOH = CASE 
 WHEN PART_CODE = 'A' THEN PART_QOH - 1 
 WHEN PART_CODE = 'B' THEN PART_QOH - 1 
 WHEN PART_CODE = 'C' THEN PART_QOH - 1 
 END 
 WHERE PART_CODE IN ('A', 'B', 'C'); 
 
 COMMIT; 
d. Escriba la bitácora de transacción, usando las tablas dadas como plantilla. 
MySQL gestiona automáticamente la bitácora de transacciones. A continuación, proporciono una 
representación simplificada de lo que podría registrar MySQL internamente: 
------------------------------- 
| Nombre de la transacción: ABC_Transacción | 
|----------------------------------------| 
| Inicio de la transacción: 2023-10-04 8:53:37| 
|----------------------------------------| 
| Acción | Tabla | Descripción | 
|----------------------------------------| 
| Inicio | N/A | Transacción iniciada | 
| UPDATE | PRODUCT | PROD_QOH += 1 | 
| UPDATE | PART | PART_QOH -= 1 (A, B, C) | 
| Commit | N/A | Transacción completada | 
|----------------------------------------| 
| Finalización de la transacción: 2023-10-06 10:00:15 | 
 
COM-506ES-AVOL1 Actividad del módulo 6 
 
 
5 
 
 
e. Usando la bitácora de transacción que creó en el inciso d, haga seguimiento de su uso en la recuperación 
de la base de datos en MySQL. 
 
Suponiendo que se haya presentado un fallo o una interrupción luego del inicio de la transacción, pero antes 
del COMMIT y la base de datos debe ser recuperada a su último estado seguro y coherente, para lo cual 
utilizamos la bitácora de transacciones con el fin de realizar la recuperación de la base de datos siguiendo 
estos pasos: 
A. Inicio de la Transacción: La bitácora indica que la transacción "ABC_Transacción" se inició a las 
"2023-10-04 8:53:37". 
B. Operaciones Registradas: Las operaciones dentro de la transacción se registraron en la bitácora. En 
este caso, se realizaron dos operaciones: un aumento en PROD_QOH de PRODUCT y una 
disminución en PART_QOH de PART. 
C. Interrupción o Fallo: Si suponemos que el fallo o una interrupción en el sistema ocurrió después del 
segundo UPDATE, pero antes del COMMIT. En este punto, el sistema no sabe si las operaciones 
deben confirmarse o deshacerse. 
D. Recuperación Utilizando la Bitácora: Cuando el sistema se reinicia o se recupera después del fallo, 
se consulta la bitácora para determinar el estado de la transacción. En este caso, la bitácora muestra 
que la última operación fue un UPDATE en PART para disminuir PART_QOH. 
E. Deshacer la Operación Incompleta: Dado que la transacción no se completó debido al fallo, el 
sistema utiliza la información de la bitácora para deshacer la última operación. En este caso, el 
sistema restauraría PART_QOH a su valor anterior antes de la transacción. 
F. Finalización de la Recuperación: Después de que se deshace la operación incompleta, la base de 
datos se encuentra en un estado coherente y seguro. No se registra un COMMIT en la bitácora, lo que 
indica que la transacción no se completó con éxito. 
G. Finalizaciónde la Transacción: La bitácora muestra que la transacción finalizó a las "2023-10-06 
10:00:15" sin un COMMIT, lo que indica que no se confirmaron los cambios. 
2. PROBLEMA 2. 
 
Describa los tres problemas más comunes de ejecución de transacciones concurrentes. Explique cómo 
se puede usar control de concurrencia para evitarlos. 
 
SOLUCIÓN: 
A. Interferencia de Lectura-Seguida de Escritura (Read-Write): 
• Problema: Ocurre cuando una transacción lee datos mientras otra transacción los modifica. 
Esto puede llevar a que una transacción obtenga datos desactualizados o inconsistentes. 
• Control de Concurrencia: Para evitar este problema, se pueden utilizar bloqueos de lectura y 
bloqueos de escritura. Cuando una transacción desea leer un recurso, adquiere un bloqueo de 
lectura y bloquea a las transacciones de escritura hasta que se complete. Cuando una 
transacción desea escribir, adquiere un bloqueo de escritura y bloquea a las transacciones de 
lectura y escritura hasta que se complete. 
B. Problema de Escritura-Escritura (Write-Write): 
• Problema: Ocurre cuando dos o más transacciones intentan modificar el mismo recurso al 
mismo tiempo, lo que puede resultar en la pérdida de actualizaciones y en una condición de 
carrera. 
COM-506ES-AVOL1 Actividad del módulo 6 
 
 
6 
 
• Control de Concurrencia: Para evitar este problema, se utilizan bloqueos de escritura 
exclusivos. Solo una transacción a la vez puede obtener un bloqueo de escritura en un recurso 
específico, lo que garantiza que las modificaciones se realicen de manera secuencial y evita 
conflictos. 
C. Problema de Lectura-Lectura (Read-Read): 
• Problema: Ocurre cuando una transacción intenta leer datos mientras otra transacción los está 
leyendo, lo que no debería causar conflictos, pero puede generar una sobrecarga en el sistema 
si se permite que muchas transacciones de lectura se ejecuten simultáneamente. 
• Control de Concurrencia: Para evitar este problema, se suelen permitir múltiples 
transacciones de lectura simultáneamente, lo que se conoce como lectura no bloqueante o 
lectura en paralelo. Sin embargo, se debe supervisar y limitar la cantidad de lecturas 
concurrentes para evitar una sobrecarga del sistema. 
 
 
3. PROBLEMA 3. 
 
¿Qué componente del DBMS es responsable del control de concurrencia? ¿Cómo se usa esta función 
para resolver conflictos? 
 
SOLUCIÓN: 
 
 El componente del DBMS responsable del control de concurrencia es el administrador de 
transacciones dentro de sus funciones se encuentran: 
 
 Administración de transacciones 
 
• Gestión de Bloqueos: El Administrador de Transacciones gestiona la adquisición y liberación 
de bloqueos en los recursos de la base de datos. Los bloqueos son utilizados para controlar el 
acceso concurrente a los datos. Cuando una transacción desea acceder a un recurso, el 
Administrador de Transacciones verifica si el recurso está bloqueado por otra transacción y 
decide si debe esperar o ser bloqueada. 
 
• Control de Versiones: En algunos sistemas de bases de datos, se utiliza el control de 
versiones para evitar conflictos. Cada registro de datos se etiqueta con un número de versión o 
marca de tiempo. Las transacciones leen la versión más reciente de los datos y pueden realizar 
actualizaciones basadas en esa versión. Si se detecta que la versión de los datos ha cambiado 
desde que se leyó, se resuelve un conflicto. 
 
• Niveles de Aislamiento: El Administrador de Transacciones permite definir niveles de 
aislamiento que determinan cómo las transacciones ven y interactúan entre sí. Los niveles de 
aislamiento, como READ COMMITTED, REPEATABLE READ y SERIALIZABLE, 
controlan el grado en que las transacciones pueden ver los cambios de otras transacciones. 
 
Resolución de Conflictos: 
 
La resolución de conflictos en el control de concurrencia se realiza utilizando estrategias 
específicas dependiendo del tipo de conflicto: 
 
 
COM-506ES-AVOL1 Actividad del módulo 6 
 
 
7 
 
• Conflictos de Bloqueo: Cuando dos transacciones intentan acceder simultáneamente a un 
recurso bloqueado, una de ellas debe esperar. El Administrador de Transacciones puede 
utilizar técnicas como el bloqueo de espera o el bloqueo de liberación para gestionar estas 
situaciones. En algunos casos, una transacción puede ser abortada y relanzada si se detecta 
que está bloqueando otras transacciones. 
 
• Conflictos de Control de Versiones: Si dos transacciones intentan actualizar el mismo 
registro de datos, se compara la marca de tiempo o la versión de cada transacción. La 
transacción con la versión más antigua puede ser abortada o notificada de que sus cambios no 
pueden aplicarse debido a un conflicto. Se trata de una estrategia de "última escritura 
ganadora" o "primera escritura ganadora", dependiendo de la implementación. 
 
• Conflictos de Nivel de Aislamiento: Los niveles de aislamiento definen cómo las 
transacciones pueden ver y acceder a los datos. Si una transacción solicita un nivel de 
aislamiento que es incompatible con el estado actual de otras transacciones (por ejemplo, 
READ UNCOMMITTED en un sistema con REPEATABLE READ), se pueden generar 
conflictos que requieran la reconfiguración del nivel de aislamiento o la espera hasta que sea 
posible. 
 
 
4. PROBLEMA 4. 
 
Con el uso de un ejemplo sencillo, explique el uso de los bloqueos binarios y compartidos/exclusivos 
en un DBMS. 
 
SOLUCIÓN: 
 
Para mi ejemplo haré uso de una aplicación de E-commerce: 
Tengo una aplicación de E-commerce donde los usuarios pueden buscar productos, ver detalles de productos 
y realizar compras en línea. Dicha aplicación hace uso de una base de datos para almacenar información de 
productos y pedidos. 
1. Bloqueos Binarios (Shared Locks) - Operaciones de Lectura: 
Partiendo del supuesto que varios usuarios realizan búsquedas de productos simultáneamente: 
o Usuario A: Quiere buscar información sobre una computadora portátil. 
o Usuario B: Está buscando una impresora. 
Cuando ambos usuarios realizan búsquedas, se utilizan bloqueos binarios (compartidos) y de esta 
forma permitir que varios usuarios lean los mismos datos al mismo tiempo sin bloquearse entre sí. 
Ambos usuarios pueden acceder a los detalles de los productos sin ningún tipo de inconveniente. 
2. Bloqueos Compartidos/Exclusivos - Operaciones de Escritura: 
Ahora supongamos que los usuarios, A y B, están realizando compras justo al mismo tiempo: 
o Usuario A: Agrega una computadora portátil a su carrito de compras. 
o Usuario B: Agrega una impresora a su carrito de compras. 
COM-506ES-AVOL1 Actividad del módulo 6 
 
 
8 
 
En este caso, se utilizan bloqueos compartidos y exclusivos para garantizar la integridad de los datos: 
o Cuando Usuario A agrega la computadora portátil a su carrito, se adquiere un bloqueo 
exclusivo en el producto "computadora portátil". Esto evita que otros usuarios realicen 
modificaciones en ese producto al mismo tiempo. 
o Simultáneamente, cuando Usuario B agrega la impresora a su carrito, se adquiere un bloqueo 
exclusivo en el producto "impresora". Esto evita conflictos y garantiza que cada usuario pueda 
realizar su compra sin interferencias. 
 
3. Bloqueos Compartidos/Exclusivos - Operaciones de Actualización: 
Ahora vamos a suponer que un administrador del sistema necesita actualizar el precio de todos los 
productos en la base de datos: 
o El administrador adquiere un bloqueo exclusivo en la tabla de productos. Esto garantiza que 
ninguna otra transacción pueda realizar cambios en los productos mientras se realiza la 
actualización. 
De esta forma se garantiza que durante la actualización, ningún usuario puede acceder o modificar los 
productos, ya que se mantiene un bloqueo exclusivo en la tabla de productos hasta que el 
administrador complete la actualización. 
 
5. PROBLEMA 5. 
Suponga que su sistema de base de datos ha fallado. Describa el proceso de recuperación y el uso delas técnicas de escritura diferida y escritura directa 
 
SOLUCIÓN: 
 
1. Detección de la Falla: El primer paso es detectar que ha ocurrido una falla en el sistema de base de 
datos. Esto puede ser resultado de un fallo del hardware, un error en el software o cualquier otra 
circunstancia que cause una interrupción en la operación normal. 
 
2. Registro de Acciones (Logging): Antes de que cualquier cambio se realice en la base de datos, es 
común registrar todas las acciones en un registro de transacciones (log). Esto se hace mediante la 
técnica de escritura diferida (WAL), donde cada cambio se registra en el log antes de ser aplicado a la 
base de datos en sí. Esto garantiza que, incluso si ocurre una falla, se pueden reproducir todas las 
acciones registradas en el log para llevar la base de datos de nuevo a su estado anterior a la falla. 
 
3. Recuperación Física: Si la falla afecta la estructura física de los archivos de datos, se debe realizar 
una recuperación física. Esto puede implicar la reparación de archivos dañados o la restauración de 
copias de seguridad. 
 
4. Recuperación Lógica: Después de realizar la recuperación física, se procede a la recuperación lógica 
utilizando el registro de transacciones (log). Se revisa el log para identificar todas las transacciones 
completadas y aplicar sus cambios a la base de datos. Las transacciones que estaban en proceso en el 
momento de la falla pueden ser deshacerse (rollback) o aplicarse (commit) según corresponda. 
 
COM-506ES-AVOL1 Actividad del módulo 6 
 
 
9 
 
Técnicas de Escritura Diferida (WAL) y Escritura Directa (Write-Through): 
1. Escritura Diferida (WAL - Write-Ahead Logging): En esta técnica, cada vez que se realiza una 
acción en la base de datos, como una inserción, actualización o eliminación, se registra primero en el 
log antes de que los cambios se apliquen a la base de datos en sí. Esto garantiza que, incluso si ocurre 
una falla antes de que los cambios se escriban en la base de datos, se pueden recuperar desde el log. 
o Ventajas: Proporciona una mayor robustez y capacidad de recuperación, ya que todos los 
cambios están registrados en el log antes de que se realicen en la base de datos. 
o Desventajas: Puede tener un impacto en el rendimiento debido a la necesidad de escribir dos 
veces (log y base de datos) para cada acción. 
 
2. Escritura Directa (Write-Through): En esta técnica, los cambios se aplican directamente a la base 
de datos y se registran en el log después de que se han aplicado. Esto significa que los cambios son 
visibles inmediatamente en la base de datos, pero el registro de transacciones puede contener 
información sobre las acciones ya realizadas. 
o Ventajas: Ofrece un mejor rendimiento, ya que los cambios se aplican directamente a la base 
de datos sin demora. 
o Desventajas: Puede ser menos resistente a las fallas, ya que, si ocurre una falla antes de 
registrar una acción en el log, los cambios pueden perderse. 
(Araneda, 2022), (Coronel, Morris, & Rob, 2011) 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
COM-506ES-AVOL1 Actividad del módulo 6 
 
 
10 
 
Referencias 
 
Araneda, P. (2022). Base de Datos El camino de los datos a la información. Santiago de Chile: Open Data 
Clinics. 
 
Coronel, C., Morris, S., & Rob, P. (2011). Bases de datos: Diseño, implementación y administración. 
(Novena Edición ed.). Ciudad de México: Cengage Learning Editores, S.A. Recuperado el 1 de 
septiembre de 2023

Continuar navegando