Ottimizzazione distribuita System R*
Algoritmo Input: una query in forma di albero compattato i siti in cui si trovano le relazioni operando le condizioni di guardia delle relazioni operando il sito a cui deve comparire l’output Output: la query in forma di albero binario e i siti a cui ciascun nodo dell’albero deve essere calcolato
Passo I 1. Si portano il più possibile in basso le e le quando si incontra un nodo CHOICE si applica la o la a ciascun figlio di tale nodo quando la condizione di una selezione è in contrasto con una condizione di guardia si elimina il sottoalbero
AB B=‘b’ P R S T Q1 Q2 CHOICE P=AC R=CD S=BD T=BD Q=BE Guardia su S: B=‘b’ Guardia su T: B=‘c’ B=‘b’ P R CHOICE S T Q1 Q2
AB P R S B=‘b’ B=‘b’ Q1 Q2 CHOICE P=AC R=CD S=BD T=BD Q=BE Guardia su S: B=‘b’ Guardia su T: B=‘c’ P R CHOICE S B=‘b’ B=‘b’ Q1 Q2
Passo I 2. Si visita l’albero compattato ottenuto a partire dalle foglie e ad ogni nodo viene associato un insieme costituito da tutti gli alberi binari che rappresentano la query che ha radice in quel nodo, procedendo nel modo seguente.
Passo I Siano: n il nodo visitato c1, c2 , …, ck i figli di n S1, S2 , …, Sk gli insiemi associati a c1, c2 , …, ck
Passo I Se n è: una foglia (k=0) R l’insieme associato è R una / (k=0) l’insieme associato si ottiene applicando / ad ogni elemento di S1 una CHOICE l’insieme associato è i=1,…kSi una / l’insieme associato è costruito nel modo seguente: in ogni albero binario con k foglie in cui i nodi interni sono / si sostituisce ad ogni foglia ci un elemento di Si
P S Q R P Q R S P R Q S R Q P S S Q R P … etc.
P S Q R P Q R S P S Q R P R Q S … etc.
AB P P R R S S B=‘b’ (Q1 ) B=‘b’ (Q2 ) B=‘b’ B=‘b’ P=AC R=CD S=BD T=BD Q=BE Guardia su S: B=‘b’ Guardia su T: B=‘c’ P P R R S CHOICE S B=‘b’ (Q1 ) B=‘b’ (Q2 ) B=‘b’ B=‘b’ Q1 Q1 Q2 Q2
B=‘b’(Q1), B=‘b’(Q2) S S AB P=AC R=CD S=BD T=BD Q=BE Guardia su S: B=‘b’ Guardia su T: B=‘c’ P P R R B=‘b’(Q1), B=‘b’(Q2) S CHOICE S B=‘b’ B=‘b’ B=‘b’ (Q1 ) B=‘b’ (Q2 ) Q1 Q1 Q2 Q2
SB=‘b’(Q1), SB=‘b’(Q2) P P R R AB SB=‘b’(Q1), SB=‘b’(Q2) P P R R S CHOICE S B=‘b’(Q1), B=‘b’(Q2) B=‘b’ B=‘b’ B=‘b’ (Q1 ) B=‘b’ (Q2 ) Q1 Q1 Q2 Q2
SB=‘b’(Q1), SB=‘b’(Q2) P P R R AB (PR) (SB=‘b’(Q1)), (PR) (SB=‘b’(Q2)), (P (SB=‘b’(Q1)) R, (P (SB=‘b’(Q2)) R, (R (SB=‘b’(Q1)) P, (R (SB=‘b’(Q2)) P SB=‘b’(Q1), SB=‘b’(Q2) P P R R S CHOICE S B=‘b’(Q1), B=‘b’(Q2) B=‘b’ B=‘b’ B=‘b’ (Q1 ) B=‘b’ (Q2 ) Q1 Q1 Q2 Q2
SB=‘b’(Q1), SB=‘b’(Q2) P P R R AB((PR) (SB=‘b’(Q1))), AB((PR) (SB=‘b’(Q2))), AB((P (SB=‘b’(Q1)) R), AB((P (SB=‘b’(Q2)) R), AB((R (SB=‘b’(Q1)) P), AB((R (SB=‘b’(Q2)) P) AB (PR) (SB=‘b’(Q1)), (PR) (SB=‘b’(Q2)), (P (SB=‘b’(Q1)) R, (P (SB=‘b’(Q2)) R, (R (SB=‘b’(Q1)) P, (R (SB=‘b’(Q2)) P SB=‘b’(Q1), SB=‘b’(Q2) P P R R S CHOICE S B=‘b’(Q1), B=‘b’(Q2) B=‘b’ B=‘b’ B=‘b’ (Q1 ) B=‘b’ (Q2 ) Q1 Q1 Q2 Q2
AB((PR) (SB=‘b’(Q1))), AB((P (SB=‘b’(Q1)) R), AB((P (SB=‘b’(Q2)) R), AB((R (SB=‘b’(Q1)) P), AB((R (SB=‘b’(Q2)) P) AB S Q1 P R B=‘b’
AB((PR) (SB=‘b’(Q1))), AB((P (SB=‘b’(Q1)) R), AB((P (SB=‘b’(Q2)) R), AB((R (SB=‘b’(Q1)) P), AB((R (SB=‘b’(Q2)) P) AB P R S Q1 B=‘b’