Capitulo IV Procesamiento de consultas.ppt

Anuncio
Procesamiento de consultas
Database System Concepts, 5th Ed.
©Silberschatz, Korth and Sudarshan
See www.db-book.com for conditions on re-use
Procesamiento de consultas
 Visión general
 Medidas del coste de una consulta
 Operación selección
 Ordenación
 Operación reunión
 Otras operaciones
 Evaluación de expresiones
Database System Concepts - 5th Edition, Aug 27, 2005.
13.2
©Silberschatz, Korth and Sudarshan
Pasos básicos para el procesamiento de consultas
1. Análisis y traducción
2. Optimización
3. Evaluación
Database System Concepts - 5th Edition, Aug 27, 2005.
13.3
©Silberschatz, Korth and Sudarshan
Pasos básicos para el procesamiento de
consultas (Cont.)
 Análisis y transformación

Traducción de la consulta a su formato interno. Posteriormente se
construye un árbol para el análisis de la consulta, que se
transformara en una expresión del algebra relacional.

El analizador comprueba la sintaxis de la consulta, verifica nombres
de relaciones de la BD.
 Evaluación

El motor de evaluación elije un plan de la consulta, se evalúa y
ejecuta el plan, y se muestra el resultado de la consulta.
Database System Concepts - 5th Edition, Aug 27, 2005.
13.4
©Silberschatz, Korth and Sudarshan
Pasos básicos para el procesamiento de consultas:
Optimización
 Una expresión del álgebra relacional puede tener muchas
expresiones equivalentes: select saldo from cuenta where saldo < 2500

Ejm., saldo2500(saldo(Cuenta)) es equivalente a
saldo(saldo2500(Cuenta))
 Se puede ejecutar cada operación del álgebra relacional utilizando
alguno de los diferentes algoritmos.

En consecuencia, una expresión del álgebra relacional se puede
evaluar de muchas maneras.
 Las anotaciones de las expresiones que especifican los detalles de la
estrategia de evaluación se denomina plan de evaluación.

Ejm., Puede usar un índice sobre saldo para encontrar las
cuentas con saldo < 2500

O podemos realizar un completo escaneo y descartar cuentas con
saldo  2500
Database System Concepts - 5th Edition, Aug 27, 2005.
13.5
©Silberschatz, Korth and Sudarshan
Pasos básicos para el procesamiento de consultas:
Optimización (Cont.)
 Optimización de consultas: Entre todos los planes de evaluación
equivalente elegir el de menor costo.

El Costo se calcula utilizando la información estadística en el
catálogo de la base de datos.

Ejm. número de tuplas de cada relación, el tamaño de las
tuplas, etc.
 Temas a estudiar:

¿Cómo medir los costos de los algoritmos de consulta para
evaluar las operaciones de álgebra relacional

¿Cómo combinar los algoritmos de las operaciones individuales a
fin de evaluar una expresión completa
Database System Concepts - 5th Edition, Aug 27, 2005.
13.6
©Silberschatz, Korth and Sudarshan
Medidas del coste de una consulta
 El costo es generalmente medido como el tiempo total transcurrido para
responder a la consulta

Muchos factores contribuyen al costo del tiempo

Accesos a disco, CPU, o eventos de comunicación en Red.
 Generalmente el acceso a disco predomina en el costo, y es relativamente fácil
de estimar. Se mide tomando en cuenta:

Numero de búsquedas

Numero de bloques leídos

Numero de bloques escritos * Promedio del costo de bloques escritos

* Promedio del costo de búsqueda
* Promedio del costo de bloques leídos
Costo para escribir un bloque es mayor que el costo para leer un bloque
– los datos se leen de nuevo después de haber sido escrito para
asegurarse de que la escritura fue un éxito
Database System Concepts - 5th Edition, Aug 27, 2005.
13.7
©Silberschatz, Korth and Sudarshan
Medidas del coste de una consulta (Cont.)


Para simplificar, sólo tiene que utilizar el número de transferencias de bloques de
disco y el número de búsquedas como las medidas de coste.

tT – tiempo para la transferencia de un bloque

tS – tiempo para una búsqueda (tiempo de búsqueda en el disco mas latencia
rotacional)

Costo b transferencias de bloques, más S búsquedas:
b * tT + S * t S
No se considera el costo de CPU

En Sistemas reales se toma en cuenta el costo de CPU

Las estimaciones de coste que se proporcionan ignoran el coste de escribir el
resultado final de una operación en disco

Varios algoritmos puede recudir E/S a disco utilizando un espacio extra de buffer.

La cantidad de memoria disponible en el buffer depende de tareas concurrentes
y procesos de SO, conocidos durante la ejecución.


Frecuentemente asumimos la mínima cantidad de memoria disponible para
la operación.
Aunque se asuma que los datos se deben leer inicialmente de disco, es posible que
el bloque al que se acceda puede estar en la memoria intermedia.
Database System Concepts - 5th Edition, Aug 27, 2005.
13.8
©Silberschatz, Korth and Sudarshan
Operación de Selección
 explorador de archivo– es el operador de nivel más bajo para
acceder a los datos. Los exploradores de archivo son algoritmos de
búsqueda que localizan y recuperan los registros que cumplen una
condición de selección.
 Algoritmo A1 (Búsqueda lineal). se explora cada bloque del archivo y
se comprueban todos los registros para ver si satisfacen la condición
de selección.

Costo estimado = br transferencias de bloques + 1 búsqueda.
 br
numero de bloques que contienen a los registros de la
relación r

Las selecciones sobre atributos clave tienen un coste medio de:


coste = (br /2) transferencias de bloque + 1 búsqueda
Búsqueda lineal se puede aplicar independientemente de la:

La condición de selección

El orden de los registros en el archivo

Disponibilidad de índices
Database System Concepts -
5th
Edition, Aug 27, 2005.
13.9
©Silberschatz, Korth and Sudarshan
Operación de Selección (Cont.)
 A2 (búsqueda binaria). Aplicable si el archivo está ordenado según
un atributo y la condición de la selección es una comparación de
igualdad en ese atributo.

Supongamos que los bloques de una relación se almacenan
de forma contigua

Estimación de costos (número de bloques de disco a
escanear):

Costo de la localización de la primera tupla por búsqueda
binaria sobre los bloques:
– log2(br) * (tT + tS)

Si la selección no es sobre un atributo clave, más de un
bloque puede contener los registros requeridos, y el coste
de la lectura de los bloques extra se debe añadir a la
estimación del coste. Se puede estimar este número
mediante la estimación del tamaño del resultado de la
selección
Database System Concepts - 5th Edition, Aug 27, 2005.
13.10
©Silberschatz, Korth and Sudarshan
Selección usando Índices
 Las estructuras índice se denominan caminos de acceso, ya que
proporcionan un camino a través del cual se pueden localizar y
acceder a los datos.
 Los algoritmos de búsqueda que utilizan un índice reciben el nombre
de exploraciones del índice.
 Aunque los índices pueden proporcionar un acceso rápido, directo y
ordenado, su utilización implica un gasto adicional en los accesos a
los bloques que contienen el índice.
Database System Concepts - 5th Edition, Aug 27, 2005.
13.11
©Silberschatz, Korth and Sudarshan
Selección usando Índices
 A3 (Índice primario, igualdad basada en la clave). Para una condición
de igualdad en un atributo clave con un índice primario se puede utilizar
el índice para recuperar el único registro que satisface la
correspondiente condición de igualdad.

Si se usa un árbol B+, el coste de la operación en términos de
operaciones E/S es igual a la altura del árbol más una operación
E/S para recuperar el registro.
 Costo = (hi + 1) * (tT + tS)
 A4 (Índice primario, igualdad basada en un atributo no clave) Recupera
múltiples registros.
 Estos registros estarían almacenados consecutivamente en el
archivo , costo similar a A3
Database System Concepts - 5th Edition, Aug 27, 2005.
13.12
©Silberschatz, Korth and Sudarshan
Selección usando Índices (Cont.)
 A5 (índice secundario, igualdad).

Esta estrategia puede recuperar un único registro si la condición de
igualdad es sobre una clave; puede que se recuperen varios
registros si el campo índice no es clave. En el primer caso sólo se
obtiene un registro, y el coste es igual a la altura del árbol más una
operación E/S para recuperar el registro. En el segundo caso, cada
registro puede residir en un bloque diferente, que puede resultar en
una operación E/S por cada registro recuperado. El coste podría
llegar a ser incluso peor que el de la búsqueda lineal si se obtiene
un gran número de registros.
 Recupera un simple registro si la clave de búsqueda es una clave
candidata
 Costo = (hi + 1) * (tT + tS)

Recupera múltiples registros si la clave de búsqueda no es una
clave candidata.
Cada uno de los n registros similares pueden estar en diferentes
bloques.
 Costo = (hi + n) * (tT + tS) Puede ser muy caro!

Database System Concepts - 5th Edition, Aug 27, 2005.
13.13
©Silberschatz, Korth and Sudarshan
Selecciones con condiciones de comparación
 Considérese una selección de la forma AV (r) o A  V(r), Se puede
implementar utilizando búsqueda lineal o binaria o con índices de alguna de
las siguientes maneras:
 A6 (Índice primario, comparación). (La Relación es ordenada sobre A)
Para A  V(r) utilizar el índice para encontrar primera tupla  v y
escanear relación secuencialmente a partir de ahí.
 Para AV (r) solo escanear la relación secuencialmente hasta
primera tupla > v; no utilizar el índice.
 A7 (Índice secundario, comparación).

Para A  V(r) utilizar el índice para encontrar primera entrada de
índice  v y explorar el índice secuencialmente a partir de ahí, para
encontrar los punteros a los registros.
 Para AV (r) sólo escanear páginas de hoja del índice encontrando
los punteros a los registros, hasta la primera entrada > v


En cualquier caso, recuperar registros que son apuntados.
– Requiere una E/S para cada registro
– La exploración lineal puede ser menos costoso.
Database System Concepts - 5th Edition, Aug 27, 2005.
13.14
©Silberschatz, Korth and Sudarshan
Implementación de selecciones complejas

Conjunción: 1 2. . . n(r)

A8 (selección conjuntiva utilizando un índice).


Selecciona una combinación de i y algoritmos A1 a A7 que da como
resultado el menor coste para i (r).

Pruebe otras condiciones en tupla después de obtenerlo en el buffer de
memoria.
A9 (selección conjuntiva utilizando un índice compuesto).


Utilice índice apropiado compuesto (múltiples claves) si está disponible.
A10 (selección conjuntiva mediante la intersección de identificadores).

Requiere índices con punteros de registros.

El uso del índice correspondiente para cada condición, y tomar la
intersección de todos los conjuntos obtenidos del punteros de registros.

Luego recuperar los registros de archivo

Si algunas condiciones no tienen índices adecuados, aplicar la prueba en
la memoria.
Database System Concepts - 5th Edition, Aug 27, 2005.
13.15
©Silberschatz, Korth and Sudarshan
Implementación de selecciones complejas
 Disyunción:1
2 .
. . n (r).
 A11 (selección disyuntiva mediante la unión de identificadores).

Aplicable si todas las condiciones tienen índices disponibles.

Caso contrario, utilice barrido lineal.

El uso del índice correspondiente para cada condición, y tomar la unión
de todos los conjuntos obtenidos del punteros de registros.

Luego recuperar los registros de archivo
 Negation: (r)

Utilice exploración lineal en el archivo

Si muy pocos registros cumplen , y un índice es aplicable a 

Buscar la satisfacción de los registros con índice y recuperar desde
un archivo
Database System Concepts - 5th Edition, Aug 27, 2005.
13.16
©Silberschatz, Korth and Sudarshan
Ordenación
 Se puede conseguir la ordenación mediante la construcción de un
índice en la clave de ordenación y utilizando luego ese índice para
leer la relación de manera ordenada.
 Este proceso ordena la relación sólo lógicamente a través de un
índice, en lugar de físicamente.
 Por esta razón sería deseable ordenar las tuplas físicamente. La
ordenación de relaciones que no caben en memoria se llama
ordenación externa.
Database System Concepts - 5th Edition, Aug 27, 2005.
13.17
©Silberschatz, Korth and Sudarshan
Algoritmo de ordenación-mezcla externa
 La técnica más utilizada para la ordenación externa es normalmente
el algoritmo de ordenación-mezcla externa.
 Sea M el número de marcos de página en la memoria intermedia de
la memoria principal (el número de bloques de disco cuyos contenidos
se pueden alojar en la memoria intermedia de la memoria principal).
Database System Concepts - 5th Edition, Aug 27, 2005.
13.18
©Silberschatz, Korth and Sudarshan
Algoritmo de ordenación-mezcla externa
Primera etapa
 Se crean varias secuencias ordenadas.
i=0
repeat
leer M bloques o bien de la relación o bien del resto de la relación según el que
tenga menor número de bloques;
ordenar la parte en memoria de la relación;
escribir los datos ordenados al archivo de secuencias Si;
i=i+1;
until el final de la relación
Database System Concepts - 5th Edition, Aug 27, 2005.
13.19
©Silberschatz, Korth and Sudarshan
Algoritmo de ordenación-mezcla externa
Segunda etapa
 Las secuencias se mezclan. Si se tienen N secuencias de tal forma
que N<M
Leer un bloque de cada uno de los N archivos Si, y guardarlos en una página de la
memoria intermedia en memoria;
repeat
elegir la primera tupla (según el orden) de entre todas las páginas de la
memoria intermedia:
Escribir la tupla y suprimirla de la página de la memoria intermedia;
if la página de la memoria intermedia de alguna secuencia Si está vacía
and not fin_de_archivo(Si) then
leer el siguiente bloque Si y guardarlo en la página de la memoria
intermedia;
until todas las páginas de la memoria intermedia estén vacías
Database System Concepts - 5th Edition, Aug 27, 2005.
13.20
©Silberschatz, Korth and Sudarshan
Algoritmo de ordenación-mezcla externa
casos y coste
 En el caso en que N>M, se realiza la operación de mezcla en varios
ciclos, tomando como entrada de cada ciclo M-1 secuencias de
bloques. Se ordena cada secuencia según el algoritmo anterior.
 Si al concluir el ciclo completo se tiene que N>M, se repiten estos
ciclos tantas veces como sea necesario, hasta que el número de
secuencias sea menor que M; momento en el que un último ciclo
genera el resultado ordenado.
 El número total de bloques transferidos en una ordenacion de
mescla externa es:
br ( 2 logM–1(br / M) + 1)
Database System Concepts - 5th Edition, Aug 27, 2005.
13.21
©Silberschatz, Korth and Sudarshan
Ejemplo
22
Database System Concepts - 5th Edition, Aug 27, 2005.
13.22
©Silberschatz, Korth and Sudarshan
Operación reunión
 Existen varios algoritmos para implementar la reunión.

Reunión en bucle anidado

Reunión en bucle anidado por bloques

Reunión en bucle anidado indexada

Reunión por mezcla

Reunión por asociación
 La elección es en función al costo calculado.
 En los ejemplos se utiliza la siguiente información:

# de registros de cliente: ncliente = 10000.

# de bloques de cliente: bcliente = 400.

# de registros de impositor: nimpositor = 5000.

# de bloques de impositor: bimpositor = 100.
Database System Concepts - 5th Edition, Aug 27, 2005.
13.23
©Silberschatz, Korth and Sudarshan
Reunión en bucle anidado
 Calcular la reunión Zeta:
r

s
for each tuple tr in r do begin
for each tuple ts in s do begin
comprobar que el par (tr,ts) satisface la condición  de la reunión
si la cumple, añadir tr • ts al resultado.
end
end
 r es llamado la relación externa y s la relación interna de la reunión.
 No requiere índices y se puede utilizar sin importar la condición de la
reunión.
 Es costoso, ya que examina cada pareja de tuplas en las dos relaciones.
Database System Concepts - 5th Edition, Aug 27, 2005.
13.24
©Silberschatz, Korth and Sudarshan
Reunión en bucle anidado (Cont.)

En el peor de los casos, la memoria intermedia solamente puede contener un
bloque de cada relación necesitándose un total de
nr  bs + br accesos a bloques

En el mejor de los casos hay suficiente espacio para que las dos relaciones
quepan en memoria intermedia, así que cada bloque se tendrá que leer
solamente una sola vez.


En consecuencia se necesitaría acceder a br + bs bloques
Asumiendo el peor caso de disponibilidad de la memoria la estimación de costos
es:

Con impositor como relación externa:


5000  400 + 100 = 2,000,100 accesos a bloques,
Con cliente como la relación externa

10000  100 + 400 = 1,000,400 accesos a bloques

En la mejor de las situaciones, sin embargo, se tienen que leer ambas relaciones
una sola vez y realizar el cálculo. El cálculo necesita a lo sumo 100+400=500
accesos a bloques.

Es preferible la reunión en bucle anidado por bloques.
Database System Concepts - 5th Edition, Aug 27, 2005.
13.25
©Silberschatz, Korth and Sudarshan
Reunión en bucle anidado por bloques
 Variante de la reunión de bucle anidado en la cual cada bloque
de la relación interna es emparejada con cada bloque de la
relación externa.
for each block Br of r do begin
for each block Bs of s do begin
for each tuple tr in Br do begin
for each tuple ts in Bs do begin
Comprobar que el para (tr,ts) satisface la
condición de la reunión
si la cumple, añadir tr • ts al resultado.
end
end
end
end
Database System Concepts - 5th Edition, Aug 27, 2005.
13.26
©Silberschatz, Korth and Sudarshan
Reunión en bucle anidado por bloques (Cont.)

En el peor de los casos, cada bloque de la relación interna s se lee solamente
una vez por cada bloque de la relación externa en lugar de una vez por cada
tupla de la relación externa. De este modo, en el peor de los casos habrá un
total de: br  bs + br accesos a bloques.

En el mejor de los casos habrá que acceder a br + bs.

El rendimiento de los procedimientos de bucle anidado y bucle anidado por
bloque se puede mejorar a un mas:

En el bucle anidado por bloques, utilizar M — 2 bloques de disco como la
unidad de bloque para la relación externa, donde M = tamaño en bloques
de la memoria; utilizar los restantes dos bloques para almacenar los
bloques de la relación interna y bloques de resultado o salida.
Costo = br / (M-2)  bs + br acceso a bloques
 Si los atributos de la reunión en una reunión natural o una equirreunión
forman una clave de la relación interna, entonces el bucle interno puede
finalizar tan pronto como se encuentre la primera correspondencia.


Se puede explorar el bucle interno alternativamente hacia adelante y
hacia atrás. Este método de búsqueda ordena las peticiones de bloques
de disco de tal manera que los datos restantes en la memoria intermedia
de la búsqueda anterior se reutilizan.

Utilizar un índice sobre la relación interna.
Database System Concepts - 5th Edition, Aug 27, 2005.
13.27
©Silberschatz, Korth and Sudarshan
Reunión en bucle anidado indexado

Búsquedas en Índices pueden reemplazar a la exploración de archivos sí:

La Reunión es una equireunión o una reunión natural y

Esta disponible un índice sobre el atributo de la reunión en la relación interna

Puede construirse un índice exclusivamente para el calculo de la reunión.

Para cada tupla tr de la relación externa r, se utiliza el índice para buscar tuplas en
s que cumplan la condición de reunión con la tupla tr.

En el peor de los casos solo hay espacio en la memoria intermedia para una
página de r y una página del índice. Para cada tupla de r, se realiza una búsqueda
en el índice de s.

Costo de la reunión: br + nr  c


Donde c es el costo de una única selección en s utilizando la condición de la
reunión.

Ya se vio como estimar el coste del algoritmo de una única selección cuyo
calculo es proporcional a c .
Si hay índices disponibles en ambas relaciones r y s, normalmente es mas
eficiente usar como relación más externa aquella que tenga menos tuplas.
Database System Concepts - 5th Edition, Aug 27, 2005.
13.28
©Silberschatz, Korth and Sudarshan
Ejemplo en el costo de una Reunión en bucle anidado
indexado
 Evaluar impositor
cliente, con impositor como la relación externa.
 Si cliente tiene un índice primario de árbol B+ en el atributo de la
reunión nombre_cliente, que contiene 20 entradas en promedio por
cada nodo del índice.
 Suponga que cliente tiene 10000 tuplas, la atura del árbol es 4, y será
necesario un acceso más para encontrar el dato real.
 impositor tiene 5000 tuplas
 El costo total para una reunión en bucle anidado por bloques:

400*100 + 100 = 40,100 accesos a bloques

Asumiendo el peor caso de la memoria

Puede ser significativamente menor cuando hay mas memoria
 Costo para una reunión en bucle anidado indexado

100 + 5000 * 5 = 25,100 acceso a bloques.
Database System Concepts - 5th Edition, Aug 27, 2005.
13.29
©Silberschatz, Korth and Sudarshan
Reunión por mezcla
1.
Ordenar ambas relaciones en el atributo de la reunión (Si aun no estan
ordenadas en el atributo de la reunión).
2.
Mezclar las relaciones ordenadas para la reunión de ellos.
1.
Su reunión se puede calcular mediante un proceso muy parecido a la
etapa de mezcla del algoritmo de ordenación-mezcla.
2.
La principal diferencia es el manejo de valores duplicados en el
atributo de la reunión.
Database System Concepts - 5th Edition, Aug 27, 2005.
13.30
©Silberschatz, Korth and Sudarshan
Reunión por mezcla (Cont.)
 Cada bloque tiene que ser leído sólo una vez ()
 Dado que las relaciones están ordenadas, las tuplas con el mismo valor
en los atributos de la reunión aparecerán consecutivamente. De este
modo solamente es necesario leer cada tupla en el orden una vez y,
como resultado, leer también cada bloque solamente una vez. Puesto
que sólo se hace un ciclo en ambos archivos, el método de reunión por
mezcla resulta eficiente; el número de accesos a bloques es igual a la
suma de los bloques: br + bs.
Database System Concepts - 5th Edition, Aug 27, 2005.
13.31
©Silberschatz, Korth and Sudarshan
Reunión por asociación
 Utilizado para equirreuniones y reuniones naturales.
 Se utiliza una función de asociación h para dividir las tuplas de
ambas relaciones
 H es una función de asociación que asigna a los AtribsReunion los
valores {0, 1, ..., n}, donde AtribsReunion denotan los atributos
comunes de r y s utilizados en la reunión natural.


Hr0, Hr1, . . ., Hrnh denotan las particiones de las tuplas de r,
inicialmente todas vacías. Cada tupla tr  r se pone en la
partición Hri donde i = h(tr [AtribsReunion]).

Hs0,, Hs1. . ., Hsnh denota las particiones de las tuplas de s,
inicialmente todas vacías. Cada tupla ts s se pone en la
partición si, donde i = h(ts [AtribsReunion]).
La función de asociación h debería de tener las “buenas”
propiedades y uniformidad que se estudiaron en la parte de índices
asociados.
Database System Concepts - 5th Edition, Aug 27, 2005.
13.32
©Silberschatz, Korth and Sudarshan
Reunión por asociación (Cont.)
Database System Concepts - 5th Edition, Aug 27, 2005.
13.33
©Silberschatz, Korth and Sudarshan
Reunión por asociación (Cont.)
 Supóngase que una tupla de r y una tupla de s satisfacen la
condición de la reunión; por tanto, tendrán el mismo valor en los
atributos de la reunión. Si el valor se asocia con algún valor i, la
tupla de r tiene que estar en Hri y la tupla de s en Hsi. De este
modo solamente es necesario comparar las tuplas de r en Hri con
las tuplas de s en Hsi; no es necesario compararlas con las tuplas
de s de otra partición.
 El coste estimado para una reunión por asociación es:
3(br + bs) + 2nh
 Reunión por Asociación Híbrida: Se aplica en el caso de
que la memoria sea grande pero que ninguna de las relaciones
pueda caber en memoria.

La idea es mantener las primeras particiones de la relación
interna en memoria sin escribirlas a disco.

Luego de particionar la relación externa se puede aprovechar
los datos de la particiones en memoria para escribir el
resultado, pudiéndose obviar las lecturas/escrituras de las
primeras particiones de la relación externa.
Database System Concepts - 5th Edition, Aug 27, 2005.
13.34
©Silberschatz, Korth and Sudarshan
Algoritmos de Join con operaciones complejas
 Condición Conjuntiva:
r join
1  2...   n
s

Se aplica uno de los algoritmos de bucles anidados, ó

Computar el resultado para una condición r join i s

Sobre el resultado se seleccionan las filas que cumplen con
las demás condiciones
1  . . .  i –1  i +1  . . .  n
 Condición disyuntiva:
r join1  2 ...  n s

Se aplica uno de los algoritmos de bucles anidados, ó

Calcular cada operación individualmente y unir los resultados:
(r join1 s)  (r join2 s)  . . .  (r joinn s)
Database System Concepts - 5th Edition, Aug 27, 2005.
13.35
©Silberschatz, Korth and Sudarshan
Join Externos
 Se calculan:

Realizando una operación de Join interno con los algoritmos descritos y
luego agregando las filas no reunidas de una o ambas relaciones
complementadas con valores nulos.

Modificando los algoritmos de Join interno.
 Para el join por mezcla, r left outer join s puede calcularse como:
1.
Caculando r join s y unir su resultado al resultado de la operación
∏R (r join s) – r complementadas con valores nulos, ó
2.
Modificando el algoritmo de reunión por mezcla: Durante la mezcla para
las filas de r no reunidas añadirlas al resultado complementadas con
valores nulos.
 Para el join por asociación, r left outer join s puede calcularse como:
1.
Si r es la relación de prueba, añadirla al resultado sus filas
complementadas al no encontrarse filas de s concordantes a través del
índice de la partición.
2.
Si r es la relación de construcción, se marca las entradas del índice no
utilizadas para luego agregarlas complementadas al resultado.
Database System Concepts - 5th Edition, Aug 27, 2005.
13.36
©Silberschatz, Korth and Sudarshan
Otras operaciones
 Eliminación de duplicados puede ser implementado vía ordenación o
asociación.

Las tuplas idénticas aparecerán consecutivas durante la ordenación,
pudiéndose eliminar todas las copias menos una.

Optimización: Con la ordenación-mezcla externa, se pueden
eliminar los duplicados mientras se crea una secuencia antes de
que ésta se escriba en el disco, reduciendo así el número de
bloques transferidos. El resto de duplicados se pueden suprimir
durante la etapa de reunión/mezcla, así que el resultado final estará
libre de repeticiones

Similar a la reunión por asociación – los duplicados estarán en los
mismos cajones.
 Proyección:

Se realiza la proyección en cada tupla

Seguido de la eliminación de duplicados.
Database System Concepts - 5th Edition, Aug 27, 2005.
13.37
©Silberschatz, Korth and Sudarshan
Otras operaciones : Agregación
 Agregación puede ser implementado de manera similar a la
eliminación de duplicados.

Ordenación o Asociación puede ser usado para llevar las tuplas a
un mismo grupo, y luego aplicar la función de agregación a cada
grupo.

El coste estimado para la implementación de la operación
agregación es el mismo coste de la eliminación de duplicados
para las funciones de agregación como min, max, sum, count y
avg
Database System Concepts - 5th Edition, Aug 27, 2005.
13.38
©Silberschatz, Korth and Sudarshan
Otras operaciones : Operación sobre conjuntos


Operación sobre conjuntos (,  y ): puede utilizarse variantes de
reunión por mezcla después la ordenación, o la variante de la reunión por
asociación.
Eejmplo, Operación de conjuntos usando reunión por asociación :
1. Particionar ambas relaciones utilizando la misma función hash
2. Procesar cada partición i como sigue:

r  s:
1. Construir un índice asociativo en memoria sobre Hri.
2. Añadir las tuplas de Hsi, al índice asociativo solamente si no
estaban ya presentes.
3. Añadir las tuplas del índice asociativo al resultado.

r  s:
1. Construir un índice asociativo en memoria Hri
2. Para cada tupla en Hsi, probar el índice asociativo y pasar la
tupla al resultado únicamente si ya estaba presente en el índice.

r – s:
1. Construir un índice asociativo en memoria en Hri
2. Para cada tupla de Hsi probar el índice asociativo y, si la tupla
está presente en el índice, suprimiendo del índice asociativo.
3. Añadir las tuplas restantes del índice asociativo al resultado.
Database System Concepts - 5th Edition, Aug 27, 2005.
13.39
©Silberschatz, Korth and Sudarshan
Evaluación de expresiones
 Hasta aquí se ha estudiado cómo llevar a cabo operaciones
relacionales individuales.
 Ahora se considera cómo evaluar una expresión que contiene varias
operaciones.
 La manera evidente de evaluar una expresión es simplemente evaluar
una operación a la vez en un orden apropiado.
 El resultado de cada evaluación se materializa en una relación
temporal para su inmediata utilización. Un inconveniente de esta
aproximación es la necesidad de construir relaciones temporales, que
(a menos que sean pequeñas) se tienen que escribir en disco. Un
enfoque alternativo es evaluar varias operaciones de manera
simultánea en un cauce, con los resultados de una operación
pasados a la siguiente, sin la necesidad de almacenar relaciones
temporales.
Database System Concepts - 5th Edition, Aug 27, 2005.
13.40
©Silberschatz, Korth and Sudarshan
Materialización
 Evaluación materializada: evaluar una operación a la vez,
comenzando en el nivel más bajo. Utilizar los resultados
intermedios materializado en las relaciones temporales para
evaluar el próximo nivel de operaciones.
 Ejemplo, en base a la figura, se calcula y se almacena la
operación
 balance2500 (account )
Luego se calcula la reunión de la operación almacenada con la
relación customer, y finalmente calcular la proyección sobre
customer-name.
Database System Concepts - 5th Edition, Aug 27, 2005.
13.41
©Silberschatz, Korth and Sudarshan
Materialización (Cont.)
 El coste de una evaluación materializada no es simplemente la suma
de los costes de las operaciones involucradas. Cuando se calcularon
los costes estimados de los algoritmos se ignoró el coste de escribir el
resultado de la operación en disco. Para calcular el coste de evaluar
una expresión como la que se ha hecho hay que añadir los costes de
todas las operaciones, incluyendo el coste de escribir los resultados
intermedios en disco.
 La memoria intermedia doble (usando dos memorias intermedias,
una donde progresa la ejecución del algoritmo mientras que la otra se
está copiando) permite que el algoritmo se ejecute más rápidamente
mediante la ejecución en paralelo de acciones en la CPU con
acciones de E/S.
Database System Concepts - 5th Edition, Aug 27, 2005.
13.42
©Silberschatz, Korth and Sudarshan
Encausamiento
 Evaluación encausada: Evalúa varias operaciones simultáneamente,
pasando los resultados de una operación a la siguiente.
 Ejemplo, en el árbol de expresión previo, no se almacena el resultado de
la operación
 balance 2500 (account )

En cambio, pasa tuplas directamente a la reunión.. Similarmente, no
almacena el resultado de la reunión, pasa las tuplas directamente a la
proyección.
 Mucho más barato que la materialización: no es necesario guardar una
relación temporal en el disco.
 El encausamiento no siempre puede ser posible– Ejemplo, Ordenación y
Reunión por asociación.
Database System Concepts - 5th Edition, Aug 27, 2005.
13.43
©Silberschatz, Korth and Sudarshan
Descargar