Adatbázisrendszerek elméleti alapjai 9. előadás Osztott adatbázisok
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ás
Gyors ismétlés: teljes redukáló Feladat: R1, R2, …, Rk relációk redukáltjai (R1, R2, …, Rk) – re nézve R1 := R1(R1 ⋈ R2 ⋈ … ⋈ Rk) R2 := R2(R1 ⋈ R2 ⋈ … ⋈ Rk) … Rk := Rn(R1 ⋈ R2 ⋈ … ⋈ Rk) ( vetítés) Teljes redukáló: Féligösszekapcsolásokkal (⋉, ⋊) operáló program Előállítja az előző redukáltakat 9. előadás
Teljes redukáló költsége Adottak: R1, R2, …, Rk relációk R1 ⋈ R2 ⋈ … ⋈ Rk –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ás
Teljes redukáló költsége Átviteli költség ≤ 2 ⋅ I I: input méret: inputrelációk méretösszege Fix költség: c0 ⋅ 2 ⋅ (k - 1) Helyi számítás költsége: ⋉ költsége legfeljebb ⋈ költsége TR = R táblája, n = TR + TS 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ás
Összekapcsolás költsége Kiszámoltuk a redukáltakat Redukáltakat egy helyen összekapcsoljuk Átviteli költség: ≤ I Összekapcsolás költsége: U: R1 ⋈ R2 ⋈ … ⋈ Rk sorainak száma Füllevágási sorrend: R1, R2, …, Rk Összekapcsolások visszafelé: Ri ⋈ (Ri+1 ⋈ … ⋈ Rk) 9. előadás
Összekapcsolás költsége Ö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 Rk nem módosul =>|Rk-1 ⋈ Rk| ≤ U =>|Rk| ≤ U Indukcióval: |Ri| ≤ U |Ri+1 ⋈ … ⋈ Rk | ≤ U => Tj ⋈ Tj+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ás
Elemző fa Fülletépések által készítjük el E fül F alapján => F gyermeke E Példa: 9. előadás
Elemző fa Példa: 1. lépés: BF fül BCD-re nézve, levágjuk 9. előadás
Elemző fa Példa: 2. lépés: ABC is fül BCD-re nézve, levágjuk 9. előadás
Elemző fa 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ás
Elemző fa Példa: 4. lépés: DEG mindvégig fül volt CDE-re nézve 9. előadás
Elemző fa Példa: 5. lépés: CDE-t levágva kész a fa 9. előadás
Összekapcsolások vetítése Adott: R1, R2, …, Rk relációk, X attribútumhalmaz Cél: X(R1 ⋈ R2 ⋈ … ⋈ Rk) kiszámítása Megjegyzések, ötletek: Küldendő adatokat csökkenthetjük, ha csak a fontos attribútumokat küldjük (X attribútumai) Az összekapcsolásokhoz még szükséges adatok is kellenek Haladjunk az elemző fa mentén az összekapcsolásokkal Ha már nem kell több összekapcsoláshoz egy attribútum, akkor hagyjuk el Szükséges attribútomkhoz: elemző fa 9. előadás
Yannakakis algoritmus Teljes redukálóval redukáljuk Ri-ket Elemző fát készítsük el Járjuk be a fát: Lentről felfelé Csúcs sorra kerül => minden gyereke sorra került 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: P a gyökér R az utolsó fül P := X(P∪(X∩R)(R ⋈ P)) (Itt ∪, ∩ -t P, R attribútumaival csináljuk) 9. előadás
Yannakakis algoritmus futásra példa Elemző fa példára: AG(ABC ⋈ BF ⋈ BCD ⋈ CDE ⋈ DEG) Teljesen redukált relációk: 9. előadás
Yannakakis algoritmus futásra példa 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ás
Yannakakis algoritmus futásra példa Elemző fa példára: AG(ABC ⋈ BF ⋈ BCD ⋈ CDE ⋈ DEG) BF összekapcsolása ABCD -fel: ABCD := ABCD∪(AG∩BF)(ABCD ⋈ BF) (AG∩BF üres, ilyen összekapcsolások kihagyhatók) 9. előadás
Yannakakis algoritmus futásra példa 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ás
Yannakakis algoritmus futásra példa 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ás
Yannakakis algoritmus futásra példa Elemző fa példára: AG(ABC ⋈ BF ⋈ BCD ⋈ CDE ⋈ DEG) Végül vetítés: AG := AGABCDEG 9. előadás
3. lépés output mérete Lemma: a 3. lépés sose készít 2 ⋅ I ⋅ U –nál nagyobb relációt Bizonyítás: Adott: S csúcs X a vetítés attribútumai C: S olyan gyereke, amiben már jártunk S1, S2, …, Sm : C-k leszármazottai Y: Si-k X-beli attribútumai, amik nincsenek S-ben => Y = ∪i(Si ∩ X) \ S, Y ⊆ X, Y ∩ S = ∅ T := S ⋈ S1 ⋈ … ⋈ Sm 9. előadás
3. lépés output mérete 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: S csúcs értékének alakja: S∪Y(S ⋈ S1 ⋈ … ⋈ Sm) (Biz.: csúcsok számával indukció) Mivel Y ∩ S = ∅: S∪YT ⊆ ST × YT A 3. lépésben a relációk redukáltak: ST = S ST mérete = S mérete ≤ I 9. előadás
3. lépés output mérete Lemma: a 3. lépés sose készít 2 ⋅ I ⋅ U –nál nagyobb relációt Bizonyítás: 2. pont, YT mérete ≤ I YT = Y(R1 ⋈ R2 ⋈ … ⋈ Rk) Ri relációk redukáltak => T minden sora kapcsolható Ri-k legalább egy sorához Y ⊆ X => Y(R1 ⋈ R2 ⋈ … ⋈ Rk) mérete ≤ ≤ X(R1 ⋈ R2 ⋈ … ⋈ Rk) mérete = U 9. előadás
3. lépés output mérete 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: S∪YT ⊆ ST × YT ST mérete ≤ I, YT mérete ≤ U Legyen t1, t2 ST és YT sorainak száma m1, m2 ST és YT rekordmérete ST × YT mérete = t1 ⋅ t2 ⋅ (m1 + m2) ≤ ≤ 2 ⋅ (t1 ⋅ m1) ⋅ (t2 ⋅ m2) ≤ 2 ⋅ I ⋅ U 9. előadás
Összekapcsolások vetítésének költsége Tétel: R1, R2, … , Rk relációk, aciklikusak X(R1 ⋈ R2 ⋈ … ⋈ Rk) átviteli költsége, futási ideje polinomiális I, U, k paraméterben (Itt: U = |X(R1 ⋈ R2 ⋈ … ⋈ Rk)|) 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ás
Összekapcsolások vetítésének költsége Tétel: R1, R2, … , Rk relációk, aciklikusak X(R1 ⋈ R2 ⋈ … ⋈ Rk) á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| |hiperélek| = k |csúcsok| ≤ I, ha nincs ürés él Van üres él: O(k) alatt ellenőrizhető => O(k ⋅ I), elhanyagolható az alkalmazása mellett 9. előadás
Összekapcsolások vetítésének költsége Bizonyítás: Fa bejárása Átvitel költsége: k – 1 reláció továbbítása szülő felé Előző lemma => minden reláció ≤ 2 ⋅ I ⋅ U => O(k ⋅ I ⋅ U) Kiszámítás költsége: Rendezéses összekapcsolások Egy összekapcsolás: O(I ⋅ U ⋅ log(I ⋅ U)) => O(k ⋅ I ⋅ U ⋅ log(I ⋅ U)) 9. előadás
Összekapcsolások vetítésének költsége Tétel: R1, R2, … , Rk relációk, aciklikusak X(R1 ⋈ R2 ⋈ … ⋈ Rk) á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ás
Összekapcsolások vetítésének költsége Tétel: R1, R2, … , Rk relációk, aciklikusak X(R1 ⋈ R2 ⋈ … ⋈ Rk) á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ás