m todos para realizar la operaci n de reuni n join n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Métodos para realizar la operación de reunión ( join ) PowerPoint Presentation
Download Presentation
Métodos para realizar la operación de reunión ( join )

Loading in 2 Seconds...

play fullscreen
1 / 51

Métodos para realizar la operación de reunión ( join ) - PowerPoint PPT Presentation


  • 88 Views
  • Uploaded on

Métodos para realizar la operación de reunión ( join ). Francisco Moreno. La operación join. Centro de interés: Operación join (reunión): Métodos (algoritmos) para su ejecución Evaluación de costo de cada método. La operación join. Relaciones r ( A ,…) y s ( B ,…)

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Métodos para realizar la operación de reunión ( join )' - rimona


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
la operaci n join
La operaciónjoin

Centro de interés:

  • Operación join (reunión):
    • Métodos (algoritmos) para su ejecución
    • Evaluación de costo de cada método
la operaci n join1
La operaciónjoin

Relaciones r(A,…) y s(B,…)

Join: r ⋈A=Bs

Sean:

  • Fr = Número de páginas de r
  • Fs = Número de páginas de s
  • tr = Número de tuplas de r
  • ts = Número de tuplas de s
la operaci n join2
La operaciónjoin

Para el ejemplo, se manejarán estos valores:

  • Fr = 1000
  • Fs = 100
  • tr = 10000
  • ts = 1000
algoritmos para join
Algoritmos para join

1. Simple Nested Loops (Ciclos Anidados Simple)

FOR EACH t  r DO

FOR EACH t’  s DO

IF t.A = t’.B THEN output <t, t’>

nested loops
Nested Loops
  • s se debe recorrer (leer) por cada tupla de r, lo cual resulta en:

tr * Fs (páginas)

  • r se recorre una sola vez

Costo Total: Fr + tr * Fs (páginas)

Ej:

Costo = 1000 + 10000 * 100 = 1001000

Fs

Fr

tr

nested loops1
Nested Loops
  • El orden de las relaciones en los ciclos importa:

Intercambiando r y s:

Costo = 100 + 1000 * 1000 = 1000100

ts

Fr

Fs

nested loops2
Nested Loops
  • Aunque en esteejemplo la diferenciaesdespreciable, en otroscasos la diferenciaessignificativa
  • De todasformasestemétodo no se sueleusaryaque se mejoraasí:
nested loops3
Nested Loops

2. Block Nested Loops (CiclosAnidados con Bloques)

FOR EACH page prof r DO

FOR EACH page ps of s DO

output pr⋈A=B ps

nested loops4
Nested Loops
  • En vez de leer sporcadatupla de r, se lee sporcadapágina de r
  • Esto reduce el costo a:

Fr + Fr * Fs (páginas)

Ej: 1000 + 1000 * 100 = 101000

Fs

Fr

Fr

nested loops5
Nested Loops

Supóngase que se tiene una memoria de M

páginas

  • M - 2 páginas se usarán para la relación del ciclo externo (r)
  • 1 página se usará para la relación del ciclo interno (s)
  • 1 página se usará para generar la salida
nested loops6
Nested Loops

r

Input buffer for r

1

2

M-2

r⋈s

s

Input buffer for s

Output buffer

nested loops7
Nested Loops
  • Por lo tanto, la relación s se recorre una vez por cada grupo de (M - 2) páginas de r, es decir, se recorre: Fr / (M - 2) veces.
  • Por lo tanto, el costo es:

Fr + Fs * Fr / (M - 2)

Nótese que si Fr (M - 2) entonces el costo

es: Fr + Fs

nested loops8
Nested Loops
  • Ej: si M = 102 entonces

Costo = 1000 + 100 * 1000 / (102 - 2) = 2000

  • Intercambiando r y s:

Costo = 100 + 1000 * 100 / (102 - 2) = 1100

¡El orden de las relaciones importa!

Fs

Fr

M - 2

Fr

Fr

Fs

M - 2

Fs

nested loops9
Nested Loops
  • Es más “económico” colocar la relación más pequeña en el ciclo externo, s en este caso, es decir, si Fr > Fs, entonces:

Fr + Fs * Fr / (M - 2) > Fs + Fr * Fs / (M - 2)

nested loops10
Nested Loops

3. Index Nested Loops (CiclosAnidados con Índice)

  • Supóngaseques (relacióninterna) tiene un índicesobre el atributo de join B
  • En vez de recorrertodas en el ciclointerno se puedeusar el índice para encontrarlasmatchingtuplasasí:
algoritmo
Algoritmo

FOR EACH t  r DO {

- Usar el índice sobre B para encontrar

todas las tuplas t’ s tales que t.A = t’.B

- output <t, t’> para cada una de las t’

}

nested loops11
Nested Loops

Para estimar el costo se debe considerar:

  • El tipo de índice (B+, hash, etc.)

y

  • Si el índice es clustered (agrupado) o unclustered
ndice clustered
Índice clustered

Archivo del índice

Mecanismo para localizar las entradas del índice

Entradas del índice

Registros de datos

Archivo de datos

ndice unclustered
Índice unclustered

Archivo del índice

Mecanismo para localizar las entradas del índice

Entradas del índice

Registros de datos

Archivo de datos

nested loops12
Nested Loops
  • Si el índicees de tipo B+, el costopromediopara llegar al nodohoja de la tuplabuscadaestá entre 2 a 4 páginas
  • Si el índicees de tipohash, el costopromedioes 1.2 páginas
nested loops13
Nested Loops
  • Si el índice es unclustered el número de lecturas (páginas) requerido para recuperar todas las matching tuplas de s es en el peor de los casos Fs (implicaría leer toda s)
  • Por lo tanto, los índices unclustered no son recomendables para este método a menos que B sea una clave candidata en s (en este caso habría una sola matching tupla y se requeriría una sola lectura (página) para recuperarla)
nested loops14
Nested Loops
  • Si el índiceesclustered, todaslasmatchingtuplas de t estarán en la mismapágina o en laspáginasadyacentes, en promedio, 1 o 2 lecturas (páginas)
  • Por lo tanto, en estecaso el costoes:
nested loops15
Nested Loops

Fr + ( + 1) * tr

  • Donde  es el costo promedio de localizar con el índice el nodo hoja del arbol B+ (o el bucket correspondiente si el índice es hash)
  • El 1 adicional corresponde a la lectura de la página de las matching tuplas
nested loops16
Nested Loops
  • Si el índice es unclustered entonces el costo es:

Fr + ( + ) * tr

  • Donde  es el número de páginas que hay que leer para recuperar las matching tuplas de t
nested loops17
Nested Loops
  • Ej: Supóngase  = 2, un índice B+ clustered sobre el atributo B de s, r externa y s interna, entonces:

1000 + (2 + 1) * 10000 = 31000

  • Intercambiando r y s y suponiendo un índice B+ clustered sobre el atributo A de r:

100 + (2 + 1) * 1000 = 3100

tr

Fr

ts

Fs

nested loops18
Nested Loops
  • En este ejemplo, este método “pierde” con el Block Nested, pero si la relación interna es de gran tamaño, el Index Nested no aumenta demasiado mientras que el Block Nested si…veamos:
  • Si Fs = 10000, ts = 100000 entonces:
nested loops19
Nested Loops
  • El Block Nested (r externa, s interna y M = 102):

1000 + 10000 * 1000/(102-2) = 101000

  • El Index Nested (r externa, s interna, índice clustered sobre B en s,  = 2):

1000 + (2 + 1) * 10000 = 31000

Fr

M - 2

Fr

Fs

tr

Fr

nested loops20
Nested Loops
  • Nótese que para una relación s muy grande,  crece…pero poco
  • El Index Nested suele trabajar “bien” con relaciones de gran tamaño, con la relación interna: a) más grande que la externa y b) con índice clustered sobre el atributo de join
sort merge join
Sort Merge Join

4. Sort Merge Join (Reunión con Ordenamiento y Mezcla)

Se hace en dos etapas:

i. Se ordenanlasrelacionespor los atributos de join

ii. Luego se hace un proceso de mezclatal y como lo muestra el algoritmo:

sort merge join1
Sort Merge Join

Input: relación r ordenada por el atributo A

relationsordenada por el atributo B

Output: r ⋈A=Bs

Result := {} //Se inicializa el resultado

tr := getFirst(r) //Primera tupla de r

ts := getFirst(s) //Primera tupla de s

while!eof(r) AND !eof(s) do {

while!eof(r) ANDtr.A < ts.Bdo

tr := getNext(r) //Obtener la próxima tupla de r

while!eof(s) ANDtr.A>ts.Bdo

ts := getNext(s) //Obtener la próxima tupla de s

iftr.A = ts.B = c then { //Para alguna constante c

Result := (A=c(r) x B=c(s)) U Result;

tr := próxima tupla t  rtal que t.A > c

}

}

ReturnResult

Proceso de Mezcla

Las relaciones ya vienen ordenadas por los atributos de join

sort merge join2
Sort Merge Join
  • Costo total:

Costo del ordenamiento de cada relación +

Costo de la mezcla

El costo de la mezcla es: Fr + Fs

Ahora se debe obtener el costo de ordenar

una relación:

sort merge join3
Sort Merge Join

Costo de ordenarunarelación:

Ordenarunarelación en una BD consta a su

vez de dos fases:

  • Partial sorting (ordenamientoparcial)
  • Mezcla (K-way merge)*

* No confundir con la mezcla del Sort Merge, son dos procesosdistintos…

sort merge join4
Sort Merge Join

- Costo del ordenamiento parcial:

  • Supóngase una memoria de M páginas y una relación de F páginas (F es usualmente más grande que M, es decir, F>>M)
  • Se leen, ordenan y escriben todas las páginas de la relación, tal y como lo muestra el algoritmo:
sort merge join5
Sort Merge Join

Algoritmo ordenamiento parcial:

DO{

1. Leer M páginas desde disco a la memoria principal

2. Ordenarlas en memoria con uno de los métodos conocidos (suponer que existe memoria adicional suficiente para llevar a cabo este proceso, aparte de la memoria para las M páginas)

3. Escribir el resultado ordenado en un nuevo archivo

}UNTIL(Fin de archivo)

sort merge join6
Sort Merge Join
  • Por lo tanto, el costo del ordenamientoparciales:

F(lectura) + F(escritura) = 2F (páginas)

  • N = Número de “runs” generadas:

N = F/M

Ej: Si M = 4 y F = 10 entonces 10/4 = 3

  • Nóteseque el tamaño de cadarunes M páginas*

* Exceptouna de ellascuando la división no es exacta…

sort merge join7
Sort Merge Join

13 3

2 6

1 10

15 7

20 11

8 4

18 5

9 0

12 21

19 14

1 2

3 6

7 10

13 15

0 4

5 8

9 11

18 20

12 14

19 21

Run 1

Run 2

Run 3

Cada run está ordenada

sort merge join8
Sort Merge Join
  • Costo del K-way merge

Supongamosque hay N = 16 runs

ordenadascadauna de 4 páginas.

Sea M = 5

Como se requiereunapágina para generar

la salida, se puedeusar un 4-way merge

comomáximo. Gráficamente:

sort merge join9
Sort Merge Join

Una run de

4 páginas

Número de Pasos: LogM-1(N)

K-way merge

Paso 2:

Se lee y escribecadaruncuyotamañoes 4M (se valeyendo de a unapágina de cadarun y se realiza el K-way merge): Total 2NM páginas

Paso 1:

Se lee y escribecadaruncuyotamañoes M (M-1 M) (se valeyendo de a unapágina de cadarun y se realiza el K-way merge): Total 2NM páginas

sort merge join10
Sort Merge Join
  • En cadapaso se acceden 2NM páginas
  • Por lo tanto, el total de páginasaccedidases:

(2NM) * LogM-1(N)

  • Pero NM = F (número de páginas de la relación) y N = F/M, remplazando la fórmulaqueda:

Total de páginas que

se accesa (lee y escribe)

en cada paso

Número total de pasos

sort merge join11
Sort Merge Join

(2F) * LogM-1(F/M) =

(2F) * (LogM-1(F) - LogM-1M) =

(2F) * (LogM-1(F) - 1)  Costo del K-way merge

Por lo tanto, el costo total del ordenamientoes:

Costoordenamientoparcial + Costo del K-way merge:

2F +(2F) * (LogM-1(F) - 1)

 1

sort merge join12
Sort Merge Join
  • Simplificando:

2F +2F * LogM-1(F) – 2F

Costo del ordenamiento de una relación:

2F * LogM-1(F)

Redondeando el logaritmo:

2F * LogM-1(F)

 Costo del

ordenamiento

sort merge join13
Sort Merge Join

Por lo tanto, el costo total del Sort Merge

Joinserá:

Costo del ordenamiento de cadarelación +

Costo de la etapamerge del Sort Merge:

2Fr * LogM-1(Fr) + 2Fs * LogM-1(Fs) + Fr + Fs

Costo de ordenar r

Costo de ordenar s

Costo de la mezcla del Sort Merge

sort merge join14
Sort Merge Join
  • Se hanpropuestomejoras al algoritmoSort Merge donde se fusionanlasmezclas de ambos procesos (merge del Sort Merge y merge del K-way) y se lograevitar el acceso (Fr + Fs)
  • Así, el costo del Sort Merge se puedereducir a:

2Fr * LogM-1(Fr) + 2Fs * LogM-1(Fs)

sort merge join15
Sort Merge Join
  • Ej: Sea Fr = 1000, Fs = 100 y M = 102

2(1000) * Log101(1000) + 2(100) * Log101(100)

2000 * 2 + 200 * 1 = 4201 (páginas)

Fr

Fs

Fr

Fs

M-1

M-1

sort merge join16
Sort Merge Join
  • En estecaso el costodio mayor que el del Block Nested, pero a medidaquer y screcen, el Sort Merge tiene un mejorcomportamientoque el Block Nested…
hash join
Hash Join

5. Hash Join (Reunión con Dispersión)

El hash join se hace en dos etapas:

  • Se hace un proceso de hashing en r sobre el atributo de join (A)

Se hace un proceso de hashing en s sobre el atributo de join (B)

Esto tiene el efecto de que las tuplas de r y s que posiblemente harán parte del join quedarán en el mismo bucket (cubeta)

b. Se hace el join de r y s en cada cubeta para producir así el resultado final (join total).

hash join1

r1

s1

r1

s1

rn

sn

rn

sn

Hash Join

r

Input buffer for r

A=B

r1⋈s1

Hash Function

Hash Table

Buckets

s

A=B

rn⋈sn

Input buffer for s

Stage 1

Stage 2

hash join2
Hash Join

Costo:

Si cada cubeta cabe en memoria el costo es:

3(Fr + Fs)

Ya que:

  • r y s se deben leer para generar las cubetas: Fr + Fs
  • Las cubetas resultantes se deben escribir:

Fr + Fs

  • Cada cubeta se debe leer para hacer el join: Fr + Fs
hash join3
Hash Join
  • Para el ejemplo: Fr = 1000, Fs = 100

Costo: 3 (1000 + 100) = 3300

Y aunque el costo es mayor que el del Block

Nested, también tiene un comportamiento

asintótico mejor que este…

hash join4
Hash Join
  • Desventajas:
  • Si una cubeta es muy grande y no cabe en memoria, implicaría accesos adicionales
  • Si se elige (o el sistema la provee) una función de hashing no adecuada
  • Solo sirve para joins basados en condición de igualdad