Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Base de Datos Distribuidas - Ejercicio Procesamiento de Transacciones

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 3

Procesamiento de transacciones en Bases de Datos distribuidas

Ejercicio Elmasri Cap 25 - Sección: 25.4.1 - Pag 763

Vamos a ilustrar este tema con dos sencillas consultas de ejemplo. Supongamos que las
relaciones EMPLEADO y DEPARTAMENTO están distribuidas tal y como aparece en la
siguiente figura:

Asumiremos que ninguna de las dos relaciones está fragmentada. Según la figura anterior, el
tamaño de la relación EMPLEADO es de 100 ∗ 10.000 = 1.000.000 bytes, mientras que la de
DEPARTAMENTO es de 35 ∗ 100 = 3.500 bytes.
Consideremos la consulta C: por cada empleado, recuperar su nombre y el del departamento
para el cual trabaja.
Esto puede formularse del siguiente modo en el álgebra relacional:

C: 𝝅 ​Nombre,Apellido1,NombreDpto​(EMPLEADO ​DnoNúmeroDpto ​DEPARTAMENTO)

Si asumimos que cada empleado está relacionado con un departamento, el resultado de esta
consulta incluirá 10.000 registros. Supongamos que cada registro tiene 40 bytes de longitud. La
consulta es enviada a un sitio 3 distinto, llamado sitio resultado porque es el lugar en el que se
precisan los resultados. Ni la relación EMPLEADO ni DEPARTAMENTO residen en este sitio.
Para ejecutar esta consulta distribuida existen tres tipos de estrategias simples:

1. Transferir las relaciones EMPLEADO y DEPARTAMENTO al sitio resultado, y ejecutar la


concatenación en el sitio 3. En este caso deben trasferirse 1.000.000 + 3500 = 1.003.500
bytes.
2. Transferir la relación EMPLEADO al sitio 2, ejecutar la concatenación en él y transferir el
resultado al 3. El tamaño del resultado de la consulta es de 40 ∗ 10.000 400,000 bytes, por
lo que se tendrán que transferir 400.000 + 1.000.000 = 1.400.000 bytes.
3. Transferir la relación DEPARTAMENTO al sitio 1, ejecutar la concatenación en él y enviar el
resultado al 3. En este caso, lo que se transfieren son 400.000 + 3.500 = 403.500 bytes.

Si nuestro criterio de optimización es minimizar la cantidad de la transferencia de datos,


debemos elegir la tercera estrategia.

Ahora vamos a considerar una nueva consulta C': por cada departamento, recuperar su
nombre y el de su director. Esto quedaría del siguiente modo en el álgebra relacional:

C': 𝝅 ​Nombre,Apellido1,NombreDpto ​(DEPARTAMENTO ​DniDirector=Dni​ EMPLEADO)

De nuevo, suponemos que la consulta se envía al sitio 3. En este caso, aplicaremos las
mismas estrategias que las empleadas para la consulta C, excepto por el hecho de que el
resultado de C' sólo incluye 100 registros, asumiendo que cada departamento tiene un único
director:

1. Transferir EMPLEADO y DEPARTAMENTO al sitio resultado, y ejecutar la consulta en el


sitio 3. En este caso deben transferirse un total de 1.000.000 + 3.500 = 1.003.500 bytes.
2. Transferir la relación EMPLEADO al sitio 2, ejecutar la concatenación en él y enviar el
resultado al 3. El tamaño del resultado de la consulta es de 40 ∗ 100 4.000 bytes, por lo
que se transferirán 4.000 + 1.000.000 = 1.004.000 bytes.
3. Transferir la relación DEPARTAMENTO al sitio 1, ejecutar la concatenación en él y enviar el
resultado al 3. En este caso, se transfieren 4.000 + 3.500 = 7.500 bytes.

De nuevo elegimos la tercera estrategia (en este caso, por un abrumador margen con relación
a las otras dos).
Las tres metodologías anteriores son las más obvias cuando se trata de enviar el resultado a
un sitio diferente (sitio 3) del que se encuentran los ficheros involucrados en la consulta (sitios 1
y 2). Sin embargo, supongamos que el sitio resultado es el 2; en este caso tenemos dos
estrategias:

1. Transferir la relación EMPLEADO al sitio 2, ejecutar la consulta y presentar el resultado al


usuario en el sitio 2. En este caso, se transfieren el mismo número de bytes (1.000.000)
tanto para C como para C'.
2. Transferir la relación DEPARTAMENTO al sitio 1, ejecutar la consulta en él y devolver el
resultado al sitio 2. En este caso, habrá que transferir 400.000 + 3.500 403.500 bytes para
C y 4.000 + 3.500 = 7.500 para C'.

También podría gustarte