La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB.

Presentazioni simili


Presentazione sul tema: "Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB."— Transcript della presentazione:

1 Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB

2 Schema della metodologia MS proposta nel corso Operazione Nodo Frammento elementare 0. presso il 1. Visitato presso il 1. Contri- buisce a 2. alloc. non rid. 3. alloc. rid. 4. Schemi locali Schema locale

3 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.

4 Struttura generale Rete 3. Sud = Atlanta 1. Ovest = Denver 2. Nord = New York

5 Passi da eseguire 1) 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 frammentazione 3.2) Allocazione non ridondante 3.3) Allocazione ridondante 3.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è

6 1) Traduzione schema globale ER in Relazionale

7 7 Schema globale ER Volo Numero Data Gate Ritardo Mappa posti Posti disponibili Aeroporto Identificatore (Acronimo) Citta’ Area Da A Passeggero Nome Telefono Prenotaz. Check in Numero posto Cod. Bagaglio Classe Ora partenza Ora arrivo Pas Aer Volo

8 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

9 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!!!

10 2) Carico applicativo semplificato

11 11 Qui avrei inserito la tavola delle frequenze per operazioni presso i siti Siti /Operazioni123 a 10.00020.00010.000 b 8.00012.0008.000 c 100120100

12 12 Operazioni visione 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

13 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 aeroporto Risparmiando un join.

14 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

15 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

16 Carico applicativo NodoOperazioneFraquenza 1T1a. Pas prenota volo che parte da aer area 110000 1T1b. Check-in pas in aer area 18000 1Q1c. Report prossimi 30 voli che partono da aer area 1100 2T2a. Pas prenota volo che parte da aer area 220000 2T2b. Check-in pas in aer area 212000 2Q2c. Report prossimi 30 voli che partono da aer area 2120 3T3a. Pas prenota volo che parte da aer area 310000 3T3b. Check-in pass in aer area 38000 3Q3c. Report prossimi 30 voli che partono da aer area 3100 I punti. Per separare le migliaia…….

17 3) Progettazione

18 3.1) Progetto della frammentazione

19 Progetto della frammentazione Scopo del passo è quello di individuare i frammenti elemnetari da allocare in seguito nei diversi nodi della base di dati distribuita

20 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 ? ?

21 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)

22 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

23 Individuazione frammenti visitati da Q e T: T1b AerArea1 = POP + PV(idA, area) VoliDaAerArea1 = POS + PV(numV, dataV, mP, idAP, oraP) PasDaAerArea1 = POS

24 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 …

25 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)

26 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

27 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)

28 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

29 Individuazione frammenti visitati da Q e T: T2b AerArea2 = POP + PV(idA, area) VoliDaAerArea2 = POS + PV(numV, dataV, mP, idAP, oraP) PasDaAerArea2 = POS

30 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…

31 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)

32 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 ? ?

33 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)

34 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

35 Individuazione frammenti visitati da Q e T: T3b AerArea3 = POP + PV(idA, area) VoliDaAerArea3 = POS + PV(numV, dataV, mP, idAP, oraP) PasDaAerArea3 = POS

36 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

37 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)

38 Tabella frammenti elementari visione per operazioni & frammenti NodoOp./FreqTipo framRel coinvolteFram coinvolti 1T1a/10000OP + OS + VAer, Volo, PasAerArea1, VoliDaAerArea1, Pas 1T1b/8000OP + OS + VAer, Volo, PasAerArea1, VoliDaAerArea1, PasDaAerArea1 1Q1c/100OP + OS + VAer, Volo, PasAerArea1, VoliDaAerArea1, PasDaAerArea1 2T2a/20000OP + OS + VAer, Volo, PasAerArea2, VoliDaAerArea2, Pas 2T2b/12000OP + OS + VAer, Volo, PasAerArea2, VoliDaAerArea2, PasDaAerArea2 2Q2c/120OP + OS + VAer, Volo, PasAerArea2, VoliDaAerArea2, PasDaAerArea2 3T3a/10000OP + OS + VAer, Volo, PasAerArea3, VoliDaAerArea3, Pas 3T3b/8000OP + OS + VAer, Volo, PasAerArea3, VoliDaAerArea3, PasDaAerArea3 3Q3c/100OP + OS + VAer, Volo, PasAerArea3, VoliDaAerArea3, PasDaAerArea3 Frammentazioni un po’ ridondanti!

39 Frammenti individuati 1.AerArea1 2.VoliDaAerArea1 3.PasDaAerArea1 4.AerArea1 5.VoliDaAerArea1 6.PasDaAerArea1 7.AerArea1 8.VoliDaAerArea1 9.PasDaAerArea1 Non c’e’ P “intera” corretto!

40 3.2) Allocazione non ridondante

41 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

42 Assegnazione frammenti ai nodi qui la «visione» e’ per frammenti FrOpNodiFN1FN2FN3As AerArea1T1a, T1b, Q1c118100--1 VoliDaAerArea1T1a, T1b, Q1c118100--1 PasDaAerArea1T1a, T1b, Q1c, T2a, T3a1, 2, 31810020000100002 AerArea2T2a, T2b, Q2c2-32120-2 VoliDaAerArea2T2a, T2b, Q2c2-32120-2 PasDaAerArea2T2a, T2b, Q2c, T1a, T3a1, 2, 31000032120100002 AerArea3T3a, T3b, Q3c3--181003 VoliDaAerArea3T3a, T3b, Q3c3--181003 PasDaAerArea3T3a, T3b, Q3c, T1a, T2a1, 2, 31000020000181002 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

43 Assegnazione frammenti ai nodi Rete 3. Sud = Atlanta 1. Ovest = Denver 2. Nord = New York AerArea1 VoliDaAerArea1 AerArea2 AerArea3 VoliDaAerArea2 VoliDaAerArea3 PasDaAerArea1 PasDaAerArea2 PasDaAerArea3 PasDaAerArea2 PasDaAerArea1 Riportati anche I potenziali da Ridondare: bene!

44 3.3) Allocazione ridondante

45 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)

46 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

47 Schema finale Rete 3. Sud = Atlanta 1. Ovest = Denver 2. Nord = New York AerArea1 VoliDaAerArea1 AerArea2 AerArea3 VoliDaAerArea2 VoliDaAerArea3 PasDaAerArea1 PasDaAerArea2 PasDaAerArea3

48 3.4) Ricostruzione degli schemi locali

49 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 50 VoliDaAerArea1 AerArea1 Prenotaz. Check in VoliDaAerArea1 AerArea2 Prenotaz. Check in VoliDaAerArea3 AerArea3 Prenotaz. Check in Nodo1 Nodo 2 Nodo 3 PasDaAerArea1 PasDaAerArea2 PasDaAerArea3 Da A A A A A A3

51 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)

52 Risultato Nello schema ottenuto abbiamo che: 1)Gli aeroporti sono allocati nei 3 nodi in base all’area in cui si trovano 2)I voli sono distribuiti in base all’area in cui si trova l’aeroporto di partenza 3)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

53 4) Traduzione schemi locali ER nel modello relazionale

54 54 Volo1 Aeroporto1 Prenotaz. Check in Volo2 Aeroporto2 Prenotaz. Check in Volo3 Aeroporto3 Prenotaz. Check in Sito 1 Sito 2 Sito 3 Passeggero 1u Passeggero 4u Passeggero 5u Passeggero 7 Passeggero 2u Passeggero 4u Passeggero 6u Passeggero 7 Da A A A Passeggero 3u Passeggero 5u Passeggero 6u Passeggero 7 A A A3

55 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)


Scaricare ppt "Progettazione di basi di dati distribuite Marco Mangiacavalli Matricola: 779291 I miei commenti in rosso CB."

Presentazioni simili


Annunci Google