ESCUELA DE CIENCIAS BÁSICAS TECNOLOGÍA E INGENIERÍA Bases de Datos Distribuidas CAPITULO 4 Procesamiento de Consultas 4.1 Costos de la Transferencia de Datos La transferencia de datos en una base de datos distribuida genera un costo de mediana intensidad en el performance o rendimiento de las maquinas que contienen la distribución de los datos. Para tal fin los SGBDD proveen clases de utilidad que proporciona herramientas para transferir objetos y datos. Los objetos del esquema de la base de datos se transfieren ejecutando un script generado en el servidor de destino. Los datos de las tablas de la BDD se transfieren con un paquete creado dinámicamente. El objeto derivado de ejecutar esta clase contiene toda la funcionalidad de los objetos transferidos y funcionalidad del lenguaje SQL. Además, los métodos y propiedades que se utilizan para realizar transferencias de datos residen en el objeto transferido en lugar de los objetos anteriormente creados en la BDD. La funcionalidad de este tipo de clases de utilidad es coherente con un modelo de objetos más ligero porque el código para las tareas concretas sólo se carga cuando se requiere. 4.2 Procesamiento de Consultas Distribuidas por Reducción de Tuplas Recordemos que una tupla es la representación de una fila en una de las tablas resultantes de una relación ejecutada en un almacén de datos; en el proceso de reducción de tuplas se puede presentar una significativa reducción del número de tuplas ejecutando uniones de relaciones entre diferentes tablas de la BDD. Se envía la columna con la que se va a realizar la unión de una relación R a la tabla donde se encuentra la 1 ESCUELA DE CIENCIAS BÁSICAS TECNOLOGÍA E INGENIERÍA Bases de Datos Distribuidas otra relación, allí se realiza la unión con la otra relación S, luego se envían las columnas implicadas en el resultado a la tabla inicial y se vuelve a realizar la unión con R. Sólo se transfieren las columnas de R que intervienen en la realización de la consulta en una dirección y el subconjunto de columnas de S resultantes en la otra. 4.3 Descomposición de Consultas Para realizar la división de datos en una consulta consideraremos el siguiente ejemplo de consulta distribuida La tabla tiene 10.000 tuplas. Cada tupla tiene 100 bytes de longitud. El campo ID tiene 9 bytes de longitud. El campo Dpto tiene 4 bytes de longitud. El campo Nombre tiene 15 bytes de longitud. El campo Apellido tiene 15 bytes de longitud. Tamaño de la relación: 100 * 10.000 = 106 bytes La tabla tiene 100 tuplas. Cada tupla tiene 35 bytes de longitud. El campo NombreDpto tiene 10 bytes de longitud. El campo NDpto tiene 4 bytes de longitud. El campo Responsable tiene 9 bytes de longitud. Tamaño de la relación: 35 * 100 = 3500 bytes 2 ESCUELA DE CIENCIAS BÁSICAS TECNOLOGÍA E INGENIERÍA Bases de Datos Distribuidas “Por cada empleado, obtener el nombre del empleado y el nombre del departamento al que pertenece” Consulta 1: Nombre, Apellido, NombreDPto(EMPLEADO*DEPARTAMENTO) La consulta se lanza desde la tabla 3 (tabla o vista respuesta) que no tiene datos implicados en la consulta. El resultado de ésta consulta constará de 10.000 tuplas. Cada tupla resultante será de una longitud de 40 bytes. El tamaño del resultado será por tanto de 400.000 bytes. Existen tres alternativas para resolver la consulta. Primera alternativa: Transferir, tanto la relación EMPLEADO, como la relación DEPARTAMENTO a la tabla respuesta (tabla 3) y realizar allí mismo la operación de unión. En éste caso se transfieren: 1.000.000 + 3.500 = 1.003.500 bytes. Segunda alternativa: Transferir la relación EMPLEADO a la tabla 2, ejecutar la unión en esta tabla y enviar el resultado a la tabla 3. Esto implicaría transferir: 1.000.000 + 400.000 (resultado) = 1.400.000 bytes Tercera alternativa: Transferir la relación DEPARTAMENTO a la tabla 1, ejecutar la unión en este nodo y enviar el resultado a la tabla 3. En este caso, los bytes transferidos serán: 3.500 + 400.000 (resultado) = 403.500 bytes. La segunda alternativa es más óptima, ya que nos transfiere el mayor número de datos efectivos en la consulta, mientras que en las otras alternativas algunos datos quedaron fuera del resultado. 3 ESCUELA DE CIENCIAS BÁSICAS TECNOLOGÍA E INGENIERÍA Bases de Datos Distribuidas 4.4 Transformación de Consultas Esta situación puede estudiarse a partir de una consulta extremadamente sencilla; por ejemplo hallar todas las tuplas de la relación EMPLEADO -DEPARTAMENTO, tomando como referencia el ejemplo anterior. Aunque la consulta es sencilla (en realidad, trivial), su procesamiento no es trivial, ya que puede que la relación EMPLEADO - DEPARTAMENTO esté fragmentada, replicada o ambas cosas. Si la relación está replicada, se tiene que elegir la réplica. Si no se han dividido las réplicas, se escoge aquella para la que el costo de transmisión es más bajo. No obstante, si se ha dividido una réplica, la elección no resulta tan sencilla de hacer dado que hay que calcular varias reuniones o uniones para reconstruir la relación EMPLEADO DEPARTAMENTO. En ese caso, el número de estrategias para este ejemplo escogido puede ser grande. Como se observa, existen varias alternativas que permiten transformar la consulta original, en otras, puede que la optimización de las consultas mediante la enumeración exhaustiva de todas las estrategias no resulte práctica en esas situaciones. 4.5 Procesamiento de Reuniones Sencillas Una decisión importante en la selección de una estrategia de procesamiento de consultas es la elección de la estrategia de reunión. Tomemos como referencia la relación EMPLEADO - DEPARTAMENTO. Supongamos que la relación no está replicada ni fragmentada, y que cuenta está almacenada en dos sitios diferentes. Supóngase que el primer sitio se ha formulado la consulta. El sistema necesita obtener el resultado en el primer sitio. Entre las estrategias posibles para el procesamiento de esta consulta figuran las siguientes: Enviar copia de la relación resultante al primer sitio. Enviar copia de la consulta al segundo sitio y ejecutarla. Enviar el resultado al primer sitio. Diseñar estrategias parecidas a la anterior con los roles de los sitios intercambiados. 4 ESCUELA DE CIENCIAS BÁSICAS TECNOLOGÍA E INGENIERÍA Bases de Datos Distribuidas Ninguna estrategia es siempre la mejor. Entre los factores que deben tenerse en cuenta están el volumen de los datos que se envían, el costo de la transmisión de los bloques de datos entre los sitios y la velocidad relativa de procesamiento en cada sitio. Para analizar la situación de esta consulta podemos emplear dos alternativas; la estrategia de semirreunión, que nos permite configurar reuniones de varias relaciones, esta estrategia puede ampliarse a una serie de pasos de semirreunión; se ha desarrollado un importante aspecto teórico en relación con el empleo de la semirreunión para la optimización de consultas. La otra alternativa contempla diferentes estrategias de reunión que aprovechan el paralelismo donde hay muchas estrategias posibles para la evaluación en paralelo, estas estrategias pueden comenzar el cálculo de relaciones, con una técnica de reunión canalizada, así, el cálculo del resultado de la reunión final una relación resultante puede hacerse en paralelo con el cálculo de otras relaciones resultantes. 5