Upload
gianfranco-castaldo
View
214
Download
0
Embed Size (px)
Citation preview
Progettazione di basi di dati distribuite
Marco MangiacavalliMatricola: 779291
I miei commenti in rosso CB
Schema della metodologia MSproposta nel corso
Operazione
Nodo
FrammentoFrammentoelementare
0. presso il
1. Visitato presso il
1. Contri-buisce a
2. alloc. non rid.
3. alloc. rid.
4. Schemi locali
Schema locale
3
Caso di studio: sistema di prenotazione aerea
• Una compagnia aerea deve gestire le prenotazioni dei suoi aerei. La base dati è distribuita su tre siti degli Stati Uniti, ad es.– Denver con codice 1, localizzato nell’area ovest– New York, codice 2, localizzato nell’area nord– Atlanta, codice 3, localizzato nell’ area sud
• La base dati rappresenta gli aeroporti dove opera, gli orari dei voli, le disponibilità, e le prenotazioni.
• Ogni volo, per semplicità, è tra un aeroporto di partenza e un aeroporto di arrivo.
Struttura generale
Rete
3. Sud = Atlanta
1. Ovest = Denver
2. Nord = New York
Passi da eseguire1) Tradurre lo schema globale di pag. 19 della dispensa ME in uno
schema globale relazionale, producendo anche per ogni relazione nel modello relazionale il numero di istanze.
2) Esprimere il carico applicativo nella modalità semplificata della metodologia MS.
3) Condurre la progettazione adottando la metodologia MS.3.1) Progetto della frammentazione3.2) Allocazione non ridondante3.3) Allocazione ridondante3.4) Ricostruzione degli schemi locali
4) Tradurre gli schemi locali Entità Relazione esito del passo 3 nel modello relazionale.
5) Nella ipotesi che le due metodologie arrivino a schemi relazionali diversi, cercare di ragionare sul perchè
1) Traduzione schema globale ER in Relazionale
7
Schema globale ERVolo
NumeroDataGateRitardoMappa postiPosti disponibili
AeroportoIdentificatore (Acronimo)Citta’Area
Da
A
PasseggeroNome Telefono
Prenotaz.
Check in
Numero postoCod. Bagaglio
Classe
Ora partenza
Ora arrivo
Pas
Aer
Volo
Schema globale relazionale
• Aer(idA, città, area) -> 40 istanze
• Volo(numV, dataV, gate, rit, mP, pDisp, idAP, oraP, idAA, oraA) -> 20.000 istanze
• Pas(noP, tel, numV, dataV, classe, numPo, codB) -> 1.000.000 istanze
Nomi poco espressivi…..
Si assume che un passeggero possa prenotare e fare check in per un solo volo
Schema globale relazionale: note
• Nello schema ho evidenziato in grassetto gli attributi che sono chiave primaria della relazione e in corsivo le chiavi esterne
• Nella traduzione ME->MS ho cercato di mantenere lo stesso numero di entità presenti nelle specifiche del caso ME, quindi ho ottenuto 3 relazioni; un’altra alternativa poteva essere quella di creare altre 2 relazioni “Prenotazione” e “Check-in”
• Ho assunto che ogni passeggero può fare il check-in solo se ha prenotato quel determinato volo
I congiuntivi!Bello!!!
2) Carico applicativo semplificato
11
Qui avrei inserito la tavola delle frequenze per operazioni presso i siti
Siti /Operazioni 1 2 3
a 10.000 20.000 10.000
b 8.000 12.000 8.000
c 100 120 100
12
Operazionivisione per «operazioni»
• a. Prenota passeggero, effettua una prenotazione, transazione
• b. Check in passeggero, effettua il check in di un passeggero quando arriva all’aeroporto, transazione
• c. Partenze dei prossimi trenta voli, fornisce una report dei prossimi 30 voli che partono da un aeroporto, interrogazione
Operazione a: attributi utilizzati• Input: Pas = noP, tel; Volo = dataV, idAP, oraP, idAA,
oraA• Letti: Volo = numV, dataV, pDisp• Scritti: Volo = pDisp; Pas = classe, numV, dataV
• Dico nome e tel del passeggero che vuole prenotare il volo + data, ora di part/ar e aeroporto part/ar; verranno letti num e data del volo e, se ci sono abbastanza posti disponibili, allora aggiornerà il campo e assegnerà il volo al passeggero scrivendone anche la classe
Nella visione “pre web” e’ l’operatore che invoca la transazione E quindi sa gia’ il codice dell’aeroporto, e non coinvolge la tabella aeroportoRisparmiando un join.
Operazione b : attributi utilizzati
• Input: Pas = noP, tel; Volo = numV, data• Letti: Volo = mP; Pas = classe• Scritti: Volo = mP; Pas = numPo, codB
• Dico nome e tel del passeggero che deve fare il check-in + num e data del volo da lui prenotato; verranno letti la classe del passeggero e la mappa dei posti e, in base a questi, gli verrà assegnato un posto e un codice del bagaglio
Operazione c: attributi utilizzati
• Input: Volo = dataV, idAP, oraP• Letti: Volo = numV, dataV, gate, rit, oraP; Pas =
noP, tel, numV, dataV, classe
• Dico data, ora e aeroporto di cui voglio il report; in output avrò numero, data, gate, ritardo e ora di partenza dei prossimi 30 voli + nome, tel e classe dei passeggieri che hanno prenotato quel volo + città e area dell’aeroporto di partenza
Carico applicativoNodo Operazione Fraquenza
1 T1a. Pas prenota volo che parte da aer area 1 10000
1 T1b. Check-in pas in aer area 1 8000
1 Q1c. Report prossimi 30 voli che partono da aer area 1 100
2 T2a. Pas prenota volo che parte da aer area 2 20000
2 T2b. Check-in pas in aer area 2 12000
2 Q2c. Report prossimi 30 voli che partono da aer area 2 120
3 T3a. Pas prenota volo che parte da aer area 3 10000
3 T3b. Check-in pass in aer area 3 8000
3 Q3c. Report prossimi 30 voli che partono da aer area 3 100
I punti . Per separare le migliaia…….
3) Progettazione
3.1) Progetto della frammentazione
Progetto della frammentazione
• Scopo del passo è quello di individuare i frammenti elemnetari da allocare in seguito nei diversi nodi della base di dati distribuita
Individuazione frammenti visitati da Q e T: T1a
• AerArea1 = aeroporti area 1• VoliDaAerArea1 = voli che partono da aeroporto area
1• Pas = tutti passeggeri possono prenotare un volo
PasVoliDaAerArea1AerArea1 ??
Individuazione frammenti visitati da Q e T: T1a
• AerArea1 = POP + PV(idA, area)
• VoliDaAerArea1 = POS + PV(numV, dataV, pDisp, idAP, oraP, idAA, oraA)
• Pas = PV(noP, tel, numV, dataV, classe)
Individuazione frammenti visitati da Q e T: T1b
• AerArea1 = aeroporti area 1• VoliDaAerArea1 = voli che partono da aeroporto area
1• PasDaAerArea1 = passeggeri che partono da
aeroporto area 1
PasDaAerArea1VoliDaAerArea1AerArea1
Individuazione frammenti visitati da Q e T: T1b
• AerArea1 = POP + PV(idA, area)
• VoliDaAerArea1 = POS + PV(numV, dataV, mP, idAP, oraP)
• PasDaAerArea1 = POS
Individuazione frammenti visitati da Q e T: Q1c
• AerArea1 = aeroporti area 1• VoliDaAerArea1 = voli che partono da aeroporto area
1• PasDaAerArea1 = passeggeri che partono da
aeroporto area 1
PasDaAerArea1VoliDaAerArea1AerArea1
Nei requisiti si parlava solo dei voli, non dei passeggeri …
Individuazione frammenti visitati da Q e T: Q1c
• AerArea1 = POP
• VoliDaAerArea1 = POS + PV(numV, dataV, gate, rit, idAP, oraP)
• PasDaAerArea1 = POS + PV(noP, tel, numV, dataV, classe)
Individuazione frammenti visitati da Q e T: T2a
• AerArea2 = aeroporti area 2• VoliDaAerArea2 = voli che partono da aeroporto area
2• Pas = tutti passeggeri possono prenotare un volo
PasVoliDaAerArea2AerArea2
Individuazione frammenti visitati da Q e T: T2a
• AerArea2 = POP + PV(idA, area)
• VoliDaAerArea2 = POS + PV(numV, dataV, pDisp, idAP, oraP, idAA, oraA)
• Pas = PV(noP, tel, numV, dataV, classe)
Individuazione frammenti visitati da Q e T: T2b
• AerArea2 = aeroporti area 2• VoliDaAerArea1 = voli che partono da aeroporto area
2• PasDaAerArea2 = passeggeri che partono da
aeroporto area 2
PasDaAerArea2VoliDaAerArea2AerArea2
Individuazione frammenti visitati da Q e T: T2b
• AerArea2 = POP + PV(idA, area)
• VoliDaAerArea2 = POS + PV(numV, dataV, mP, idAP, oraP)
• PasDaAerArea2 = POS
Individuazione frammenti visitati da Q e T: Q2c
• AerArea2 = aeroporti area 2• VoliDaAerArea2 = voli che partono da aeroporto area
2• PasDaAerArea2 = passeggeri che partono da
aeroporto area 2
PasDaAerArea2VoliDaAerArea2AerArea2
Perche’ anche passeggeri? Si chiedeva solo dei voli…
Individuazione frammenti visitati da Q e T: Q2c
• AerArea2 = POP
• VoliDaAerArea2 = POS + PV(numV, dataV, gate, rit, idAP, oraP)
• PasDaAerArea2 = POS + PV(noP, tel, numV, dataV, classe)
Individuazione frammenti visitati da Q e T: T3a
• AerArea3 = aeroporti area 3• VoliDaAerArea3 = voli che partono da aeroporto area
3• Pas = tutti passeggeri possono prenotare un volo
PasVoliDaAerArea3AerArea3 ??
Individuazione frammenti visitati da Q e T: T3a
• AerArea3 = POP + PV(idA, area)
• VoliDaAerArea3 = POS + PV(numV, dataV, pDisp, idAP, oraP, idAA, oraA)
• Pas = PV(noP, tel, numV, dataV, classe)
Individuazione frammenti visitati da Q e T: T3b
• AerArea3 = aeroporti area 3• VoliDaAerArea3 = voli che partono da aeroporto area
3• PasDaAerArea3 = passeggeri che partono da
aeroporto area 3
PasDaAerArea3VoliDaAerArea3AerArea3
Individuazione frammenti visitati da Q e T: T3b
• AerArea3 = POP + PV(idA, area)
• VoliDaAerArea3 = POS + PV(numV, dataV, mP, idAP, oraP)
• PasDaAerArea3 = POS
Individuazione frammenti visitati da Q e T: Q3c
• AerArea3 = aeroporti area 3• VoliDaAerArea3 = voli che partono da aeroporto area
3• PasDaAerArea3 = passeggeri che partono da
aeroporto area 3
PasDaAerArea1VoliDaAerArea1AerArea1
Individuazione frammenti visitati da Q e T: Q3c
• AerArea3 = POP
• VoliDaAerArea3 = POS + PV(numV, dataV, gate, rit, idAP, oraP)
• PasDaAerArea3 = POS + PV(noP, tel, numV, dataV, classe)
Tabella frammenti elementarivisione per operazioni & frammenti
Nodo Op./Freq Tipo fram Rel coinvolte Fram coinvolti
1 T1a/10000 OP + OS + V Aer, Volo, Pas AerArea1, VoliDaAerArea1, Pas
1 T1b/8000 OP + OS + V Aer, Volo, Pas AerArea1, VoliDaAerArea1, PasDaAerArea1
1 Q1c/100 OP + OS + V Aer, Volo, Pas AerArea1, VoliDaAerArea1, PasDaAerArea1
2 T2a/20000 OP + OS + V Aer, Volo, Pas AerArea2, VoliDaAerArea2, Pas
2 T2b/12000 OP + OS + V Aer, Volo, Pas AerArea2, VoliDaAerArea2, PasDaAerArea2
2 Q2c/120 OP + OS + V Aer, Volo, Pas AerArea2, VoliDaAerArea2, PasDaAerArea2
3 T3a/10000 OP + OS + V Aer, Volo, Pas AerArea3, VoliDaAerArea3, Pas
3 T3b/8000 OP + OS + V Aer, Volo, Pas AerArea3, VoliDaAerArea3, PasDaAerArea3
3 Q3c/100 OP + OS + V Aer, Volo, Pas AerArea3, VoliDaAerArea3, PasDaAerArea3
Frammentazioni un po’ ridondanti!
Frammenti individuati
1. AerArea12. VoliDaAerArea13. PasDaAerArea14. AerArea15. VoliDaAerArea16. PasDaAerArea17. AerArea18. VoliDaAerArea19. PasDaAerArea1
Non c’e’ P “intera” corretto!
3.2) Allocazione non ridondante
Allocazione non ridondante
• Lo scopo di questa fase è associare ad ogni nodo i frammenti in modo non ridondante, basandomi sul carico applicativo
• I frammenti elementari individuati dovranno essere assegnati al nodo che lo utilizza più spesso
• In questo mono verranno minimizzati i trasferimenti tra nodi dovuti a interrogazioni o transazioni
Assegnazione frammenti ai nodiqui la «visione» e’ per frammenti
Fr Op Nodi FN1 FN2 FN3 As
AerArea1 T1a, T1b, Q1c 1 18100 - - 1
VoliDaAerArea1 T1a, T1b, Q1c 1 18100 - - 1
PasDaAerArea1 T1a, T1b, Q1c, T2a, T3a 1, 2, 3 18100 20000 10000 2
AerArea2 T2a, T2b, Q2c 2 - 32120 - 2
VoliDaAerArea2 T2a, T2b, Q2c 2 - 32120 - 2
PasDaAerArea2 T2a, T2b, Q2c, T1a, T3a 1, 2, 3 10000 32120 10000 2
AerArea3 T3a, T3b, Q3c 3 - - 18100 3
VoliDaAerArea3 T3a, T3b, Q3c 3 - - 18100 3
PasDaAerArea3 T3a, T3b, Q3c, T1a, T2a 1, 2, 3 10000 20000 18100 2
Frequenze su passeggero dovute alla scelta precedente di permettere a tutti I passeggeri di fare prenotazioni da tutti e tre I nodi
NB scelta molto web oriented
Assegnazione frammenti ai nodi
Rete
3. Sud = Atlanta
1. Ovest = Denver
2. Nord = New York
AerArea1
VoliDaAerArea1
AerArea2
AerArea3
VoliDaAerArea2
VoliDaAerArea3
PasDaAerArea1
PasDaAerArea2
PasDaAerArea3
PasDaAerArea3
PasDaAerArea3
PasDaAerArea2
PasDaAerArea2
PasDaAerArea1
PasDaAerArea1
Riportati anche I potenziali daRidondare: bene!
3.3) Allocazione ridondante
Allocazione ridondante
• Lo scopo di questo passo è di duplicare i frammenti, attualmente presenti in un solo nodo, anche in altri nodi
• La duplicazione va eseguita solo quando i risparmi superano i maggiori costi
• Seleziono il nodo i per cui è massima la differenza: risparmi(i) - costi(i)
Costi - benefici
• Frammenti che potrebbero essere allocati in modo ridondante: PasDaAerArea1, PasDaAerArea2, PasDaAerArea3 sui nodi 1 e 3
• Noto che le transazioni sono molte di più rispetto alle interrogazioni quindi si può dedurre che i costi di aggiornamento delle varie tabelle distribuite, se si decidesse di duplicare, sarebbero troppo elevati se si decidesse di duplicare i dati. Di conseguenza non conviene replicare i frammenti
Preferirei non dedurre ma calcolare……anche perche’ trasferire (Interrogazioni) costa di piu’ che aggiornare
Schema finale
Rete
3. Sud = Atlanta
1. Ovest = Denver
2. Nord = New York
AerArea1
VoliDaAerArea1
AerArea2
AerArea3
VoliDaAerArea2
VoliDaAerArea3
PasDaAerArea1
PasDaAerArea2
PasDaAerArea3
3.4) Ricostruzione degli schemi locali
Ricostruzione degli schemi locali
• Come ultimo passo bisogna ricostruire gli schemi locali come unione di tutti i frammenti associati al corrispondente sito ottenuti nei passi precedenti
50
VoliDaAerArea1
AerArea1
Prenotaz.
Check in
VoliDaAerArea1
AerArea2
Prenotaz.Check in
VoliDaAerArea3
AerArea3
Prenotaz.
Check in
Nodo1
Nodo 2
Nodo 3
PasDaAerArea1PasDaAerArea2PasDaAerArea3
Da A
Da A
Da A
A
A
A3
A3
Schema relazionale
• AerArea1(idA, città, area)• AerArea2(idA, città, area)• AerArea3(idA, città, area)• VoliDaAerArea1(numV, dataV, gate, rit, mP, pDisp,
idAP, oraP, idAA, oraA)• VoliDaAerArea2(numV, dataV, gate, rit, mP, pDisp,
idAP, oraP, idAA, oraA)• VoliDaAerArea3(numV, dataV, gate, rit, mP, pDisp,
idAP, oraP, idAA, oraA)• Pas(noP, tel, numV, dataV, classe, numPo, codB)
Risultato
• Nello schema ottenuto abbiamo che:1) Gli aeroporti sono allocati nei 3 nodi in base all’area in cui si
trovano2) I voli sono distribuiti in base all’area in cui si trova
l’aeroporto di partenza3) I passeggeri sono tutti allocati nel nodo di New York• I primi 2 punti rispettano il principio di località, mentre il terzo
no.• Con questa soluzione le operazioni dei nodi 1 e 3 sui
passeggeri risulteranno meno efficienti, ma se avessi scelto di duplicare la tabella Passeggeri anche negli altri 2 nodi avrei avuto notevoli problemi di allineamento dei dati
4) Traduzione schemi locali ER nel modello relazionale
54
Volo1
Aeroporto1
Prenotaz.Check in
Volo2
Aeroporto2
Prenotaz.Check in
Volo3
Aeroporto3
Prenotaz.Check in
Sito 1
Sito 2
Sito 3
Passeggero 1uPasseggero 4uPasseggero 5uPasseggero 7
Passeggero 2uPasseggero 4uPasseggero 6uPasseggero 7
Da A
Da A
Da A
Passeggero 3uPasseggero 5uPasseggero 6uPasseggero 7
A
A
A3
A3
Schema relazionale• Aeroporto1(idA, città, area)• Aeroporto2(idA, città, area)• Aeroporto3(idA, città, area)• Volo1(numV, dataV, gate, rit, mP, pDisp, idAP, oraP, idAA, oraA)• Volo2(numV, dataV, gate, rit, mP, pDisp, idAP, oraP, idAA, oraA)• Volo3(numV, dataV, gate, rit, mP, pDisp, idAP, oraP, idAA, oraA)• Passeggero1(noP, tel, numV, dataV, classe, numPo, codB)• Passeggero2(noP, tel, numV, dataV, classe, numPo, codB)• Passeggero3(noP, tel, numV, dataV, classe, numPo, codB)• Passeggero4(noP, tel, numV, dataV, classe, numPo, codB)• Passeggero5(noP, tel, numV, dataV, classe, numPo, codB)• Passeggero6(noP, tel, numV, dataV, classe, numPo, codB)• Passeggero7(noP, tel, numV, dataV, classe, numPo, codB)