1
C. J. Date: An Introduction to Database Systems, 8th Edition, Pearson Education, Inc. Addison-Wesley Higher Education, 2004.
M. T. Özsu, P. Valduriez: Principles of Distributed Database Systems, Prentice-Hall, 1999.
Osztott adatbázisok
2
Hogyan lehet ezt a két ellentétes nézıpontot összeilleszteni? • a két technológia integrálása, úgy, hogy egy új technológiát kapjunk, mely erıteljesebb mindkettınél
• hálózatok, technológiája szétosztja a munkát a csomópontok között. • adatbázis technológia, a külön-külön alkalmazások adatait központosítsa és központilag kezelje, létezzen logikai és fizikai adatfüggetlenség
Az osztott adatbázisok technológiája az adatfeldolgozás két különbözı megközelítésének az egyesítése.
3
• egy cégnek vagy szervezetnek több helyen is lehet kirendeltsége • minden kirendeltségben találhatók számítógépek lokális hálózatba kötve, több kliens is ugyanahhoz az adatbázis szerverhez fér hozzá. • minden kirendeltségnek meg van a maga feladata, adatai, és adatbázis szervere. • a kirendeltségek kommunikációs hálózattal össze vannak kapcsolva, együtt egy rendszert alkotnak. • egy kirendeltség a rendszer egy csomópontja. • egy felhasználó, a saját csomópontjában vagy akármelyik más csomópontban levı adatbázist fel kívánja dolgozni.
4
Egy X kliens az A csomópontból a saját csomópontjában található adatbázishoz a jogainak megfelelıen a lokális hálózaton (LAN) keresztül hozzáférhet. Ha X felhasználónak szüksége van a B csomópont adatbázisában található adatokra és van joga rá, akkor a WAN hálózaton keresztül kell azt megtegye. Kétféleképpen teheti: a) Megadja a hálózaton a B csomópontban található adatbázis „címét”, nevét, majd a tábla nevét. Ebben az esetben azt mondjuk, hogy a “heggesztés” látszik. b) Használja a globális tábla nevet, melynek egy része az A, más része a B csomóban található, és az osztott adatbázis-kezelı rendszer keresi meg az adatokat az A és B csomóban. Azt mondjuk, a “heggesztés” nem látszik. A b) megoldás az osztott adatbázis, az a) nem.
5
Az osztott adatbázis egy virtuális objektum, melynek komponensei fizikailag különbözı csomópontokban vannak tárolva. Az osztott adatbázis ezeknek a logikai egyesítése.
Az osztott adatbázis csomópontok összessége: • kommunikációs hálózattal össze vannak kapcsolva, • minden csomópont egy valódi adatbázis-kezelı rendszerrel és adatbázissal rendelkezik. • a csomópontok hajlandók kell legyenek együtt dolgozni, hogy a felhasználó bármely csomópont adataihoz úgy férhessen hozzá, mintha azok a saját csomópontján levı adatok lennének.
6
Angol könyvészet: egy csomópont az osztott adatbázisrendszerben, „site”: egy hálózati „node” + ABKR Magyar terminológiában a „site”-nak a munkaállomás felel meg .
• Az osztott adatbázis fizikailag szétosztott, földrajzilag egymástól távol található több olyan adatbázis összessége, amelyekben különbözı helyi ABKR-ek mőködhetnek, különbözı operációs rendszereken. • Az osztott adatbázis-kezelı rendszer (OABKR) feladata, hogy biztosítsa a csomópontok együttmőködését.
7
Különbség: • azon rendszerek között, melyek megengedik a távoli adathozzáférést (mint a kliens-szerver rendszerek). A felhasználó dolgozhat olyan adatokkal, melyek egy távoli csomópontban vannak, vagy szimultán több csomópontban, de a „heggesztés” látszik, a felhasználó kell ezt kezelje. • egy valódi osztott adatbázis-kezelı rendszerben a „heggesztések” rejtettek. Általában a csomópontok szét vannak osztva fizikailag, de ezt csak logikailag kell figyelemben venni, azonban két csomópont létezhet ugyanazon a fizikai gépen is, vagy ugyanabban az épületben lévı lokális hálózati rendszerben. Az adatbázis szempontjából nem lényeges, hogy ugyanabban az épületben található-e vagy szét van osztva földrajzilag nagy területre, a távolági kapcsolat megoldása technikai probléma.
. . . .
. . . .
Kommunikációs hálózat
8
. . . .
. . . .
9
• Hatékonyság növelése: az adatok visszakeresése tranzakciók segítségével lebontható több csomópontra, tehát a tranzakciókat végre lehet hajtani párhuzamosan. A párhuzamosság elınyös osztott rendszerek esetén, javítja az adatokhoz való hozzáférést.
• Lokális autonómia: a helyi adatokat lokálisan tárolják, ott ahol ezeknek logikailag van a helyük, és az esetek nagy részében abban a csomópontban használják, amelyben találhatók.
Az osztott adatbázisok elınyei
10
• Gazdaságosság: ha az adatok földrajzilag szét vannak osztva és ott tároljuk az adatokat, ahol a legtöbbet használják megtakaríthatók a kommunikációs költségek. (központosított ABKR-ekkel ellentétben) • Terjeszthetıség: osztott rendszerekben könnyebb az adatbázisok méreteit növelni.
• Biztonság/elérhetıség növelése: o Az adatoknak több csomópontban is létezhetnek másolatai. Ha egyik másolat meghibásodik, az adatok továbbra is elérhetıek lesznek egy másolatból. o rendszerhiba vagy kapcsolat megszakadás esetén nem válik az egész rendszer mőködésképtelenné. Annak ellenére, hogy esetleg egyes adatok nem elérhetık, az osztott adatbázis továbbra is nyújt bizonyos, korlátozott, szolgáltatásokat.
11
• Tapasztalat hiány: az osztott adatbázisok még nincsenek elterjedve. • Bonyolultság: az OABKR-eken belül felmerülı problémák sokkal összetettebbek • Költségek: az osztott rendszerek újabb, kiegészítı hardvert (kommunikációs mechanizmusok, stb.) igényelnek, ez viszont növeli a költséget.
Az osztott adatbázisok hátrányai
12
• Védelem: egy központosított adatbázis esetén, betartva a szabályokat a védelem könnyen megoldható az ABKR segítségével. Viszont egy OABKR-ben, ahol a helyzetet elbonyolítja a kommunikációs hálózat jelenléte, melynek meg vannak a saját védelmi követelményei
• Vezérlés szétosztása: ez a tulajdonság úgy szerepelt, mint elıny. A szétosztással felmerül a szinkronizálás és a koordinálás problémája. Így a szétosztás könnyen terhet jelenthet, ha nincs kidolgozva egy megfelelı politika, mely ezeket a problémákat megoldaná.
13
Chris Date tizenkét célkitőzést fogalmazott meg, amit egy osztott adatbázis–kezelı rendszernek be kellene tartania: • ezek a célkitőzések nem függetlenek egymástól; • nem egyformán fontosak; • az összes probléma ami az osztott rendszerhez kapcsolódik, belsı vagy implementációs-szintő (vagy legalább is azok kell legyenek) és nem külsı vagy felhasználó-szintő.
Az osztott adatbázis alapvetı elve: • a felhasználó számára az osztott rendszernek olyannak kell látszania, mintha a rendszer nem lenne osztott.
Az osztott adatbázisok célkitőzései
14
• a helyi adatok lokálisan vannak tárolva és kezelve. Minden adat csak egy adatbázishoz tartozik, függetlenül attól, hogy más, távoli csomópontból elérhetı vagy sem. Olyan kérdések, mint biztonság, integritás és az adatok tárolása a lokális csomópont vezérlése alatt vannak. A helyi autonómiát nehéz teljes egészében megvalósítani, a cél, hogy az autonómia a lehetı legnagyobb legyen.
• egy csomópontbeli mővelet az illetı csomópont által van vezérelve: egy X csomópont nem függhet egy Y csomóponttól saját mőveletei végrehajtásában, különben az történne, hogy, ha az Y csomópont meghibásodik az X csomó sem tud mőködni, még akkor sem, ha az Xel semmi gond sincs.
1. Helyi autonómia
15
Egy központi csomópont létezése nem kívánatos: • a központi csomópont nagyon le lenne terhelve, • a rendszer sebezhetı lenne, vagyis, ha a központi csomópont meghibásodna, az egész rendszer mőködésképtelenné válna.
A helyi autonómia maga után vonja, hogy minden csomópont egyenrangú, tehát nincs egy központi csomópont.
2. Semmi bizalom egy központi csomópontban
16
• Az osztott rendszerek egyik elınye, hogy nagyobb megbízhatóságot és hozzáférhetıséget nyújthatnak. • A rendszert úgy kell megtervezni, hogy legyenek az adatokról másolatok. • Ez növeli a biztonságot, mert ha egy csomópont éppen nem mőködıképes, akkor az adatok még máshol is tárolva vannak.
A rendszer állandóan mőködıképes kell legyen.
3. Folytonos mőveletek
17
Lokációtól való függetlenségnek is nevezik vagy átlátszóságnak a lokációval szemben.
A felhasználó nem kell tudja, hogy fizikailag melyik csomóponton vannak az adatok tárolva, viszont úgy kell tudja ıket kezelni (legalábbis logikai szempontból), mintha azok az ı saját helyi csomópontjában lennének. • a felhasználói programok egyszerőek lesznek, • az adat vándorolhat egyik csomópontból a másikba anélkül, hogy a felhasználói programokat változtatnánk.
4. Helytıl való függetlenség
18
Többféle tördelést ismerünk: vízszintes, függıleges és levezetett.
Egy logikai reláció fizikai részekre bontását tördelésnek (fragmentálásnak) nevezzük. A tördelés hasznos, mivel a rendszer gyorsabb lesz. A felosztott adat ott tárolható, ahol a legtöbbet használjuk, így a legtöbb mővelet lokális és a hálózati forgalom a lehetı legkisebb.
5. Tördeléstıl (fragmentálástól) való függetlenség
19
Tehát, a töredékek diszjunktak és egyesítésükbıl visszakapjuk a globális R relációt.
j =1
R = U Rj .
n
Ri ∩ Rj = ∅, ha i ≠ j;
j
Vízszintes tördelés: Legyen R egy reláció, n fragmensek száma és Fj (j = 1,..., n) konjunktív normál formában levı predikátum formulák. Vízszintes fragmenseket a vízszintes kiválasztás mővelet segítségével a következıképpen kapunk: R j = σ F ( R ); j = 1,K , n
20
példa: Legyen az Alkalmazottak tábla a NagyKer adatbázisból: Alkalmazottak (SzemSzám, Név, Fizetés, Cím, RészlegID); Egy lehetséges parancs a tördelés leírására, mely az osztott adatbázis-kezelı rendszer katalógusában kerül tárolásra, a következı: FRAGMENT Alkalmazottak INTO KolAlk AT SITE ’Kolozsvar’ WHERE RészlegID = 1 OR RészlegID = 2 NavAlk AT SITE ’Nagyvarad’ WHERE RészlegID = 9; Alkalmazottak = KolAlk U NavAlk
Szem Szám 234555 333333 111111 123444
Fizetés (euró) 700 500 300 800
Szem Szám 456777 222222
Kiss Csaba Szabó János Szilágyi Pál Kovács István Nagy Éva Vincze Ildikó
222222 456777 234555 333333 111111 123444
Rész legID 2 2 2 1
Név
Alkalmazottak SzemSzám
KolAlk
Szilágyi Pál Kovács István Nagy Éva Vincze Ildikó
Név
Kolozsvár
A felhasználó oldaláról
21
Szabó János Kiss Csaba
Név
9 9 2 2 2 1
RészlegID
Rész legID 9 9
NavAlk Fizetés (euro) 900 400
Nagyvárad
Fizetés (euró) 400 900 700 500 300 800
R = R1 ⋈ R2 ⋈ ... ⋈ Rm;
k
22
R egy reláció, mely attribútumainak halmaza A = {A1, A2,..., An}. C az R elsıdleges kulcsa, Ak ∩ C = Ø; k = 1,..., m; Ak ∩ Al = Ø; ha k ≠ l. egy függıleges töredéket a következıképpen kapunk: Rk = π C , A ( R ) ; k = 1,..., m; A globális R relációt a természetes összekapcsolás mőveletével kapjuk vissza:
Függıleges tördelés:
23
példa: Alkalmazottak (SzemSzám, Név, Fizetés, RészlegID); Egy függıleges tördelését kapjuk az Alkalmazottak táblának: AlkAltalános (SzemSzám, Név, RészlegID); AlkFizetés (SzemSzám, Fizetés). A globális Alkalmazottak relációt megkapjuk, ha a két töredéket összekapcsoljuk: Alkalmazottak = AlkAltalános ⋈ AlkFizetés
Szem Szám 222222 456777 234555 333333 111111 123444 9 9 2 2 2 1
Kiss Csaba Szabó János Szilágyi Pál Kovács István Nagy Éva Vincze Ildikó
Kiss Csaba Szabó János Szilágyi Pál Kovács István Nagy Éva Vincze Ildikó
222222 456777 234555 333333 111111 123444
RészlegID
Név
SzemSzám
Alkalmazottak
Név
AlkAltalános
Csomó1
A felhasználó
24
222222 456777 234555 333333 111111 123444
Fizetés (euró) 400 900 700 500 300 800
Csomó2
Fizetés (euró) 400 900 700 500 300 800
SzemSzám
AlkFizetés
9 9 2 2 2 1
RészlegID
25
Egy rendszer, mely megengedi a tördelést, biztosítania kell a tördeléstıl való függetlenséget (nevezik még átlátszóságnak a tördeléssel szemben), azaz a felhasználók úgy kell lássák az adatokat (legalább is logikai szempontból), mintha azok egyáltalán nem lennének feldarabolva. A tördeléstıl való függetlenség (hasonlóan a lokációtól való függetlenséghez) szükséges, mert így leegyszerősödnek a felhasználói programok. Sajátos esetben megengedi, hogy a táblákat bármikor újra lehessen tördelni anélkül, hogy a felhasználói programokat módosítani kellene.
26
• Ha az adatbázis bizonyos részét több csomópontból is folyamatosan használják, akkor a kommunikációs költségek nagyok. • Minden gép könnyen abba a helyzetbe kerülhet, hogy a különbözı helyeken tárolt adatok folyamatos összerakásával foglalkozik. • A teljesítmény elkerülhetetlenül romlik, ha az egyes gépeknek állandóan a tılük távol tárolt adatokhoz kell hozzáférniük. • Az osztott adatbázisrendszerek célkitőzései között szerepel a kommunikációs költségek csökkentése. • Másolatok készítésével jelentısen csökkenthetjük a lekérdezések feldolgozása során felmerülı kommunikációs költségeket.
6. Másolatoktól való függetlenség
27
• A gyakorlatban a legtöbb osztott adatbázisrendszer bizonyos mértékig támogatja az adatreplikációt. • Egy tárolt relációnak, vagy töredéknék több másolata lehet, melyek különbözı csomópontokban vannak tárolva. példa: Készítsünk másolatot a kolozsvári csomópontban a nagyváradi fragmensrıl és fordítva. Egy lehetséges leírása a másolatok készítésének: REPLICATE KolAlk NKolAlk AT SITE ’Nagyvarad’; REPLICATE NavAlk KNavAlk AT SITE ’Kolozsvar’;
28
A másolat készítés ideális esetben a felhasználó számára „átlátszó” kell legyen, a felhasználó úgy kell lássa az adatokat, legalább is logikai szempontból, mintha egyáltalán nem léteznének másolatok.
Másolat készítés hátránya: – adatkezelési mőveleteket az összes másolaton el kell végezzük az
A másolat készítés két okból fontos: – jobb teljesítményt jelent: az OABKR a helyi adatokon dolgozik, ahelyett, hogy távoli csomópontokkal kellene kommunikáljon; – jobb hozzáférhetıséget biztosít: egy adott, másolattal rendelkezı, objektum mindaddig elérhetı lesz, amíg legalább egy másolata elérhetı.
29
• ha egy lekérdezés több csomópontban tárolt relációra vagy töredékre vonatkozik, több lehetıség is van szállítani a relációkat a csomópontok között. • a központosított rendszerek lekérdezés optimalizálásához ez plusz feladatként jelenik meg. • a relációs adatbázisok megfelelıbbek az osztott adatbázisrendszerben, mint azok, melyek nem relációs adatmodellre épülnek. A relációs modell esetén egy lekérdezés részeredményei is relációk, a hálózaton eredményhalmazokat lehet küldeni, nem kell egyenként küldeni sorokat, mint például a hálós adatmodell esetén.
7. Lekérdezés osztott feldolgozása
30
Egy osztott adatbázisrendszerben egy tranzakció módosításai több csomópontra is kiterjednek. • mindegyik tranzakció több ügynökbıl (ágens) épül fel. • egy ügynök az a folyamat, amit a tranzakció egy adott csomópontban végez el. • a rendszernek biztosítania kell, hogy egy adott tranzakció összes ügynöke sikerrel fejezıdjön be. • ha egy tranzakció egy ügynökének nem sikerült a munkáját befejezni, a tranzakciót visszagörgeti, ami azt jelenti, hogy az adott tranzakció többi ügynöke semmissé kell tegye amit a tranzakció végrehajtása érdekében dolgozott.
8. Tranzakciók osztott vezérlése
31
• A osztott rendszerben több különbözı típusú gép is lehet, például IBM, Macintosh, HP, stb. • Ezek a számítógépek egyenrangú partnerek kell legyenek az osztott rendszerben. • Mőködhet rajtuk ugyanaz a típusú adatbázis-kezelı rendszer vagy különbözıek, lásd a 12-es célkitőzést.
9. Hardwertıl való függetlenség
32
• A különbözı típusú gépen, mely az osztott rendszerben együttmőködik különbözı operációs rendszer futhat. • Ugyanazt az ABKR-t különbözı operációs rendszeren is lehessen futtatni és ugyanabban az osztott rendszerben tudjanak együttmőködni. Például az Oracle-nek a Windows operációs rendszer alatt futó változata és UNIX alatti változata tudjon az osztott rendszerben együttmıködni.
10. Operációs rendszertıl való függetlenség
33
Egy osztott rendszer homogén, ha minden csomópontjában ugyanaz az ABKR fut.
12. Adatbázis-kezelı rendszertıl való függetlenség
Ha egy osztott rendszerben megengedettek • a különbözı csomópontokban a különbözı típusú gépek • különbözı operációs rendszerrel • megengedett kell legyen a különbözı kommunikációs hálózat is.
11. Hálózattól való függetlenség
34
• csak az lesz szükséges, hogy a különbözı csomópontokban található ABKR-ek ugyanazt az interfészt támogassák, és nem kell ugyanazon ABKR másolatai legyenek. Például, ha az MS SQL Server és az ORACLE képes egymással kommunikálni egy osztott rendszer keretén belül. Vagyis lehetséges, hogy egy osztott rendszer heterogén legyen, legalább is bizonyos mértékig. • A heterogenitás támogatása kétségtelenül fontos. A valós rendszerekben nemcsak különbözı gépek mőködnek, különbözı operációs rendszerekkel, hanem a leggyakrabban különbözı ABKReket mőködtetnek és az lenne jó, ha ezek a különbözı ABKR-ek együtt tudnának mőködni egy osztott rendszerben. • az ideális osztott rendszer kell biztosítsa az ABKR-tıl való függetlenséget.
35
Az ANSI-SPARC arhitektúrát kibıvítették osztott adatbázisokra. − A központosított arhitektúra fogalmi szintjének a globális fogalmi séma felel meg, mely az osztott rendszer összes adatának általános szerkezetét írja le. − A felhasználói alkalmazások és a felhasználó hozzáférését az adatbázishoz a külsı sémák (KS) támogatják. − A felhasználó a globális fogalmi szinten keresztül fér hozzá az adatokhoz, tehát nem látja, hogy az adat szét van darabolva, a globális relációt használhatja a lekérdezések, illetve adatkezelési mőveletei esetén.
Osztott adatbázis architektúrák
36
− Egy osztott adatbázisban az adatok lehetnek tördelve, illetve a táblákról, töredékekrıl létezhetnek másolatok. − Minden csomópontnak ismernie kell az adatok logikai szervezését, ezért létezik egy harmadik réteg az arhitektúrában, éspedig a lokális fogalmi séma. A globális fogalmi séma ezeknek a lokális fogalmi sémáknak az egyesítésébıl jön létre. − Fizikailag az adatok több csomópontban vannak tárolva, minden csomópontnak ismerie kell a saját adatainak a fizikai tárolási részleteit. Ez azt jelenti, hogy kell legyen egy egyedi fizikai (belsı) séma definíció minden csomópontban, melyet lokális fizikai (belsı sémának) nevezhetünk. − Az itt bemutatott arhitektúra biztosítja a korábbiakban leírt átlátszóságokat.
37
− A logikai és fizikai adatfüggetlenséget biztosítja mivel az ANSI/SPARC arhitektúra kiterjesztése. − A másolatoktól és a helytıl való függetlenséget a lokális és globális fogalmi sémák biztosítják a köztük levı kapcsolatokon keresztül. − A felhasználó lekérdezései nem veszik figyelembe az adatok helyét, illetve azokat a komponenseket, amelyek részt vesznek a lekérdezés végrehajtásában. A globális lekérdezéseket az osztott adatbázis-kezelı rendszer lebontja lokális lekérdezésekre, melyek más-más csomópontban hajtódnak végre.
Lokális fogalmi séma 2
Lokális fizikai séma 2
Lokális fizikai séma 1
38
Globális fogalmi séma
Külsı séma 2
Lokális fogalmi séma 1
Külsı séma 1
...
...
...
Lokális fizikai séma n
Lokális fogalmi séma n
Külsı séma m
Cég adminisztrátor
Globális adatbázis adminisztrátor
Globális fogalmi a.b. séma processzor
Applikáció, rendszer adminisztrátor
GD/D
Külsı adatbázis séma processzor
Lokális adat Lokális adatbázis adminisztrátor Fizikai adatbázis séma processzor
LD/D
…
Fizikai adatbázis/ fogalmi átalakítás
Fogalmi adatbázis séma processzor - n
Lokális adatbázis adminisztrátor
LD/D
Fizikai adatbázis séma processzor
Fizikai adatbázis/ fogalmi átalakítás
Belsı tárolás/ belsı adatbázis átalakítás
…
…
Belsı tárolás/ belsı adatbázis átalakítás
Lokális adat Fogalmi adatbázis séma processzor - 1
39
40
− Kibıvítették a globális katalógus/szótárral (global directory/ − dictionary GD/D), amely megengedi a szükséges globális leképezéseket. − A lokális leképezéseket pedig a lokális katalógus/szótár (local directory/dictionary LD/D) kezeli. − lokális adatbázis-kezelı komponensek be vannak építve a globális ABKR funkcióiba. − Az adatbázisok tipikusan fentrıl lefele stílusban vannak tervezve, és ezért az összes külsı nézet globálisan van definiálva.
Osztott ANSI-SPARC modell funkcionalitást figyelembe véve
FELHASZNÁLÓ
FELHASZNÁLÓ PROCESSZOR
Felhasználói interfész kezelı Szemantikus adat ellenır
Külsı séma
Globális fogalmi séma
Globális lekérdezés Osztott végrehajtási monitor
ADAT PROCESSZOR
Lokális lekérdezés
Lokális visszaállítás
Helyi végrehajtás processzor
41
GD/D
Lokális fogalmi séma
Napló állomány
Lokális fizikai séma
42
43
A felhasználói processzor négy elembıl áll: – A felhasználói interfészkezelı felelıs azért, hogy értelmezze a felhasználótól érkezı parancsokat, továbbküldje végrehajtásra, majd az eredmény adatokat a felhasználónak minél érthetıbb formában szolgáltassa. – A szemantikus adat ellenır használja a globális fogalmi séma részeként definiált helyességi megszorításokat és hozzáférési jogokat, hogy ellenırizze, hogy a felhasználói lekérdezés végrehajtható-e.
A. felhasználói processzor kezeli az interakciót a felhasználóval, B. adat processzor a tárolással foglalkozik.
OABKR komponensei
44
– A globális lekérdezés optimalizáló meghatároz egy végrehajtási stratégiát, mely minimalizálja a költség függvényt. A globális lekérdezéseket lefordítja lokális lekérdezésekre, felhasználva a globális és lokális fogalmi sémákat, illetve a globális könyvtárat/szótárat. A globális lekérdezés optimalizáló felelıs, többek között, azért, hogy meghatározza a legjobb sorrendjét a join mőveletek végrehajtásának. – Az osztott végrehajtási monitor koordinálja a felhasználó kérésének osztott végrehajtását. Ezt nevezik osztott tranzakció kezelınek is. A lekérdezések osztott módon történı végrehajtása során, a különbözı csomópontokban található végrehajtási monitorok egymással tudnak kommunikálni.
45
– A lokális lekérdezés optimalizáló, mely úgy mőködik, mint egy hozzáférési út szelektor, felelıs bármelyik adat eléréséhez vezetı legjobb hozzáférési út kidolgozásáért. – A lokális visszaállítás-kezelı felelıs azért, hogy a lokális adatbázis konzisztens maradjon, még akkor is, ha hiba lép fel. – A helyi végrehajtás processzor fizikailag hozzáfér az adatbázishoz, a lekérdezés optimalizáló által generált végrehajtási tervben található fizikai parancsok szerint. Ez a processzor az interfész az operációs rendszer felé, és tartalmazza az adatbázis pufferkezelıt, mely a fı memória pufferek fenntartásáért felelıs, és kezeli az adathozzáférést.
Adat processzor három elembıl áll:
46
− Az osztott adatbázisok relációs adatmodellre alapulnak, mivel a lekérdezések eredménye szintén reláció, tehát a szállítandó részeredmények adathalmazok. − A mai kereskedelmi rendszerek zöme a relációs adatmodellt használja. − A tervezésnél használhatjuk a normalizálást vagy egyed-kapcsolat diagram átírását relációs adatmodellé. Az így kapott adatbázis séma a globális séma. Osztott adatbázisok tervezése szempontjából: top-down megközelítés, bottom-up megközelítés
Osztott adatbázisok tervezése
47
• kérések elemzése, rendszer követelmények. • a fogalmi tervezés eredménye a globális fogalmi séma lesz, mely az osztott rendszer minden egyedét és azok közötti kapcsolatokat tartalmazza. • a kéréseket a nézetek tervezésésénél is figyelembe kell vegyük. A nézetek tervezésének eredményeképp a felhasználói interfészeket kapjuk. A felhasználói nézetek a globális sémát, nem pedig lokális sémákat használnak.
A top-down tervezési folyamat
48
Osztott rendszerek esetén a lokális sémát is meg kell határoznunk, ami a relációk tördelését illeti. • melyik relációt tördeljük és milyen feltétel alapján? • melyik töredéket, melyik csomópontban tároljuk? Kutatások ezen a területen matematikai programozást alkalmaznak, lásd [ÖzVa91]. Az utolsó lépés a tervezési folyamatban a fizikai tervezés folyamata, mely figyelembe kell vegye a lokális fogalmi sémát. • A tervezés általános problémája NP-teljes. • Az ajánlott megoldások heurisztikusak. o Ezek közül egy: tároljunk minden adatot ott, ahol a legtöbbet használják.
• A top-down tervezési módszer alkalmazható, ha az osztott adatbázisból még semmi nem létezik. • A gyakorlatban viszont gyakran az osztott adatbázis részei már léteznek, és a tervezési tevékenység ezek beillesztését is meg kell valósítsa. A bottom-up megközelítés alkalmasabb ilyen típusú környezetben. • Az indulási pont a bottom-up tervezés esetében a lokális fogalmi sémák. A folyamat abban áll, hogy a lokális sémákat beilleszti a globális fogalmi sémába.
A bottom-up tervezési folyamat
50
• Ha egy rendszer megengedi a táblák, fragmensek másolatának létezését, gondoskodnia kell az adatkezelési mőveletek továbbításáról az összes létezı másolat felé. • Az adatkezelési mőveletek továbbításával az összes létezı másolat felé az a gond, hogyha egyik csomópont azok közül, mely tárolja a sok közül az egyik másolatot nem elérhetı, az adatkezelési mővelet nem végezhetı el (elsı célkitőzés: egy X csomópont a saját adatán nem végezhet adatkezelési mőveletet, ha létezik arról egy másolat egy olyan csomópontban, mely nem elérhetı)
Adatok másolásával felmerülı problémák
51
Egy megoldás az elsıdleges másolat séma (primary copy scheme): o egy x logikai adatbázis objektumnak (tábla vagy fragmens), melynek vannak másolatai, az egyik másolatát kinevezi „elsıdleges másolatnak” (primary copy), a többi másolat másodlagos (secondary) lesz. • különbözı objektumok elsıdleges másolatai különbözı csomópontokban vannak, nincs egy központi, ahol tárolva van az összes elsıdleges másolat, ne legyen egy csomópont leterhelve. Tehát ez egy osztott séma. • az elsıdleges másolat séma esetén egy adatkezelési mővelet logikailag teljes a rendszer szempontjából, ha az elsıdleges másolaton végre lett hajtva. A csomópont, mely tárolja az elsıdleges másolatot felelıs azért, hogy továbbítsa az adatkezelési mőveletet egy adott idın belül az összes létezı másolat felé.
52
• Ahhoz, hogy a tranzakciók ACID tulajdonságai be legyenek tartva az adatkezelési mővelet továbbítása az összes másolat felé a COMMIT elıtt meg kell történjen. • Ezzel a megoldással is vannak problémák: ha egy X csomópont A fragmensének van több másolata és az elsıdleges másolat nem az X csomópontban van, hanem egy távoliban, mely épp nem elérhetı, az X nem tud dolgozni az A fragmenssel, mely a saját adata. • A kereskedelmi rendszerek elfogadják az adatkezelési mőveletek késleltetett továbbítását (delayed update propagation). Ezzel a megoldással az a gond, hogy nem lehet tudni az adatbázis mikor konzisztens és mikor nem az. • Egyes rendszerek a SNAPSHOT fogalmát használják a másolat megvalósítására. Különbözı rendszerek, különbözıképpen valósítják meg a másolatokat, illetve a tördelést.
53
• Egy tranzakció megırzi az adatbázis helyességét. • Egymás után, tehát soros ütemezéssel végrehajtott tranzakciók is megırzik az adatbázis helyességét. • a sorbarendezhetı ütemezés (ugyanolyan hatással van az adatbázis állapotára, mint valamelyik soros ütemezés) biztosítja még az adatbázis konzisztenciájának a megmaradását.
• A tranzakció a helyesség, a konkurencia és a helyreállítás egysége. • ACID tulajdonságok
Tranzakciókezelés osztott adatbázisok esetén
54
• egy másolatokat engedélyezı osztott környezetben hálózatszintő lezárásokat kell alkalmazni. • a másolatokat ellenırzı protokollok biztosítják: Legyen egy x adat, illetve x1, x2, …, xn ennek a másolatai. Az x adatra, mint logikai adatra hivatkozunk, a másolatokra pedig mint fizikaira.
Kétfázisú lezárás tétel: Ha minden tranzakció betartja a kétfázisú lezárási protokollt (2PL), az összes lehetséges ütemezés sorbarendezhetı.
• Köpontosított adatbázis esetén a konkurencia problémákat általában zárolással oldják meg. Más: idıbélyegzın alapuló ütemezés
−
−
55
az x adat egy logikai írási mővelete átalakul n darab, a fizikai adatokat író mőveletté: x1, x2, …, xn
az x adat egy logikai olvasása átalakul egyetlen fizikai olvasási mőveletté (általában abból a másolatból, amelybıl a leggyorsabban hozzáférhetı a kérést elindító csomópont)
− A másolatokat ellenırzı protokollok feladata logikai adatokon végzett mőveletek átalakítása az ezeknek megfelelı fizikai adatokon végzett mőveletekké. A legegyszerőbb ilyen jellegő protokollnak a neve ROWA (readonce/write-all) és a következı szabályokkal írható le:
− A felhasználók a hozzáférési mőveleteket (írás vagy olvasás) (másolatokkal szembeni függetlenség elvének értelmében) az x-re, mint logikai adatra való hivatkozással végzik el.
56
Feltételezve, hogy minden csomópont felelıs a saját objektumai lezárásáért, egy távoli csomópontban levı adatbáziselem módosítása a következı üzeneteket igényli: • a zárolást kérni kell a távoli csomóponttól; • a távoli csomópont küldi az engedélyt, ha a zárolás lehetséges; • adatkezelési mőveletet kell kérni a a távoli csomóponttól; • a távoli csomópont küldi a mővelet elvégzésének elismervényét (acknowledgment) • zárolás feloldását kéri a távoli csomóponttól.
57
Legyen T egy tranzakció, mely egy x adatbáziselemet akar módosítani, melynek n darab másolata van egy-egy távoli csomópontban. Egy lehetséges megvalósítása a k darab másolat módosításának 5n üzenetet von maga után: • n számú zárolási kérés; • n számú zárolási engedély; • n számú módosítási mővelet; • n számú elismervény; • n számú zárfeloldási kérés. Egy megoldás lenne, összekapcsolni a zárolási kérést a módosítási mővelettel, de így is sokkal több, mint a központosított rendszerben.
58
A tranzakciókezelı kommunikál, az ugyanabban vagy különbözı csomóban található ütemezıkkel és adat processzorokkal.
• a tranzakciókezelı (transaction manager: TM), mely felelıs az adatbázis operációk végrehajtásának koordinálásáért. • a ütemezı (scheduler: SC), mely az adatbázishoz való hozzáférést szinkronizáló, konkurenciakezelı algoritmus kidolgozásáért felelıs.
Osztott végrehajtási monitornak két modulja:
Architektúrai részletek
Más TM-kel
Adat processzorok felé
Ütemezı
59
Az osztott végrehajtási monitor részletes modellje
Ütemezési kérések
Tranzakciókezelı
Begin_transaction, Read, Write, Eredmények Commit, Abort
Más ütemezıkkel Más adat processzorokkal
60
A tranzakciókezelı egy interfészt implementál, mely öt parancsból áll: 1. Begin_transaction. Ez egy mutató a TM-nek, hogy egy új tranzakció kezdıdik. A TM elkönyveli, így például megırzi a tranzakció nevét, a kezdeményezı applikációt, és így tovább. 2. Read. Ha egy x adat lokálisan van tárolva, olvassa az értékét és visszaküldi a tranzakciónak. Különben, a TM kiválasztja az x egy másolatát és kéri, hogy a másolat legyen visszaküldve. 3. Write. A TM koordinálja az x értékének a módosítását, minden olyan csomópontban, ahol az megtalálható. 4. Commit. A TM koordinálja az adatok fizikai módosítását az összes olyan csomópontban, melyek részt vettek a tranzakcióban 5. Abort. A TM biztosítja, hogy a tranzakciónak semmilyen hatása nem látszik az adatbázisban.
61
• A központosított adatbázisokban a konzisztencia ellenırzésére használt elvek és algoritmusok használhatók az osztott adatbázisok esetén is. • a sorbarendezhetıség elmélete használható az olyan osztott adatbázisok esetén, amelyekben nincsenek másolatok. − A tranzakciók végrehajtásának sorrendje mindegyik csomópontban egy helyi tervvel van képviselve. − Ha az összes csomópont helyi terve sorbarendezhetı, akkor a terv általánosítható, mint a helyi tervek egyesítése (globális terv), szintén sorbarendezhetı • egy olyan adatbázisban, amelyben léteznek másolatok elképzelhetı egy olyan eset is, amikor a helyi tervek sorbarendezhetık, viszont a globális terv nem sorbarendezhetı. A globális terv is sorbarendezhetı kell legyen.
62
A 2PL algoritmus könnyen kiterjeszthetı OABKR. Egy megoldás: (C2PL) • a csomópontok közül csak az egyiknek van zároláskezelıje, (központi csomópont a neve) a zárolásokat csak ez vezérli, a többi csomópontban levı tranzakciókezelık ezzel kommunikálnak • a tranzakciókezelı abban a csomópontban található, amely a tranzakciót kezdeményezi (ezt koordináló TM-nek nevezzük). • az adat processzorok a résztvevı csomópontokban találhatók. A résztvevı csomópontok azok, melyekben a mőveleteket végre kell hajtani.
Központosított 2PL
63
• kutatások bebizonyították, hogy a túlterhelés valóban megjelenik, ahogy a tranzakciók száma növekszik, viszont elhanyagolható kevés tranzakció esetén
• a központi csomópont meghibásodása vagy el nem érhetısége az egész rendszer mőködıképtelenségéhez vezet.
• fı problémája a C2PL algoritmusnak az, hogy a központi csomópont gyorsan túlterhelıdhet
4
Mővelet vége
3
Mővelet
Adatprocesszor a közremőködı csomópontokon
64
Központi csomó LM
5
Lezárás felszabadítása
2
Lezárás beszerezve
1
Lezárás kérés
Koordináló TM
65
angolul: primary copy 2PL (PC2PL) a C2PL kiterjesztése, mely próbálja a problémákat kiküszöbölni; • több csomópontban is lesz LM és mindegyik bizonyos lezárandó egységekért felelıs; • a TM-k elküldik a lezárási és felszabadítási kérésüket annak a LM-nek, amely az adott lezárandó egységért felelıs; • az algoritmus minden adatnak egyik másolatát úgy tekinti, mint annak elsıdleges másolatát; • a PC2PL-t ajánlották az INGRES osztott prototípus változatához
Az elsıdleges másolatos 2PL
66
• az összes csomópontban szükséges LM. • ha az adatbázisban nincsenek másolatok, a D2PL PC2PL-á alakul. • ha léteznek másolatok, a tranzakció a ROWA másolatkezelı protokollt implementálja. A D2PL tranzakciókezelı algoritmus hasonló a C2PL TM-hez, viszont két jelentıs változtatás van. 1. Az üzenetek, melyek a C2PL TM esetén, a központi csomó felé vannak küldve, D2PL TM-nél az összes résztvevı csomópontban található LM-nek el lesz küldve. 2. A mőveleteket nem a koordináló TM adja át az adat processzoroknak, hanem a résztvevı LM-ek.
Osztott 2PL (distributed 2PL (D2PL)
4
Lezárás felszabadítása
3
67
Mővelet vége
2
1
Résztvevı DP-k Mővelet
Résztvevı LM-ek
Lezárási kérés
Koordináló TM
68
A D2PL algoritmust használja a System R* és a NonStop SQL.
Az algoritmus hasonló a szigorú 2PL algoritmushoz.
• a koordináló TM nem vár „a lezárás kérés beszerezve” üzenetre. • a résztvevı adatprocesszorok (DP) a „mővelet vége” üzenetet a koordinátor TM-nek küldik. • vagy mindegyik DP a saját LM-ének küldi az üzenetet, mely felszabadítja a zárást és értesíti a koordinátor TM-t.
69
• Lezáráson alapuló konkurenciakezelı algoritmus holtpontot idézhet elı; • egyes idıbélyeget használó algoritmusok is, melyek szükségessé teszik a tranzakciók várakozását, • az OABKR-eknek szükségük van speciális eljárásokra, melyekkel tudják a holtpontot kezelni. • Egy hasznos eszköz a holtpontok elemzésénél a várakozási gráf (angolul: wait-for graph – WFG). o Holtpont akkor jelentkezik, ha a gráf tartalmaz kört. o A WFG meghatározása sokkal komplikáltabb osztott rendszerekben, mivel két tranzakció, mely holtpontot idézhet elı lehet, hogy különbözı csomópontokban fut.
Holtpont kezelés
70
példa: legyen négy tranzakció: T1, T2, T3 és T4 a következı várakozási relációval köztük: T1 → T2 → T3 → T4 → T1. o T1 és T2 az 1-es csomóponton futnak
o Ezt az esetet globális holtpontnak nevezzük. o Osztott rendszerekben nem elég, egy-egy lokális várakozási gráf minden egyes csomópontban, szükséges, egy globális várakozási gráf is létre legyen hozva, mely a az összes LWFG egyesítése.
T3
T2 (a)
T4
2 Csomó
T1
1 Csomó
o T3 és T4 a 2-esen
71
T2
T1
1 Csomó
(b)
T3
T4
2 Csomó
megelızés elkerülés felismerés és megoldás
72
• a holtpont megelızı algoritmusok garantálják, hogy holtpont nem léphet fel • a TM egy tranzakciót indulásakor ellenırzi és nem engedi, hogy az végrehajtódjon, ha holtpontot idézhet elı.
Holtpont megelızés
•
•
•
Három típusú algoritmus létezik a holtpontok kezelésére:
73
• ahhoz, hogy ezt az ellenırzést elvégezhesse, szükséges, hogy az összes adat, melyhez a tranzakció hozzá fog férni, elıre legyen deklarálva. • a TM lefoglalja az összes, a tranzakció által elıre deklarált, adatot. • a TM akkor engedi, hogy egy tranzakció végrehajtódjon, ha az összes adat, melyhez hozzá fog férni, rendelkezésre áll. Különben a tranzakciónak nem engedélyezett a futása. • sajnos ilyen rendszerek nem igazán felelnek meg adatbázis környezetben. • általában nehéz pontosan tudni, hogy egy tranzakció milyen adatokhoz fog hozzáférni.
74
− az ütemezık elıre felfedezik a lehetséges holtpont helyzeteket és biztosítják, hogy nem fognak bekövetkezni. − egyik lehetıség a holtpont elkerülése érdekében, az erıforrások rendezése. o minden folyamat az erıforrásokhoz csak a megadott sorrendben férhet hozzá. (operációs rendszerek). Egy átdolgozott változatot indítványoztak az ABKR-ek számára o az OABKR-ken belüli lezárási egységek rendezve vannak és a tranzakciók mindig ilyen sorrendben kérik a lezárásokat. o a lezárási egységek rendezését lehet globálisan vagy mindegyik csomóban lokálisan végezni.
Holtpont elkerülés
−
75
Ha lokálisan rendezzük, akkor a csomópontokat is és a tranzakciókat is rendeznünk kell egy másik alternatíva a tranzakciók idıpecsétjeinek felhasználása, mellyel a tranzakcióknak prioritást lehet adni és a holtpontot meg lehet oldani a magasabb (vagy alacsonyabb) prioritású tranzakciók megszakításával. o a LM a következıképpen módosul: ha egy Ti tranzakció lezárási kérése nem teljesíthetı, a LM nem kényszeríti automatikusan a Ti-t, hogy várjon. egy megelızési tesztet alkalmaz a kérdéses tranzakcióra és a zárat tartó tranzakcióra (például Tj). ha a teszt sikeres, a Ti-nek meg van engedve, hogy várjon a Tjre, különben valamelyik tranzakció meg van szakítva.
o
76
WOUND-WAIT szabály: Ha a Ti tranzakció kéri a Tj által lezárt adathoz való hozzáférést, a Ti akkor és csakis akkor kerül várakozási állapotba, ha az idıpecsétje újabb, mint a Tj-hez rendelt idıpecsét (a Ti korábbi mint a Tj). Ha a Ti régebbi, mint Tj, akkor a Tj érvénytelenítve lesz, az erıforrást meg a Ti tranzakció kapja meg
WAIT-DIE szabály: Ha a Ti tranzakció kéri egy olyan adat lezárását, amely már le van zárva a Tj tranzakció által, a Ti akkor és csakis akkor kerül várakozási állapotba, ha az idıpecsétje megelızi a Tj tranzakcióhoz rendelt idıpecsétet (a Ti régebbi, mint a Tj). Ha a Ti tranzakció korábbi, mint Tj akkor a Ti érvénytelenítve lesz, illetve késıbb újra lesz indítva ugyanazzal az idıpecséttel.
Algoritmusok, melyek ezt a megközelítést használják:
− mindkét algoritmus érvénytelenítve.
77
esetén
a
fiatalabb
ha ts(Ti) < ts(Tj) akkor Ti vár különben megszakítva (WAIT-DIE) ha ts(Ti) < ts(Tj) akkor Tj meg van szakítva különben Ti vár (WOUND-WAIT) tranzakció
van
− a szabályok a Ti szemszögébıl vannak leírva: Ti várakozik, Ti szakad meg és Ti szakítja meg a Tj-t. − a két algoritmus eredménye ugyanaz: az érintett tranzakció meg van szakítva és újra van indítva. A két szabályt a következıképpen írhatnánk le:
78
− a WAIT-DIE algoritmus a fiatalabb tranzakciókat részesíti elınyben, míg a régebbi tranzakciók várakoznak a kért erıforrás után, ez a tranzakciók elöregedésének jelenségét segíti elı. − a WOUND-WAIT algoritmus elınyben részesíti a régebbi tranzakciókat, amelyek soha nem várnak fiatalabb tranzakciókra − holtpont elkerülésének érdekében fel lehet használni mind a két algoritmust vagy akár a kombinációjukat. − Az elkerülési módszerek hátránya az, hogy a lehetséges holtpontok kezelésének mőveletei sok idıt felvesznek. Ez az idı hozzájárul a tranzakciók végrehajtásának átlag idejének növeléséhez.
79
− a legnépszerőbb és legtöbbet tanulmányozott holtpont kezelési metódus. − GWFG-ban a körök létrejöttének tanulmányozásával történik. − egy vagy több áldozat tranzakciót kiválasztanak, melyek meg lesznek szakítva a GWFG-beli körök megszüntetése érdekében. − bonyolult feladat (NP-teljes), azokat az áldozat tranzakciókat kiválasztani, melyeknek érvénytelenítése minimalizálja a holtpontból való kilépés mőveletének költségét − osztott holtpont felismerésére három alapvetı módszer létezik: központosított, osztott hierarchikus.
Holtpont felismerés és megoldás
80
− a rendszer terheltségének csökkentésére a csomópontok periódusonként, csak a LWFG-on történt módosításokat küldik el (hozzáadott vagy törölt éleket).
− az osztott ab. csomópontjai közül egyik ki van nevezve holtpont felismerınek az egész rendszerre nézve. − a csomópontok mindegyike periódusonként a saját LWFG-ját elküldi a holtpont felismerı csomópontnak. − ez felépíti a GWFG-ot és meghatározza benne a létezı köröket.
Központosított holtpont felismerés
81
− az információk elküldése közötti idı megválasztásának két ellentmondó befolyásoló tényezıje van: o a hosszú periódusok késést okozhatnak, a nem idıben felismert holtpontnak köszönhetıen, o a túl gyakori üzenetek elküldése szintén negatívan befolyásolhatja a rendszer hatékonyságát, a valószínőleg felesleges, nagy számú üzenetek elküldése terheli a rendszert. − a holtpontok központosított felismerése nagyon egyszerő és egy természetes megoldást jelentenek olyan rendszerek esetén, amelyek a központosított 2PL módszert alkalmazzák konkurencia kezelı algoritmusként. − a legnagyobb hátrányát ennek a módszernek a holtpontot felismerı csomópont sebezhetısége jelenti. − ezt módszert használták az osztott INGRES-nél.
82
− holtpont felismerık hierarhiáját építik fel − a helyi holtpontok már a csomók szintjén felismerhetık a LWFGnak köszönhetıen. − mindegyik csomópont elküldi a LWFG-ját a hierarchiában felette álló holtpontot felismerı csomópontnak. − ennek megfelelıen az osztott (globális) holtpont, mely kettı vagy több csomópontot érint, annak a gyökér csomó szintjén lesz felismerve, amely tartalmazza ezeket a csomópontokat. Jelölés: DD – deadlock detector DD21- 2 a 2-s szintér, 1 az 1-s csomóponté
Hierarchikus holtpont felismerés
2 Csomó DD22
DD23
3 Csomó
DD14
DD24
4 Csomó
83
Például az 1-s csomóbeli holtpont fel lesz ismerve az 1-s csomóban található lokális holtpont felismerı által
DD21
1 Csomó
DD11
DD0x
84
− Ha a holtpont túllépi az 1-es és 2-es csomópontot, akkor a DD11 fogja felismerni. − Végül, ha a holtpont túlhaladja az 1-s és 4-s csomópontot akkor a DD0x fogja felismerni, ahol az x lehet 1, 2, 3 vagy 4. − A hierarchikus felismerés módszere csökkenti a központosított csomótól és a hálózati kommunikációtól való függıséget. − Hátrány: o a bonyolult implementálás o módosításokat kell végezni a konkurencia ellenırzı algoritmuson is, meg a másolatokat ellenırzı protokollok szintjén is.
85
− mindegyik csomóban kell létezzen egy holtpont felismerı. − a csomók átadják egymásnak a saját LWFG-jukból a lehetséges holtpont köröket − hasonló algoritmust használ a System R* A LWFG-ok a következıképpen vannak kiegészítve és módosítva: mindegyik csomópontban a többi csomóponttól kapott lehetséges holtponti körök élei hozzá vannak csatolva a csomó LWFG-hoz a LWFG azon élei, melyek azt mutatják, hogy a lokális tranzakciók várnak más csomópontbeli tranzakciókra, össze vannak kötve a LWFG-ok azon éleivel, melyek azt mutatják, hogy távol tranzakciók várnak lokális tranzakciókra
Osztott holtpont felismerés
T3
T2
86
A lokális holtpontkezelık két dolgot vizsgálnak: Ha a LWFG-ban létezik kör, amely nem tartalmaz külsı éleket akkor egy helyi holtpontot ismer fel és ezt helyben meg is oldja. Ha a LWFG-ban létezik egy olyan kör, amely tartalmaz külsı éleket akkor egy globális holtpontot ismer fel és ennek megoldása feltételezi a kör elküldését a többi holtpont felismerı csomóponthoz.
T4
2 Csomó
T1
1 Csomó
87
Több megoldás is létezik arra vonatkozólag, hogy mely csomópontoknak kell elküldeni a kört: a lehetséges kör összes csomópontba való elküldése. Ez azonban nagy számú üzenet elküldését feltételezi, amely valószínőleg nem is szükséges. egy hatékonyabb megoldást jelent a holtponti körnek azokba a csomópontokba való elküldése, melyek a láncot alkotják. Az üzenetet vevı csomópontok a fent leírt szabályoknak megfelelıen kiegészítik a saját LWFG-t és megvizsgálják ebbe egy lehetséges kör jelenlétét. o problémát jelent, hogy egyetlen holtpontot több csomópont is felfedezhet, mint lehetséges kört a saját LWFG-ban. o a különbözı csomópontokbeli holtpont felismerık különbözı áldozat tranzakciókat választhatnak ki.
88
Feltételezve, hogy az idıbélyegek a tranzakciók számával egyezik, csak az 1-es csomópont küldi tovább a holtponthoz tartozó éleket.
o az elküldött üzenetek számát a felére lehet csökkenteni o csökken annak az esélye, hogy ugyanazt a holtpontot egyszerre többen is észleljék. A példa esetén: 1-es csomópont lánca: T1 → T2 → T3 2-es csomópont lánca: T3 → T4 → T1
A probléma a tranzakciókhoz rendelt idıpecsétek felhasználásával oldható meg: legyen Ti →…→ Tj a LWFG azon lánca, amely a lehetséges holtponti körhöz van rendelve. a helyi csomó akkor küldi tovább ezt a kört, ha a ts (Ti) < ts (Tj).
89
− az osztott helyreállítási protokolloknak (mint ahogy a lokálisnak is), céljuk, hogy az osztott tranzakciók atomiságát és tartósságát biztosítsák − begin_transaction teljesen hasonlóan hajtódik végre, mint központosított esetben, a TM által, abban a csomópontban, melybıl a tranzakció származik. − a read és write parancsok a ROWA szabályoknak megfelelıen hajtódnak végre.
Helyreállítás osztott környezetben
−
−
−
−
90
A commit, abort, recover osztott rendszerben változik
A koordinátor kommunikál a többi csomópontban levı résztvevı folyamattal, melyek a tranzakció mőveleteinek végrehajtásában segítenek.
Ezt a folyamatot nevezzük koordinátornak.
A protokoll egyszerőbb leírása miatt feltételezzük, hogy abban a csomópontban, melybıl a tranzakció származik, létezik olyan folyamat, mely a mőveleteit végrehajtja.
Stabil adatbázis
Stabil napló
Háttértároló
Archívum adatbázis
Írás
Pufferkezelı
Írás
Írás Olvasás
Archívum napló
Lehozás
Olvasás
Írás
91
4.2. ábra. LRM és BM által vezérelt teljes memória hierarchia
Írás
Olvasás
Írás
Olvasás
Lokális helyreállításkezelı
(Felejtı adatbázis)
Adatbázis puffer
Napló puffer
92
A kétfázisú véglegesítés (angolul: two-phase commit – 2PC) egy elegáns protokoll, mely biztosítja az osztott tranzakció atomi véglegesítését. − Kiterjeszti a lokális atomi véglegesítési mőveletet osztott tranzakciókra, ragaszkodva ahhoz, hogy az osztott tranzakciókban résztvevı összes csomópont egyezzen bele a tranzakció véglegesítésébe, mielıtt annak hatásai maradandókká válnának.
93
Több ok van arra vonatkozóan, hogy miért szükséges a csomópontok közötti szinkronizálás. − egyes ütemezık lehet, hogy nincsenek készen a tranzakció befejezésére. Pl, ha egy tranzakció egy olyan adatnak az értékét olvassa, melyet egy másik, még nem véglegesített tranzakció módosított, az ütemezı lehet, hogy még nem akarja az elızıt véglegesíteni. − Holtpont jelenhet meg, mely megköveteli a résztvevıtıl, hogy a tranzakciót megszakítsa. A résztvevınek meg lehet engedve, hogy megszakítsa a tranzakciót. Ez a képesség meglehetısen fontos és egyoldalú megszakításnak nevezzük.
94
Koordinátor
Résztvevı ELİKÉSZÍT
KEZDİ
MEGSZAKITÁS
begin_transaction beírása a naplóba
SZAVAZAT
KEZDİ
Nem
megszakítás beírása a naplóba
Kész az véglegesítésre? Igen
VÉGLEGESÍTÉS
VÁRAKOZÁS
Igen
Valamelyik nem?
megszakítás beírása a naplóba
GLOBÁLIS- MEGSZAKITÁS
készenlét beírása a naplóba
KÉSZENLÉT
Nem GLOBÁLIS-V ÉGLEGESITÉS
VÉGLEGESÍTÉS
(Egyoldalú megszakítás)
véglegesítés beírása a naplóba
MEGSZAKÍTÁS
ACK
Megszakítás
megszakítás beírása a naplóba
ACK
end_transaction beírása a naplóba
MEGSZAKÍTÁS
96
Üzenet típusa? Véglegesítés véglegesítés beírása a naplóba
VÉGLEGESÍTÉS
98
ellipszisek - állapotok, szaggatott vonalak a koordinátor és a résztvevık közötti üzeneteket a szaggatott vonalakon levı címkék határozzák meg az üzenet természetét. − a koordinátor beír egy begin_transaction bejegyzést a naplóba, elküldi az „ELİKÉSZÍT” üzenetet mindegyik résztvevı csomópontnak és VÁRAKOZÁS állapotba kerül. − amikor egy résztvevı megkapja az „ELİKÉSZÍT” üzenetet, megvizsgálja, hogy, tudja-e véglegesíteni a tranzakciót. o ha igen, beír egy készenlét bejegyzést a naplóba, elküldi a „VÉGLEGESÍTÉS-SZAVAZAT” üzenetet a koordinátornak, majd KÉSZENLÉT állapotba kerül; o különben, egy megszakítás bejegyzést ír a naplóba és a „MEGSZAKITÁS-SZAVAZAT” üzenetet küldi el a
99
koordinátornak. Ha a csomópont megszakítás döntést hozott, abba is hagyhatja a tranzakciót, mert egy megszakítás határozatnak döntı szerepe van (egyoldalú megszakítás). − Miután a koordinátor minden résztvevıtıl kapott választ, eldönti, hogy véglegesítse vagy megszakítsa a tranzakciót. o ha legalább egy résztvevıtıl negatív szavazatot kapott, a koordinátor meg kell szakítsa a tranzakciót globálisan. Így beír egy megszakítás bejegyzést a naplóba, elküldi a „GLOBÁLISMEGSZAKÍTÁS” üzenetet az összes résztvevınek és MEGSZAKÍTÁS állapotba kerül; o különben egy véglegesítés bejegyzést ír a naplóba, „GLOBÁLISVÉGLEGESÍTÉS” üzenetet küld az összes résztvevınek és VÉGLEGESÍTÉS állapotba kerül.
100
− A résztvevık a koordinátor utasításainak megfelelıen vagy véglegesítik vagy megszakítják a tranzakciót és visszaküldenek egy visszaigazolást, melyre a koordinátor befejezi a tranzakciót beírva egy end_transaction bejegyzést a naplóba. A koordinátor döntését egy tranzakcióra vonatkozó globális befejezését illetıen két szabály irányítja, melyeket együttesen globális véglegesítési szabálynak nevezünk: 1. Ha legalább egy résztvevı a tranzakció megszakítására szavaz, a koordinátor egy globális megszakítás döntést kell hozzon. 2. Ha az összes résztvevı a tranzakció véglegesítésére szavaz, a koordinátor globális véglegesítési döntést kell hozzon. A 2PC megengedi, hogy egy résztvevı egyoldalúan megszakítson egy tranzakciót.
101
− Ha egy résztvevı azt szavazta, hogy véglegesíti a tranzakciót, utólag a szavazatát nem változtathatja meg. − Amikor egy résztvevı a KÉSZENLÉT állapotban van, a tranzakciót vagy megszakíthatja vagy véglegesítheti a koordinátortól kapott üzenet természetének függvényében. − A globális befejezési döntés a koordinátortól származik, a globális véglegesítési szabálynak megfelelıen. − A koordinátor és a résztvevı folyamatok biztos állapotokba kerülnek, melyben várakozniuk kell egymás válaszaira. − Amikor a frissítés véglegessé válik a frissítést végzı gépen, akkor azt hálózatszintő véglegesítésnek kell követnie, amelynek során az összes gép megkísérli véglegesíteni a változtatást. o Az adatnak mindaddig lezárva kell maradnia, amíg minden véglegesítés sikeres lesz.
102
A kommunikációs struktúra a következı:
o Ha valamelyik gépen a frissítés nem sikerül, akkor egy hálózatszintő visszagörgetést kell kibocsátani, hogy visszaállítsuk a változtatásokat ott, ahol az már véglegessé vált. A fenti a központosított 2PC-t, mivel a kommunikáció csak a koordinátor és a résztvevık között folyik; a résztvevık egymás között nem kommunikálnak.
Koordinátor
2 Fázis
103
ábra. Központosított 2PC kommunikációs struktúra
1 Fázis
Koordinátor
véglegesített / megszakított
Résztvevık
globálismegszakítás/végle megszakítás/végle gesítés-szavazás gesítés szavazás
Résztvevık
elıkészít
Koordinátor
104
Egy másik alternatíva a lineáris 2PC, ahol a résztvevık egymással kommunikálhatnak. − A rendszerben kommunikációs célból a csomópontoknak létezik egy sorrendje. − Legyen egy tranzakció végrehajtásában résztvevı csomópontok közötti sorrend 1, …, N, ahol a koordinátor az elsı a sorban. A 2PC protokoll egy elıre, illetve egy visszafele irányuló kommunikációval van implementálva. o Az elıre irányuló kommunikáció a koordinátortól (az 1-es) az N-ig tart és ez jelenti az elsı fázist. o A visszafele irányuló kommunikáció az N-tıl a koordinátorig tart és ez a második fázis.
1
2 GC/GA
VC/VA 3
2 Fázis
GC/GA
VC/VA
1 Fázis
4 GC/GA
VC/VA
105
ábra. Lineáris 2PC kommunikációs struktúra
GC/GA
Elıkészí
Lineáris 2PC mőködése:
GC/GA
5
VC/VA
≈ ≈
N
106
− A koordinátor elküldi a „elıkészít” üzenetet a 2. résztvevınek. o ha a 2. résztvevı nincs kész a tranzakció véglegesítésére, „megszakítás-szavazat” (angolul: „vote-abort” – VA) üzenetet küldi a 3. résztvevınek és a tranzakció ebben a pontban meg van szakítva (egyoldalú megszakítás a 2. által). o ha a 2. résztvevı beleegyezik a tranzakció véglegesítésébe, az „véglegesítés-szavazat” (angolul: „vote-commit” – VC) üzenetet küldi el a 3. résztvevınek és VÁRAKOZÁS állapotba kerül. Ez a folyamat folytatódig, amíg az „véglegesítésszavazat” üzenet eléri az N. résztvevıt. Ez a fázis vége.
107
A lineáris 2PC, kevesebb üzenetet használ fel, viszont nem szolgáltat párhuzamosságot,ezért nagyon megnı a válaszidı.
o Ha az N. véglegesítést dönt, az N – 1-nek „globálisvéglegesítés” (angolul: „global-commit” – GC) üzenetet küld, különben „globális-megszakítás” (angolul: „global-abort” – GA) üzenetet. Ennek függvényében a résztvevık a megfelelı állapotba (VÉGLEGESÍTÉS vagy MEGSZAKÍTÁS) kerülnek és az üzenetet továbbítják a koordinátor felé.
Résztvevık
108
ábra. Osztott 2PC kommunikációs
1 Fázis
globálismegszakítási/érvényesítési döntés megszakítás/érvéfüggetlenül van nyesítés-szavazás
Résztvevık
elıkészít
Koordinátor
109
− a protokoll elsı fázisa alatt az összes résztvevı kommunikál A következıképpen mőködik: − a koordinátor elküldi az elıkészít üzenetet minden egyes résztvevınek. − mindegyik résztvevı a saját döntését, azaz vagy a „véglegesítés-szavazat” vagy a „megszakítás-szavazat” üzenetet az összes többi résztvevınek (a koordinátornak is). − mindegyik résztvevı megvárja míg az összes többi résztvevıtıl üzenetet kap, majd meghozza a döntését a befejezésrıl, a globális véglegesítési szabálynak megfelelıen. − nincs szükség a protokoll második fázisára, mivel mindegyik résztvevı függetlenül hozta meg a döntését az elsı fázis végén.
Osztott 2PC
110
Ilyen gond központosított 2PC esetén nem lép fel, mivel a koordinátor világosan ismeri a résztvevıket
A 2PC implementációjának L2PC és D2PC változatával a következıket kell megjegyezni: − lineáris 2PC esetén egy résztvevı kell ismerje a lineáris sorrendben a következı résztvevı − osztott 2PC esetén az összes résztvevı azonosságát Ez a probléma megoldható a résztvevık listájának a koordinátor által küldött elıkészít üzenethez való csatolással.
111
A koordináló gép (elsıdleges másolatot tároló) elküldi a frissítési információt és egy "Kész a véglegesítésre?" kérdést az adatbázisobjektum másolatait tároló gépeknek.
Elsı fázis:
− Ha az osztott adatbázisban vannak másolatok, a frissítést az összes másolaton el kell végezni. − Részben enyhíti az elérhetıség problémáját az "elsıdleges másolat" stratégiája. − A kétfázisú véglegesítési protokollban az egyik gép vállalja a felelısséget a véglegesítések összehangolásáért, az elsıdleges másolatot használó rendszerben ez az elsıdleges másolatot kezelı gép lesz és a két fázis a következı:
112
Mindegyik gép ellenırzi, hogy tud-e véglegesíteni, és egy IGEN vagy NEM választ küld vissza. Második fázis: Ha bármelyik gép a NEM választ küldi vissza, akkor a koordináló gép kibocsát egy rendszerszintő "Megszakít" üzenetet, vagyis az összes gép elfelejtheti a frissítési információt és továbbhalad. Ha minden válasz IGEN, akkor egy rendszerszintő véglegesítést bocsátunk ki. Amint egy gép elvégezte a véglegesítést, azt befejezettnek tekintheti, és felszabadítja a helyi lezárásokat.
114
Koordinátor
Résztvevı ELİKÉSZÍT
KEZDİ
MEGSZAKITÁS
begin_ transaction beírása a
SZAVAZAT
Nem
megszakítás beírása a naplóba
megszakítás beírása a naplóba
elıkészít_végleg. beírása a naplóba
KÉSZENLÉT
ELİKÉSZÍT_A_VÉGLEGESÍTÉS Megszakítá
ELİZETES VÉGLEGESÍTÉS
készenlét beírása a naplóba
GLOBÁLIS-MEGSZAKÍTÁS (Egyoldalú megszakítás)
Igen
Nem
ACK
megszakítás beírása a naplóba KÉSZ-A VÉGLEGESÍTÉS
MEGSZAKÍTÁS véglegesítés beírása a naplóba
Kész az véglegesítésre e? Igen
ÉRVÉNYESÍTÉS-SZAVAZAT
VÁRAKOZÁS
Valamelyik nem?
KEZDİ
Üzenet típusa? Elıkészít_érvén y elıkészít_ végleg. beírása a naplóba
MEGSZAKÍTÁS VÉGLEGESÍTÉS
VÉGLEGESÍT
ACK
end_transaction beírása a naplóba
115
ELİZETES VÉGLEGESÍTÉS
véglegesítés beírása a naplóba
VÉGLEGESÍT
116
118
120
FRAGMENT Alkalmazottak INTO KolAlk AT SITE ’Kolozsvar’ WHERE RészlegID = 1 OR RészlegID = 2 NavAlk AT SITE ’Nagyvarad’ WHERE RészlegID = 9;
példa: Legyen a NagyKer adatbázisból Alkalmazottak és Részlegek táblák: Részlegek (RészlegID, Név, Helység,ManSzemSzám); Alkalmazottak (SzemSzám, Név, Fizetés, RészlegID).
Osztott lekérdezések feldolgozása
121
KolAlk: 2000 rekord, mindegyik 100 bájt hosszú: 200.000 bájt Attribútumok: SzemSzám (10 bájt), Név (30 bájt), Fizetés (4 bájt), Cím (50 bájt), RészlegID (2 bájt) Minden Alkalmazott sor esetén a RészlegID értéke 1 vagy 2.
Részlegek: 10 rekord, mindegyik 50 bájt hosszú: 500 bájt Attribútumok: RészlegID (2 bájt), Név (20 bájt), Helység (20 bájt), ManSzemSzám (4 bájt)
“Kolozsvár” csomópont:
• a Részlegek táblát teljes egészében a “Kolozsvar” nevő csomópontban tároljuk. • az egyes csomópontokban tárolt adatok mennyisége a következı:
122
- kolozsvári csomópont lekérdezése: SELECT SzemSzám, Alkalmazottak.Név Részlegek.Név FROM Alkalmazottak, Részlegek WHERE Alkalmazottak.RészlegID = Részlegek.RészlegID AND RészlegID = 9;
NavAlk: 500 rekord, mindegyik 100 bájt hosszú: 50.000 bájt Minden Alkalmazott sor RészlegID értéke 9.
“Nagyvarad” csomópont:
SzemSzám, Alkalmazottak.Név, Részleg.Név(
σ RészlegID = 9 (Alkalmazottak ⋈
123
Alkalmazottak = KolAlk ∪ NavAlk.
Részlegek)) A globális Alkalmazottak relációt a lekérdezés feldolgozó helyettesíti:
Eredm =π
A lekérdezés relációs algebrai mőveletek sorozataként:
– a lekérdezés eredménye 500 sort fog tartalmazni, ahány a 9-es részlegben található a nagyváradi csomópontban. – egy sor hossza: SzemSzám (10 bájt), Alkalmazottak.Név (30 bájt), Részlegek.Név (20 bájt), összesen 60 bájt. – az eredmény 30.000 bájtot tartalmaz.
124
NavAlk fragmens nagyváradi csomópont → kolozsvári csomópont 50.000 bájt szállítani – kolozsvári csomópont: az összes szükséges adat jelen, végrehajtjuk a lekérdezést. Szállítandó adatmennyiség: 50.000 bájt.
– A relációs algebrai mőveletek sorozatából álló lekérdezés végrehajtására több stratégiát is ki lehet dolgozni. – a központosított lekérdezés feldolgozáshoz képest, itt a kommunikációs költségeket is figyelembe kell venni, sıt ezek képezik a lekérdezés feldolgozási költségének legnagyobb részét. – a továbbiakban csak a kommunikációs költségeket vesszük figyelembe. 1-es stratégia:
125
b)Részlegek tábla kolozsvári csomópont → nagyváradi csomópont 500 bájt szállítani – nagyváradi csomópont: összes szükséges adat jelen, végrehajtjuk a lekérdezést. Eredmény relációt vissza kell küldenünk a kolozsvári csomópontba, 30.000 bájt. Szállítandó adatmennyiség: 230.500 bájt. 3-as stratégia: a) Átírjuk a lekérdezést, felhasználva az 5. fejezetben ismertetett tulajdonságait a relációs algebrai mőveleteknek:
a) KolAlk fragmens kolozsvári csomópont → nagyváradi csomópont 200.000 bájt szállítani.
2-es stratégia:
RészlegID = 9
RészlegID =
(KolAlk ∪
126
SzemSzám, Alkalmazottak.Név, Részleg.Név(
Részleg.RészlegID, Részleg.Név (Részlegek)
=π
σ RészlegID = 9(KolAlk) = ∅) (σ
RészlegID = 9(NavAlk))
⋈ π
⋈ Részlegek) = (mivel a kolozsvári csomópontban nincs 9-es részlegnél dolgozó alkalmazott, a tördelési feltételben RészlegID = 1 OR RészlegID = 2, következik:
SzemSzám, Alkalmazottak.Név, Részleg.Név((
9(NavAlk))
π
σ
σ RészlegID = 9(KolAlk)) ∪ (σ
SzemSzám, Alkalmazottak.Név, Részleg.Név(
NavAlk) ⋈ Részlegek)) =
Eredm =π
127
(Azért, hogy kevesebb információt szállítsunk a Részlegek táblából az az, csak annyit ami szükséges, a függıleges vetítés mőveletét alkalmaztuk elıször a Részlegek táblára. Csak a Név szerepel az eredményben választott attribútumok között, viszont az összekapcsoláshoz szükségünk van a RészlegID-ra is, ezért kerül az is a a függıleges vetítés attribútumai közé) b) Szállítjuk a Részlegek tábla RészlegID (2 bájt) és Név (20 bájt) attribútumát, összesen 250 bájt a kolozsvári csomópontból a nagyváradi csomópontba. A nagyváradi csomópontban végrehajtjuk a lekérdezést. Az eredmény relációt vissza kell küldenünk a kolozsvári csomópontba, (30.000 bájt). Szállítandó adatmennyiség: 30.250 bájt.
π SzemSzám, Alkalmazottak.Név,
σ RészlegID=9(NavAlk))) ⋈ ⋈ π Részleg.RészlegID, Részleg.Név (Részlegek))
SzemSzám, Alkalmazottak.Név, Részleg.Név((
128
Az eredmény 500 sort fog tartalmazni, mivel az összes alkalmazott a nagyváradi csomópontban a 9-es részleghez tartozik, ez volt a tördelési feltétel: RészlegID = 9. Csak azokat az oszlopokat válogatjuk ki, melyek
π SzemSzám, Alkalmazottak.Név, RészlegID(σ RészlegID=9(NavAlk))
a) A nagyváradi csomópontban végrehajtjuk a következı lekérdezést:
RészlegID(
Eredm =π
4-es stratégia: Hasonlóan a 3-as stratégiához, átírjuk az eredeti lekérdezést, tovább folytatjuk az átírást:
129
Osztott rendszerben a költségek nagy részét az adatok átvitele képezi. A fenti stratégiáknál az adatok átvitelének mennyisége 21.000tıl 230.500 bájtig változik. A különbségek még drámaibbak lennének, ha csak az adatok egy kis része elégítené ki a vízszintes kiválasztás feltételét. Például a feltételt kiegészítjük: Fizetés > 500. Tegyük fel, hogy csak az alkalmazottak 10 százalékának nagyobb a fizetése 500-ál. Ez azt jelenti, hogy a 4-es stratégia esetén 2.100 bájtnyi adatmennyiséget
szükségesek az eredményhez: SzemSzám (10 bájt), Név (30 bájt), RészlegID (2 bájt). Szállítanunk 21.000 bájtot kell. b) A kolozsvári csomópontban végrehajtjuk a lekérdezést, itt kell az eredményt a felhasználónak szolgáltassuk, tehát további szállításra nincs szüksegünk. Szállítandó adatmennyiség: 21.000 bájt. □
130
kell csak szállítanunk, a többi stratégia költségei is változnak, de a különbség még nagyobb lesz. Egy osztott rendszer statisztikai bejegyzéseket tart fenn az egyes gépeken tárolt adathalmazok méretérıl, hogy a lekérdezések végrehajtására a legjobb stratégiát meg tudja állapítani. A lekérdezés feldolgozása a fragmentációt és az adatmásolását is ki kell tudja használni. A 0 példát figyelembe véve, a nagyváradi csomópontban levı NavAlk fragmensnek van másolata a kolozsvári csomóban KNavAlk. Ha a lekérdezés feldolgozó figyelembe veszi a másolatok létezését, használhatja a KnavAlk másolatot és adatátvitelre nincs szükség egyáltalán. A fenti stratégiák feltételezik, hogy a lekérdezés processzor ismeri az adatbázis globális szerkezetét, hozzáfér a globális katalógushoz (GD/D). Ha a lekérdezés feldolgozó nincs birtokában ezeknek az
131
Az adatbázis-kezelı rendszerek egy adatszótárt (vagy katalógust) tartanak fenn, amely a rendszerben tárolt és kezelt adatobjektumokat írja le (például táblák szerkezete, index állományok értelmezése, helyességi megszorítások, nézetek értelmezése, felhasználókról szóló információk, azok jogosultságait, stb). Az ANSI/SPARC modell esetén találkoztunk a globális katalógus/szótár (GD/D) és lokális katalógus/szótár (LD/D) fogalmával. Osztott környezetben minden résztvevı csomópontnak ismernie kell a rendszer összes objektumának (tábla, index, nézet, stb) értelmezését. A globális katalógus, tartalmazza a rendszerben található összes objektum leírását, melyre minden csomópontnak szüksége van. Egy adott csomópontnak van lokális katalógusa, mely az illetı csomópontban tárolt objektumok leírását tartalmazza. Különbözı megközelítések léteznek az osztott adatbázis-kezelı katalógusainak tárolására: Teljesen szétszórt: E megoldás esetén minden csomópontja az osztott adatbázisnak csak azon objektumok leírását tartalmazza, amelyeket az illetı csomópont tárol lokálisan. Tehát léteznek a lokális katalógusok, a globális katalógus csak virtuális,
Katalóguskezelés
információknak, akkor nem tehet mást, mint hogy megvizsgálja az összes gép lokális katalógusát, hogy megtalálja a szükséges adatokat. Amikor több gépen lévı adatot kapcsolunk össze, az adatátviteli költség csökkentésére szolgáló egyik stratégia a félig-összekapcsolás (semijoin).
132
nincs tárolva, a lokális katalógusok egyesítésébıl kapjuk. Ezzel a megközelítéssel az a probléma, hogy minden alkalommal, amikor nem helyi adathoz kell hozzáférni, meg kell vizsgálni minden más csomópont lokális katalógusát, amíg a keresett információt megtaláljuk. Ez súlyos teljesítmény problémához vezethet, amikor távoli adat elérésére van szükség. Teljesen másolt: Ebben az esetben minden gép rendelkezik a globális katalógus egy teljes másolatával, ami felgyorsítja a távoli adatelérést. Azt jelenti azonban, hogy minden alkalommal, amikor valamelyik gépen egy új adatobjektum (tábla, index, nézet, stb.) keletkezik, vagy éppen megsemmisül, akkor a katalógus változását tovább kell küldeni a rendszer valamennyi katalógusának. Központosított: E megoldás esetén a lokális katalógusokon kívül létezik egy „központi” csomópontban egy globális katalógus a rendszer összes objektumának a leírásával. A távoli adat elérésekor az osztott adatbázis-kezelı elıször a „központi” csomópont globális katalógusában keresi az objektumot, ahol annak a helye is megtalálható, majd magát az objektumot beolvassa. A lokális katalógusokban történı változásoknak el kell jutniuk a központi katalógusba. Ez tulajdonképpen a két elızı megközelítés közötti kompromisszum, mindkettıvel szemben vannak elınyei, viszont aláássa a központi csomóponttól való függetlenség elvét. Ha a „központi” csomópont meghibásodna, akkor lehetetlenné válna a hozzáférés az összes távoli adathoz. Állandó azonosítók. Ezt az elrendezést elvileg számos rendszer használja, a részletek azonban különböznek. Új adatobjektum létrehozása esetén az objektum kap egy logikai azonosítót, ami az összes többi gép adatszótárába bekerül. Ez a logikai azonosító azonosítja a gépet, ahol megszületett az objektum. Az objektum "születési hely" katalógus bejegyzése nyomon követi a tulajdonképpeni tárolási helyet. Így ha egy objektum, mondjuk egy reláció a születési helyérıl, átkerül egy másik gépre, a születési helyén lévı katalógus bejegyzése megváltozik az új tárolási helyet rögzítve. Ezen kívül hozzáadódik az új tárolóhely helyi katalógusához. Bármely gép, amelynek szüksége van az objektumra, elıször a születési helyen lévı katalógust vizsgálja meg, és az ott tárolt információt használja magának az objektumnak a megtalálására. Ha az objektumot ismét el kellene mozdítanunk, akkor az elhagyott gép helyi adatszótárból egyszerően törölnénk és hozzáadnánk az új gép adatszótárához, valamint megváltoztatnánk a születési helyen lévı katalógus bejegyzését az új helyet rögzítve. Bármely olyan gépnek, amelynek az objektumra van szüksége, csak két gép katalógusához kell hozzáférnie: a születési helyen, vagyis azon a gépen, ahol létrejött és a jelenlegi tárolóhelyen. Ez azt jelenti, hogy az objektumok csak akkor válnak megtalálhatatlanná, ha a születési hely gépe meghibásodik.