Laurea Magistrale in Informatica Architetture basi di dati A.A Docente: Prof. Carlo Batini Query Optimization nei DDBMS
Basi di Dati distribuite – Carlo Batini Query processing
Basi di Dati distribuite – Carlo Batini Query processing In un contesto di dati centralizzati, le strategie di esecuzione delle queries sono esprimibili tramite estensioni di algebra relazionale: i query trees In un DDBMS, l’algebra relazionale non e’ piu’ sufficiente. Una strategia di esecuzione deve comprendere anche le operazioni e i costi relativi a: –trasferimento di frammenti tra nodi; –scelta del sito migliore dove processare i dati Queste nuove variabili rendono ulterioriormente complessa l’ottimizzazione di query distribuite
Basi di Dati distribuite – Carlo Batini Esempio
Basi di Dati distribuite – Carlo Batini Distributed query processing – esempio Schema: Employee (eno, ename, title) AssiGN(eno, projectno, resp, dur), dove resp indica il tipo di responsabilita’ |EMP| = 400, |ASG| = 1000 Query: “trovare nomi dei dipendenti che sono manager di progetti” AR: ename (EMP >< eno ( resp=“manager” (ASG))) Frammentazione orizzontale: ASG 1 = eno ‘E3’ (ASG)nodo 1 ASG 2 = eno > ‘E3’ (ASG)nodo 2 EMP 1 = eno ‘E3’ (EMP)nodo 3 EMP 2 = eno > ‘E3’ (EMP)nodo 4 Risultato nodo 5
Basi di Dati distribuite – Carlo Batini Allocazione dei frammenti EMP 1 = eno ‘E3’ (EMP) EMP 2 = eno > ‘E3’ (EMP) ASG 1 = eno ‘E3’ (ASG) ASG 2 = eno > ‘E3’ (ASG) ename (EMP >< eno( resp=“manager” (ASG)))
Basi di Dati distribuite – Carlo Batini Esecuzione della query: Strategia A EMP 1 = eno ‘E3’ (EMP) EMP 2 = eno > ‘E3’ (EMP) ASG 1 = eno ‘E3’ (ASG) ASG 2 = eno > ‘E3’ (ASG) ASG’1 resp=“manager’(ASG1) ASG’2 resp= “manager’(ASG2) EMP’1 EMP1 ><eno ASG’1 EMP’2 EMP2 ><eno ASG’2 ASG’1 ASG’2 = EMP >< eno( resp=“manager”(ASG))) EMP’ 1 EMP’ 2 Result = EMP’1 EMP’2 = ename EMP >< eno( resp=“manager”(ASG)))
Basi di Dati distribuite – Carlo Batini Esecuzione della query: Strategia B EMP 1 = eno ‘E3’ (EMP) EMP 2 = eno > ‘E3’ (EMP) ASG 1 = eno ‘E3’ (ASG) ASG 2 = eno > ‘E3’ (ASG) Tutte le tabelle vengono inviate al nodo 5 Dove viene calcolato il risultato
Basi di Dati distribuite – Carlo Batini Rappresentazione della strategia A come operazioni + trasmissioni ASG’ 1 = resp=“manager’ (ASG 1 ) ASG’ 2 = resp=“manager’ (ASG 2 ) Sito 1 Sito 2 EMP’ 1 = EMP 1 >< eno ASG’ 1 EMP’ 2 = EMP 2 >< eno ASG’ 2 ASG’ 1 ASG’ 2 Sito 3 Sito 4 Result = EMP’ 1 EMP’ 2 Sito 5 EMP’ 1 EMP’ 2
Basi di Dati distribuite – Carlo Batini Strategia B - Rappresentazione come operazioni + trasmissioni Risultato = (EMP 1 EMP 2 ) >< ENO resp=“manager’ (ASG 1 ASG 2 ) Sito 5 ASG 1 ASG 2 EMP 1 EMP 2 Sito 1Sito 2Sito 3Sito 4 ASG 1 ASG 2 EMP 2 EMP 1
Basi di Dati distribuite – Carlo Batini Confronto di costi tra le due strategie Modelli di costo (semplificato): –Costo accesso a un record: 1 –Costo trasferimento di un record: 10 –|EMP| = 400, |ASG| = 1000, | resp=“manager’ (ASG 1 )| = | resp=“manager’ (ASG 2 )| = 10 –Accesso diretto a EMP via ENO, ASG via RESP Costo strategia A: 1.Calcolo ASG’ 1 e ASG’ 2 per accesso diretto 2.Trasferimento ASG’ 1 e ASG’ 2 20 x 10 = Calcolo EMP’ 1 ed EMP’ 2 : join (single-loop) ( ) x 2 4.Trasferimento EMP’ 1, EMP’ 2 : 20 x 10 = 200 Totale: 460 (400 trasferimento e 60 calcolo)
Basi di Dati distribuite – Carlo Batini Confronto di costi tra le due strategie Modelli di costo (semplificato): –Accesso a un record: 1 –Trasferimento di un record: 10 –|EMP| = 400, |ASG| = 1000, | resp=“manager’ (ASG 1 )| = | resp=“manager’ (ASG 2 )| = 10 –Accesso diretto a EMP via ENO, ASG via RESP Costo strategia B (non si trasferiscono gli indici!): 1.Trasferimento EMP 1, EMP 2 sul nodo 5: 400 x 10 = Trasferimento ASG 1, ASG 2 sul nodo 5: 1000 x 10 = Calcolo ASG’ (selezione): (no indice) 4.Join ASG’, EMP: 20 x 400 = (non ricostruisce gli indici nested loop) Totale: ( trasferimento e calcolo)
Basi di Dati distribuite – Carlo Batini Obiettivi del query processing distribuito: parametri utilizzati Costo totale = somma dei costi delle operazioni (I/O e CPU) + costi di comunicazione (trasmissione) Response time = somma dei costi tenendo conto del parallelismo
Basi di Dati distribuite – Carlo Batini Costo Rispetto al caso centralizzato, in cui i costi piu’ rilevanti sono quelli di trasferimento dei blocchi da memoria secondaria a principale, consideriamo qui i soli costi di comunicazione e trasuriamo i costi di I/O. Costo comunicazione = C MSG * #msgs + C TR * #bytes C MSG = costo fisso di spedizione/ricezione messaggio (setup) C TR = costo (fisso rispetto alla topologia!) di trasmissione dati
Basi di Dati distribuite – Carlo Batini Tempo di risposta Nel tempo di risposta, a differenza del costo di trasmissione, i costi delle operazioni in parallelo non si sommano Tempo di risposta (solo comunicazione) = C MSG * seq_#msgs + C TR * seq_#bytes dove seq_#msgs e’ il massimo numero di messaggi che devono essere comunicati in modo sequenziale.
Basi di Dati distribuite – Carlo Batini Rapporto tra costo di comunicazione e costo di I/O Nelle grandi reti geografiche costo di comunicazione >> costo di I/O (fattore 1 a 10) Nelle reti locali costo di comunicazione e costo di I/O sono paragonabili Tendenza il costo di comunicazione e’ ancora il fattore critico, ma si stanno avvicinando Possiamo,in alternativa a trascurare i costi di I/O, utilizzare pesi nelle formule di costo
Basi di Dati distribuite – Carlo Batini Esempio Costo di trasferimento di x unita’ da 1 a 3 e di y unita’ da 2 a 3: Costo comunicazione = 2 C MSG + C TR * (x + y) Tempo di risposta = max(C MSG + C TR * x, C MSG + C TR * y) dato che x e y vengono trasferiti in parallelo Nodo 1 Nodo 2 Nodo 3 X unita’ Y unita’ Risultato al nodo 3
Basi di Dati distribuite – Carlo Batini Rapporto tra tempo di risposta e costo Possiamo essere interessati a: * Minimizzazione tempo di risposta: piu’ parallelismo puo’ portare ad aumento del costo totale (maggiore numero di trasmissioni e processing locale) * Minimizzazione costo totale = somma dei costi senza tener conto del parallelismo: utilizza meglio le risorse aumento del throughput (con peggioramento del response time in generale)
Basi di Dati distribuite – Carlo Batini Nel nostro esempio ASG’ 1 = resp=“manager’ (ASG 1 ) ASG’ 2 = resp=“manager’ (ASG 2 ) Sito 1 Sito 2 EMP’ 1 = EMP 1 >< eno ASG’ 1 EMP’ 2 = EMP 2 >< eno ASG’ 2 ASG’ 1 ASG’ 2 Sito 3 Sito 4 Result = EMP’ 1 EMP’ 2 Sito 5 EMP’ 1 EMP’ 2 Risultato = (EMP 1 EMP 2 ) >< ENO resp=“manager’ (ASG 1 ASG 2 ) Sito 5 ASG 1 ASG 2 EMP 1 EMP 2 Sito 1Sito 2Sito 3Sito 4 ASG 1 ASG 2 EMP 2 EMP 1 Strategia AStrategia B Operazioni e trasmissioni eseguibili in parallelo Ottimizza il costo Parallelizza di piu’ ma, in questo caso, non minimizza il tempo di riposta
Basi di Dati distribuite – Carlo Batini Strategie di Query processing nei DDBMS
Basi di Dati distribuite – Carlo Batini Fasi del query processing nei DDBMS 1. Query decomposition 2. Data localization 3. Global query optimization 4. Local optimization Vediamole in dettaglio, insieme agli input alla fase
Basi di Dati distribuite – Carlo Batini Fasi del query processor - 1 1. Query decomposition Global schema –Opera sullo schema logico globale –Non considera la distribuzione –Usa tecniche di ottimizzazione algebrica analoghe a quelle centralizzate –Output: un query tree – non ottimizzato rispetto ai costi di comunicazione
Basi di Dati distribuite – Carlo Batini Fasi del query processor - 1 2. Data localization Fragment schema –Considera la distribuzione dei frammenti –Ottimizza le operazioni rispetto alla frammentazione, con tecniche di riduzione –Output: una query che opera in modo efficiente sui frammenti – non ottimizzata
Basi di Dati distribuite – Carlo Batini Esempio Es. eno = ‘E20’ EMP Supponiamo che EMP sia rappresentata nei nodi 1, 2, e 3. La query puo’ essere inizialmente frammentata nella eno = ‘E20’ EMP1 eno = ‘E20’ EMP2 eno = ‘E20’ EMP3 Applichiamo una tecnica di riduzione (supponiamo che E20 sia solo in EMP2) eno = ‘E20’ EMP2
Basi di Dati distribuite – Carlo Batini Fasi del query processor - 3 3. Global query optimization statistiche sui frammenti –Strategia di esecuzione: nel query tree agli operatori di Algebra relazionale vengono aggiunti gli operatori di comunicazione (send/receive tra nodi) –Obiettivo: trovare l’ordinamento “migliore” delle operazioni definite dalla fragment query –Utilizza modelli di costo che tengono conto dei costi di comunicazione –Output: le decisioni piu’ rilevanti riguardano i join: 1. L’ordine dei join n-ari 2. La scelta tra join e semijoin
Basi di Dati distribuite – Carlo Batini Esempio -Strategia A EMP 1 = eno ‘E3’ (EMP) EMP 2 = eno > ‘E3’ (EMP) ASG 1 = eno ‘E3’ (ASG) ASG 2 = eno > ‘E3’ (ASG) ASG’1 resp=“manager’(ASG1) ASG’2 resp= “manager’(ASG2) EMP’1 EMP1 ><eno ASG’1 EMP’2 EMP2 ><eno ASG’2 ASG’1 ASG’2 = EMP >< eno( resp=“manager”(ASG))) EMP’ 1 EMP’ 2 Result = EMP’1 EMP’2 = ename EMP >< eno( resp=“manager”(ASG)))
Basi di Dati distribuite – Carlo Batini Prima della fase 4: Local optimization trattiamo percio’ i join in ambiente distribuito
Basi di Dati distribuite – Carlo Batini Strategie di ordinamento dei join
Basi di Dati distribuite – Carlo Batini Strategie di ordinamento dei join Problema: dato un join n-ario tra n frammenti distribuiti: A Join B Join C … Join N in quale ordine conviene eseguirlo? Caso di n=2 frammenti: ovviamente conviene trasferire il frammento piu’ piccolo –Occorre stimare le dimensioni dei frammenti –Def.: per un frammento F j : size(Fj) = card(F j ) x length(F j ) Cosa accade nel caso n>2? –E’ necessario stimare le dimensioni dei risultati intermedi usando la selettivita’ di ciascun join –Il problema e’ combinatorio R S Se size(R) < size(S) Se size(R) > size(S)
Basi di Dati distribuite – Carlo Batini Caso n > 2: partiamo da un esempio Emp proJ asG eno pno Nodo 1 Nodo 2 Nodo 3 Schema dell’esempio Employee (eno, ename, title) ASsiGn(eno, pno, resp, dur) Proj (pno, pname, budget, localization) Costruiamo il join graph, struttura che descrive i legami tra chiavi e le allocazioni nei nodi Emp E AssiGn G Proj P
Basi di Dati distribuite – Carlo Batini Caso n > 2 Esempio: ordinamenti alternativi dei joins Emp proJ asG eno pno Nodo 1 Nodo 2 Nodo 3 1.E nodo 22 calcola E’ = E join G E’ nodo 33 calcola R = E’ join J 2.G nodo 11 calcola E’ = E join G E’ nodo 33 calcola R = E’ join J 3.G nodo 33 calcola G’ = G join J G’ nodo 11 calcola R = G’ join E 4.J nodo 22 calcola J’ = J join G J’ nodo 11 calcola R = J’ join E 5.E nodo 2 J nodo 22 calcola R = E join J join G Info necessarie per la scelta della strategia: - size(EMP), size(ASG), size(PROj) - size(EMP join ASG), size( ASG join PROJ) - Inoltre, alcuni trasferimenti possono avvenire in parallelo Approssimazione Assumendo il prodotto delle cardinalita’ come size dei join, si puo’ usare per la strategie l’ordinamento delle relazioni in base alle loro cardinalita’ Query: Emp Join eno asG Join pno proJ
Basi di Dati distribuite – Carlo Batini Ordinamenti banali Sono quelli in cui si eseguono prodotti cartesiani, perche’ le relazioni non hanno chiavi in comune Nel nostro caso, ad esempio, una sequenza che inizi con E Nodo 3 E’ banale perche’ porta al massimo di inefficienza (calcolo del prodotto cartesiano)
Basi di Dati distribuite – Carlo Batini Join e semijoin
Basi di Dati distribuite – Carlo Batini Situazione di partenza R Nodo 1 S Nodo 2
Basi di Dati distribuite – Carlo Batini Join e semijoin - 1 In un DBMS distribuito l’operazione di semijoin puo’ essere in alcune circostanze una alternativa piu’ efficiente alla operazione di join. Definizione : R semijoin A S R* ( R join A S) Dove R* e’ l’insieme degli gli attributi di R Il semijoin R semijoin A S percio’ e’ la proiezione sugli attributi di R della operazione di join Attenzione: il semijoin e’ non comutativo!
Basi di Dati distribuite – Carlo Batini Join e semijoin - 2 Osservazione 1 : dalla definizione di semijoin R semijoin S R* ( R join A S) il calcolo di (R semijoin A S) richiede la presenza del solo attributo S.A da parte di S, cioe’ solo di A (S) R Nodo 1 S Nodo 2 A (S)
Basi di Dati distribuite – Carlo Batini Join e semijoin - 3 Osservazione 1: se R, S sono allocate su nodi diversi, allora R join A S puo’ essere calcolato tramite operazioni di semijoin piuttosto che di join. Valgono infatti le seguenti equivalenze (vedi ad es. [Ozsu-Vald. sec.9.3.2]) tra join e semijoin: 1. R join S (R semijoin S) join S 2. R join S R join (S semijoin R) 3.R join S (R semijoin S) join (S semijoin R) Ognuna da’ luogo ad una diversa strategia. La scelta tra le strategie richiede la stima dei loro costi
Basi di Dati distribuite – Carlo Batini Esempio – formula 1 R join A S (R semijoin A S) join A S 2. R’ R semijoin A S’ 4. Ris R’ join A S 1. S’ A (S) 3. R’ Nodo 1 Nodo 2 RS
Basi di Dati distribuite – Carlo Batini Confronto costo join e semijoin In generale: L’uso del semijoin e’ conveniente se il costo del suo calcolo e del trasferimento del risultato e’ inferiore al costo del trasferimento dell’intera relazione e del costo del join intero Vediamo quando questo accade
Basi di Dati distribuite – Carlo Batini Confronto costo join e semijoin Calcoliamo i costi di trasmissione nei due casi: R join A S vs (R semijoin A S) join A S assumendo: size(R) < size(S), R su nodo 1, S su nodo 2 R Nodo 1 S Nodo 2
Basi di Dati distribuite – Carlo Batini Costi del semijoin e del join Operazioni necessarie nel caso di semijoin: 1. A (S) nodo 1 2.Nodo 1 calcola R’ = R semijoin A S -- usando solo A (S)! 3.R’ nodo 2 4.Nodo 2 calcola R’ join S Costo del semijoin = C TR * size( A (S)) + C TR * size(R semijoin A S) Costo join = C TR * size(R)
Basi di Dati distribuite – Carlo Batini Confronto Quindi il semijoin conviene se size( A (S)) + size(R semijoin A S) < size(R) Cioe’ quando il fattore di selezione JSF(R,S, R.A=S.A)) = |R join A S| / |R| e’ piccolo
Basi di Dati distribuite – Carlo Batini R join jno J = (R semijoin jno J) join jno J = R.*(R join jno ( jno (E))) join jno J R R = G join eno E = (G semijoin eno E) join eno E = G.* ( G join eno ( eno ( E))) join eno E Esempio con tre relazioni EG J1: join 3:join 2:G 1:E 2: semijoin 1: join 1: ENO 1:E 1:semijoin 3:join 3:J 3: JNO 3:J E join G join J
Basi di Dati distribuite – Carlo Batini Fasi del query processor - 4 4. Local query optimization local schemas –Ogni nodo riceve una fragment query e la ottimizza in modo indipendente –Vengono utilizzate tecniche analoghe a quelli dei sistemi centralizzati
Basi di Dati distribuite – Carlo Batini Tornando al peso dei costi di comunicazione Per DDBMS in rete geografica, conviene 1 Global query optimization con obiettivo: ridurre i costi di comunicazione 2 Seguita da local optimization Per DDBMS in rete locale, conviene 1 Global query optimization con obiettivo: aumentare il parallelismo 2 Seguita da local optimization
Basi di Dati distribuite – Carlo Batini Progettazione di basi di dati distribuite Passare a questo punto all’altro insieme di slildes