Osztott adatbázisok
Gyors ismétlés: teljes redukáló Teljes redukáló költsége Természetes összekapcsolások vetítése Természetes összekapcsolások vetítésének költsége 9. előadás2
Feladat: R 1, R 2, …, R k relációk redukáltjai (R 1, R 2, …, R k ) – re nézve ◦ R 1 := R 1 (R 1 ⋈ R 2 ⋈ … ⋈ R k ) ◦ R 2 := R 2 (R 1 ⋈ R 2 ⋈ … ⋈ R k ) ◦ … ◦ R k := R n (R 1 ⋈ R 2 ⋈ … ⋈ R k ) ◦ ( vetítés) Teljes redukáló: ◦ Féligösszekapcsolásokkal (⋉, ⋊) operáló program ◦ Előállítja az előző redukáltakat 9. előadás3
Adottak: ◦ R 1, R 2, …, R k relációk ◦ R 1 ⋈ R 2 ⋈ … ⋈ R k –re füllevágások: G fix, aciklikus gráf (ciklikus NP nehéz) Tudjuk: ◦ 2(k – 1) ⋉ lépés ◦ E fül F-re ◦ Első menetben: F := F ⋉ E = F∩E (F) ◦ => küldött halmaz: ≤|E| ◦ Második menetben: előző menet részhalmazai ◦ => küldés halmaz : ≤|E| 9. előadás4
Átviteli költség ≤ 2 ⋅ I ◦ I: input méret: inputrelációk méretösszege Fix költség: c 0 ⋅ 2 ⋅ (k - 1) Helyi számítás költsége: ◦ ⋉ költsége legfeljebb ⋈ költsége ◦ T R = R táblája, n = T R + T S ◦ Nemindexelt joinra: ≤ n ⋅ log(n) ◦ Indexelt joinra: ≤ n ◦ 2 ⋅ (k - 1) db ⋉ ◦ összességében: O(k ⋅ I ⋅ log(I)) ◦ fix G esetén: O(I ⋅ log(I)) 9. előadás5
Kiszámoltuk a redukáltakat Redukáltakat egy helyen összekapcsoljuk Átviteli költség: ≤ I Összekapcsolás költsége: ◦ U: R 1 ⋈ R 2 ⋈ … ⋈ R k sorainak száma ◦ Füllevágási sorrend: R 1, R 2, …, R k ◦ Összekapcsolások visszafelé: R i ⋈ (R i+1 ⋈ … ⋈ R k ) 9. előadás6
Összekapcsolás költsége (folytatás): ◦ Garantáljuk, hogy ⋉-nál minden sorhoz min. 1 sor kapcsolható ◦ Redukálásnál első menet után R k nem módosul ◦ =>|R k-1 ⋈ R k | ≤ U ◦ =>|R k | ≤ U ◦ Indukcióval: |R i | ≤ U|R i+1 ⋈ … ⋈ R k | ≤ U ◦ => T j ⋈ T j+1 költsége: O(U ⋅ log(U)) Teljes összekapcsolás költsége: O(k ⋅ U ⋅ log(U)) Tétel: Aciklikus k reláció összekapcsolási költsége ≤ O(k ⋅ (I ⋅ log(I) + U ⋅ log(U))) ≤ O(k ⋅ (I + U) 2 ) 9. előadás7
Fülletépések által készítjük el E fül F alapján => F gyermeke E Példa: 9. előadás8
Példa: 1. lépés: BF fül BCD-re nézve, levágjuk 9. előadás9
Példa: 2. lépés: ABC is fül BCD-re nézve, levágjuk 9. előadás10
Példa: 3. lépés: BF-et vagy ABC-t levágva már BCD fül CDE-re nézve 9. előadás11
Példa: 4. lépés: DEG mindvégig fül volt CDE-re nézve 9. előadás12
Példa: 5. lépés: CDE-t levágva kész a fa 9. előadás13
Adott: R 1, R 2, …, R k relációk, X attribútumhalmaz Cél: X (R 1 ⋈ R 2 ⋈ … ⋈ R k ) kiszámítása Megjegyzések, ötletek: o Küldendő adatokat csökkenthetjük, ha csak a fontos attribútumokat küldjük (X attribútumai) o Az összekapcsolásokhoz még szükséges adatok is kellenek o Haladjunk az elemző fa mentén az összekapcsolásokkal o Ha már nem kell több összekapcsoláshoz egy attribútum, akkor hagyjuk el o Szükséges attribútomkhoz: elemző fa 9. előadás14
Teljes redukálóval redukáljuk R i -ket Elemző fát készítsük el Járjuk be a fát: o Lentről felfelé o Csúcs sorra kerül => minden gyereke sorra került o R fület levágjuk S miatt, akkor S := S∪(X∩R) (R ⋈ S) Gyökérhez tartozó relációt vetítsük X-re az utolsó lépésnél: o P a gyökér o R az utolsó fül o P := X ( P∪(X∩R) (R ⋈ P)) o (Itt ∪, ∩ -t P, R attribútumaival csináljuk) 9. előadás15
Elemző fa példára: AG (ABC ⋈ BF ⋈ BCD ⋈ CDE ⋈ DEG) Teljesen redukált relációk: 9. előadás16
Elemző fa példára: AG (ABC ⋈ BF ⋈ BCD ⋈ CDE ⋈ DEG) ABC összekapcsolása BCD-vel: ABCD := BCD∪(AG∩ABC) (ABC ⋈ BCD) (BCD ∪(AG ∩ ABC) = ABCD) 9. előadás17
Elemző fa példára: AG (ABC ⋈ BF ⋈ BCD ⋈ CDE ⋈ DEG) BF összekapcsolása ABCD -fel: ABCD := ABCD∪(AG∩GF) (ABCD ⋈ BF) (AG∩GF üres, ilyen összekapcsolások kihagyhatók) 9. előadás18
Elemző fa példára: AG (ABC ⋈ BF ⋈ BCD ⋈ CDE ⋈ DEG) ABCD összekapcsolása CDE -vel: ACDE := CDE∪(AG∩ABCD) (ABCD ⋈ CDE) (CDE⋃(AG⋂ABCD) = ACDE) 9. előadás19
Elemző fa példára: AG (ABC ⋈ BF ⋈ BCD ⋈ CDE ⋈ DEG) DEG összekapcsolása ACDE-vel: ACDEG := ACDE∪(AG∩DEG) (DEG ⋈ ACDE) (ACDE⋃(AG⋂DEG) = ACDEG) 9. előadás20
Elemző fa példára: AG (ABC ⋈ BF ⋈ BCD ⋈ CDE ⋈ DEG) Végül vetítés: AG := AG ABCDEG 9. előadás21
Lemma: a 3. lépés sose készít 2 ⋅ I ⋅ U –nál nagyobb relációt Bizonyítás: Adott: o S csúcs o X a vetítés attribútumai o C: S olyan gyereke, amiben már jártunk o S 1, S 2, …, S m : C-k leszármazottai o Y: S i -k X-beli attribútumai, amik nincsenek S-ben => Y = ∪ i (S i ∩ X) \ S, Y ⊆ X, Y ∩ S = ∅ o T := S ⋈ S 1 ⋈ … ⋈ S m 9. előadás22
Lemma: a 3. lépés sose készít 2 ⋅ I ⋅ U –nál nagyobb relációt Bizonyítás: 1. pont, ekkor: o S csúcs értékének alakja: S∪Y (S ⋈ S 1 ⋈ … ⋈ S m ) (Biz.: csúcsok számával indukció) o Mivel Y ∩ S = ∅: S∪Y T ⊆ S T × Y T o A 3. lépésben a relációk redukáltak: S T = S o S T mérete = S mérete ≤ I 9. előadás23
Lemma: a 3. lépés sose készít 2 ⋅ I ⋅ U –nál nagyobb relációt Bizonyítás: 2. pont, Y T mérete ≤ I o Y T = Y (R 1 ⋈ R 2 ⋈ … ⋈ R k ) o R i relációk redukáltak o => T minden sora kapcsolható R i -k legalább egy sorához o Y ⊆ X => Y (R 1 ⋈ R 2 ⋈ … ⋈ R k ) mérete ≤ ≤ X (R 1 ⋈ R 2 ⋈ … ⋈ R k ) mérete = U 9. előadás24
Lemma: a 3. lépés sose készít 2 ⋅ I ⋅ U –nál nagyobb relációt Bizonyítás: Összesítés: o S∪Y T ⊆ S T × Y T o S T mérete ≤ I, Y T mérete ≤ U o Legyen t 1, t 2 S T és Y T sorainak száma m 1, m 2 S T és Y T rekordmérete o S T × Y T mérete = t 1 ⋅ t 2 ⋅ (m 1 + m 2 ) ≤ ≤ 2 ⋅ (t 1 ⋅ m 1 ) ⋅ (t 2 ⋅ m 2 ) ≤ 2 ⋅ I ⋅ U 9. előadás25
Tétel: R 1, R 2, …, R k relációk, aciklikusak X (R 1 ⋈ R 2 ⋈ … ⋈ R k ) átviteli költsége, futási ideje polinomiális I, U, k paraméterben (Itt: U = | X (R 1 ⋈ R 2 ⋈ … ⋈ R k )|) Bizonyítás: Yannakakis algoritmus lépései Bizonyítás: Teljes redukáló alkalmazása Átvitel költsége: O(I) Kiszámítás költsége: O(k ⋅ (I ⋅ log(I) + U ⋅ log(U))) 9. előadás26
Tétel: R 1, R 2, …, R k relációk, aciklikusak X (R 1 ⋈ R 2 ⋈ … ⋈ R k ) átviteli költsége, futási ideje polinomiális I, U, k paraméterben Bizonyítás: Teljes redukáló / elemző fa megtalálása Átvitel költsége: nincs Kiszámítás költsége: ≤ |hiperélek| ⋅ |csúcsok| o |hiperélek| = k o |csúcsok| ≤ I, ha nincs ürés él o Van üres él: O(k) alatt ellenőrizhető o => O(k ⋅ I), elhanyagolható az alkalmazása mellett 9. előadás27
Bizonyítás: Fa bejárása Átvitel költsége: o k – 1 reláció továbbítása szülő felé o Előző lemma => minden reláció ≤ 2 ⋅ I ⋅ U o => O(k ⋅ I ⋅ U) Kiszámítás költsége: o Rendezéses összekapcsolások o Egy összekapcsolás: O(I ⋅ U ⋅ log(I ⋅ U)) o => O(k ⋅ I ⋅ U ⋅ log(I ⋅ U)) 9. előadás28
Tétel: R 1, R 2, …, R k relációk, aciklikusak X (R 1 ⋈ R 2 ⋈ … ⋈ R k ) átviteli költsége, futási ideje polinomiális I, U, k paraméterben Bizonyítás: X-re vetítés Átvitel költsége: nincs Kiszámítás költsége: O(I ⋅ U) 9. előadás29
Tétel: R 1, R 2, …, R k relációk, aciklikusak X (R 1 ⋈ R 2 ⋈ … ⋈ R k ) átviteli költsége, futási ideje polinomiális I, U, k paraméterben Összefoglalás: domináló tagok Átvitel költsége: Fa bejárása: O(k ⋅ I ⋅ U) Kiszámítás költsége: Fa bejárása: O(k ⋅ I ⋅ U ⋅ log(I ⋅ U)) 9. előadás30