Baze de date distribuite
Generalitati
O baza de date distribuita (BDD) este o colectie logic corelata de date partajate, distribuite fizic pe o retea de calculatoare.
Un sistem de gestiune al unei baze de date distribuite (SGBDD) este un sistem software care permite gestionarea BDD si face distribuirea transparenta pentru utilizator.
Sistemele de date distribuite sunt menite sa rezolve problema "insulelor de informatii". Ele au aparut ca o necesitate, īn special in cazul retelelor de calculatoare, pentru a sprijini gestionarea datelor īn situatia cānd acestea se regasesc fizic īn diferite puncte ale retelei.
Primele sisteme de baze de date distribuite au fost INGRES/STAR, versiune distribuita a lui INGRES, SQL*STAR versiune distribuita a lui ORACLE si R* versiune distribuita a lui DB2.
Sistemul fizic (reteaua) care constituie suportul unei baze de date distribuite poate fi format din calculatoare personale, minicomputere, statii de lucru, etc. toate legate īn retea si numite generic site-uri.
Putem reformula definitia de la īnceput spunānd ca un sistem de baze de date distribuite consta dintr-o colectie de site-uri, fiecare putānd participa la executarea tranzactiilor care acceseaza datele de pe un site sau de pe mai multe site-uri.
Printre cerintele pe care trebuie sa le asigure un sistem de baze de date distribuite mentionam: autonomia locala īn organizarea si prelucrarea datelor, neutilizarea unei centralizari a evidentei si a datelor, posibilitatea de lucru continuu al site-urilor independent de schimbarile in configuratiile de lucru (adaugari sau eliminari de site-uri), independenta localizarii si fragmentarii datelor (transparenta fizica), posibiliatti d 252k1019c e replicare (copiere) si independenta copiilor, prelucrarea distribuita a cererilor, administrarea distribuita a tranzactiilor, independenta de hardware, de sistemul de operare, de retea si de sistemul de gestiune a bazelor de date.
Un SGBDD consta dintr-o singura baza de date care este descompusa īn fragmente, eventual unele fragmente sunt multiplicate, si fiecare fragment sau copie se pastreaza pe unul sau mai multe site-uri, sub controlul unui SGBD local. Fiecare site este capabil sa proceseze interogari utilizator īn regim local, independent de restul retelei, sau este capabil sa participe la procesarea unor date situate īn alte site-uri din retea. Pentru a spune ca un SGBD este distribuit trebuie sa existe cle putin o cerere globala.
Tranzactiile īntr-o baza de date distribuita sunt clasificate īn tranzactii locale si tranzactii globale dupa site-urile pe care le solicita excutarea lor.
O configuratie pe retea reprezinta o baza de date distribuita daca diversele site-uri sunt "constiente" de existenta celorlalte site-uri si daca fiecare site ofera un mediu in care se pot executa tranzactii locale si globale.
Avantajele distribuirii bazelor de date:
sistemul distribuit se modeleaza cel mai bine pe structura organizationala a multor organizatii, avand īn vedere ca multe companii sunt localizate "distribuit" din punct de vedere geografic
datele sunt partajabile dar administrarea lor se bucura de un grad īnalt de autonomie locala
disponibilitatea bazei de date este evident mai buna decāt īn cazul centralizat. Daca se semnaleaza unele erori sau "aderi" de sistem la nivel local sistemul ]n īntregime poate sa continue sa functioneze īn conditii satisfacatoare
fiabilitatea sistemului este īmbunatatita. Se pot reface rapid fisiere distruse utilizānd replici aflate pe alte site-uri
performantele īn prelucrarea datelor se īmbunatatesc prin posibilitatea prelucr[rii īn paralel a unor interog[ri
un sistem distribuit ofera avanatje economice daca luam īn considerare costurile implementarii si īntretinerii unei retele fata de costurile corespunzatoare ale unui sistem centralizat de putere comparabila de prelucrare. Costuri scazute se mai obtin daca se realizeaza prelucrari locale cāt mai multe (īn caza sistemul si aplicatiile permit acest lucru). De asemenea este mult mai convenabil sa se "ajusteze" o retea de calculatoare la nevoile organiza'iei (dac[ de exemplu este necesara adaugarea unor site-uri īn plus) decāt un calculator central de putere asemanatoare
capacitatea de gestionare modulara a sistemului permite extensii ale acestuia sau rezolvarea unor "caderi" partiale fara sa se afecteze prea tare (uneori fara a se afecta deloc) mersul activitatilor pe ansamblul sistemului distribuit.
Printre dezavantajele distribuirii amintim complexitatea crescuta a unui astfel de sistem.
Acesta este un dezavantaj major din care decurg unele dezavantaje "consecinta" dintre care:
este mai greu de gestionat si de implementat un sistem distribuit
costurile legate de un astfel de sistem sunt mult mai mari decat in cazul centralizat. Deja la nivelul proiectarii si implementarii sistemului este necesar mai mult timp si personal specializat. Ambele lucruri necesita costuri mai mari in bani. La aceste costuri se pot adauga acelea care vin din necesitatea asigurarii echipamentelor hardware performante si a soft-ului necesar. De asemenea, in cazul exploatarii sistemului la costurile obisnuite se vor adauga costuri destul de ridicate de comunicatii.
potential marit de erori. La erorile obisnuite in lucrul cu baze de date se pot adauga o serie de erori cum ar fi de exemplu cele generate de algoritmi distribuiti.
este necesara o procesare suplimentara care se datoreaza schimburilor de mesaje intre site-uri si a coordonarii acestora in general
securitatea unui sistem distribuit este mai greu de asigurat decat in cazul unui sistem centralizat. Datele sunt mai usor disponibile unor persoane neautorizate deoarece se poate incerca acces la ele prin intermediul accesului intre calculatoare. Controlul la nivel fizic administrativ are mai putina pondere decat in cazul unui sistem centralizat.
intergitatea datelor este de asemenea mai greu de realizat intr-un sistem distribuit. Integritatea se exprima de obicei in termeni de restrictii (reguli, conditii) pe care trebuie sa le verifice datele din baza de date. Datorita costurilor mari de comunicatii (in timp si bani) uneori se renunta la verificarea unor reguli in detrimentul consistentei bazei de date.
lipsa standardelor. Nu se poate vorbi de o lipsa totala de standarde dar, lucrul cu sisteme de date distribuite inca nu are la baza standarde internationale unanim acceptate. De aici decurg dezavantaje cum ar fi: probleme de comunicare care se pun deoarece standardele de comunicatii si protocoalele de acces la date inca nu au standarde fixate si acceptate pe scara larga. Nu exista foarte multa experienta privind lucrul distribuit si proiectarea, gestionarea si exploatarea unui sistem distribuit sunt mai dificile decat in cazul centralizat.
Un alt dezavantaj pe care il mentionam aici il constituie posibilitatea aparitiei unui flux mare de informatii intre site-uri si de aici necesitatea rezolvarii unor probleme cum ar fi sincronizarea mesajelor, detectarea si corectarea unor perturbari, eliminarea unor inconsistente datorate redundantelor, etc.
7.2. Functiile si arhitectura unui SGBDD
Enumeram mai jos functiile principale ale unui SGBDD:
toate functiile pe care le atribuim unui SGBD centralizat
sa extinda comunicatiile pentru a furniza acces la site-urile din retea si sa permita transferul de date si realizarea interogarilor
sa gestioneze un dictionar de date extins pentru detalii legate de modul de distribuire a datelor
sa permita si sa sustina procesarea distribuita a interogarilor
sa faciliteze un control extins al concurentei in scopl mentinerii unui grad satisfacator al consistentei datelor
sa ofere servicii de recovery extinse care sa rezolve caderi ale site-urilor si ale comunicatiilor
Arhitectura ANSI-SPARC pe trei nivele a unei baze de date distribuite este redata grafic in pagina urmatoare, Fig 7.1. Dam mai jos cateva explicatii referitoare la unele elemente prezente in schema:
schema conceptuala globala este o descriere logica a intregii baze de date, fara a se evidentia aspectul distribuit. La acest nivel se definesc entitatile, relatiile, restrictiile de integritate, informatiile generale de securitate a datelor.
schemele de fragmentare descriu modelul logic al partitionarii bazei de date iar alocarea descrie repartizarea fragmentelor si a eventualelor copii ale acestora pe site-urile retelei
schemele locale de mapare redau fragmentele din schema de alocare in "obiecte" externe bazei de date locale. Aceasta descriere este independenta de SGBD-ul ales si datorita acestui fapt se poate vorbi de SGBD heterogene.
Ca o paranteza mentionam aici clasificarea SGBD-urilor distribuite in heterogene si omogene.
SGBD omogene reprezinta situatia cand pe toate site-urile din retea este hardware similar, sistem de operare identic si, cel mai important, SGBD local identic.
In cazul SGBD heterogene exista mai multe situatii dupa cum difera dotarea hardware, sistemele de operare si/sau SGBD-urile utilizate local pe site-uri. Diferentele pot fi impinse pana la a avea structuri ale bazei de date diferite (date de modele de date diferite) dar, evident, lucrul in acest caz este destul de greoi si este supus multor limitari.
BD
Fig.7.1. Arhitectura ANSI-SPARC pe trei nivele
In cadrul unui SGBDD putem identifica urmatoarele componente:
o componenta locala SGBD (LSGBD)
o componenta de comunicatii de date (CD)
un dictionar de date global (DDG). Acest dictionar are aceeasi functionalitate ca si und dictionar de date īn cazul SGBD centralizat dar contine informatii suplimentare referitoare la fragmentare si la alocarea datelor. si DDG poate fi fragmentat si replicat ca orice alta informatie din baza de date distribuita
componente de SGBD distribuit (SGBDD)
7.3. Proiectarea unei baze de date relationale distribuite
Proiectarea corecta a unei baze de date relationale distribuite necesita, pe lānga cerintele cunoscute pentru sistemele centralizate, si realizarea urmatoarelor:
fragmentarea datelor - informatiile pot fi partitionate īn fragmente care sunt apoi stocate pe diferite site-uri īn retea
replicarea - se pot realiza copii ale diferitelor relatii sau ale fragmentelor
alocarea fragmentelor si a replicilor pe diferite site-uri
Definirea fragmentelor si alocarea acestora pe site-uri au ca obiective:
realizarea, pe cat posibil a accesului in regim de referinte locale. Acolo unde este necesar si unde permite aplicatia se recomanda utilizarea de copii ale fragmentelor
obtinerea unei fiabilitati si a unei disponibilitati deosebite ale bazei de date prin utilizarea optima a replicarii fragmentelor
realizarea unor parametri deosebiti de performanta. Daca se aloca prost datele pe site-uri se ajunge fie la suprasolicitarea unui site (loc ingust) fie la utilizarea resurselor la un nivel inferior
optimizarea capacitatii si a costurilor de stocare. Capacitatea si costuril de stocare trebuie puse in balanta cu tendinta de a avea referinte locale, deoarece au efecte contrare.
optimizarea costurilor de comunicare. Aici sunt de luat in considerare mai ales costurile interogarilor intre site-uri. Trebuie sa se aiba in vedere ca, daca se pot micsora costurile de regasire atunci cand referintele sunt mai ales locale (sau cand fiecare site are propriile copii ale datelor) in schimb actualizarile in aceeasi situatie pot creste costurile foarte mult (si riscul obtinerii inconsistentei) deoarece trebuie sa fie realizate asupra datelor de la toate site-urile.
7.4. Alocarea datelor
Se cunosc patru strategii de alocare a datelor īntr-o baza de date relationala distribuita:
centralizat
Baza de date se afla īn īntregime pe un singur site din retea si este gestionata de un singur DBMS. Spunem īn acest caz ca baza de date este procesata distribuit, ea de fapt nu mai este o baza de date distribuita in adevaratul sens al cuvāntului. Dezavantajele sunt mai ales costurile mari de comunicatii si o fiabilitate si o disponibilitate foarte scazute, avānd īn vedere ca orice eroare care blocheaza accesul la baza de date, practic paralizeaza īntreaga activitate īn retea pe aceasta directie.
fragmentat (partitionat)
Baza de date este partitionata īn mai multe fragmente disjuncte care sunt stocate pe diverse site-uri. Comentarii:
aceasta partitionare a datelor poate īmbunatati frecventa referintelor locale
daca nu exista replici ale fragmentelor, costurile de stocare sunt reduse
fiabilitatea si disponibilitatea sunt scazute dar nu asa de mici ca īn cazul centralizat
daca datele sunt distribuite corect, costurile de comunicare pot fi relativ scazute
replicat complet
Pe fiecare site se gaseste o copie completa a bazei de date. Comentarii:
eficienta referirilor locale, fiabilitatea si disponibilitatea sunt maxime
costurile de stocare sunt īn schimb si ele foarte mari, la fel sunt si costurile de actualizare
replicat selectiv
Aceasta strategie este o combinatie intre partitionare, replicare si centralizare cu scopul de a se cumula, pe cat posibil, avantajele fiecarei strategii si sa se elimine dezavantajele.
Definirea replicilor si a fragmentelor, precum si alocarea acestora trebuie sa se bazeze pe modul de utilizare a datelor din baza de date. In faza de analiza, la proiectarea bazei de date trebuie sa se tina cont de cele mai frecvent utilizate aplicatii deoarece nu se poate realiza o alocare care sa optimizeze toate aplicatiile simultan.
Printre criteriile care duc la decizia corecta de alocare a bazei de date:
frecventa cu care se ruleaza o aplicatie
site-urile de la care se ruleaza cel mai frecvent aplicatia
modul de lucru al tranzactiilor executate de aplicatie si tipurile de acces la date
etc.
7.4.1. Fragmentarea
La baza fragmentarii bazei de date exista, printre altele, urmatoaele motivari:
mod de utilizare - in general intr-o aplicatie utilizatorii au acces mai mult la view-uri decat la intreaga baza de date
eficienta - se doreste ca datele sa fie stocate acolo unde sunt utilizate mai frecvent
paralelism - o tranzactie poate fi divizata in mai multe subinterogari care opereaza pe fragmente in paralel si astfel se castiga timp
securitate - datele care nu sunt necesare sunt stocate in alta parte, deci nu sunt la dispozitia accesului neautoarizat
Dezavantajele lucrului cu fragmente ale bazei de date:
performantele pot fi destul de scazute daca sunt necesare date ce apar in diverse fragmente
controlul integritatii datelor este mai dificil daca datele si dependentele functionale sunt fragmentate si localizate pe diferite site-uri
Reguli de baza care duc la o fragmentare corecta a bazei de date:
completitudine - daca relatia R este descompusa īn fragmentele R1, R2, .,Rn, trebuie luate masuri care sa previna pierderea de informatii
reconstructie - sa fie posibil īn orice moment sa se refaca relatia R de la care s-a pornit cu fragmentarea. Aceasta regula conserva dependentele functionale.
disjunctie - daca data di apare īn fragmentul Ri atunci nu este permis sa apara īn nici un alt fragment. De la aceasta regula se admite doar o exceptie, cazul cānd o relatie este fragmentata pe verticala.
Tipuri de fragmentare:
pe orizontala
pe verticala
combinata
Fragmentarea pe orizontala:
Ne putem imagina ca o tabela se fragmenteaza orizontal ca mai jos:
Un fragment al unei relatii partitionate pe orizontala consta dintr-o submultime a tuplelor relatiei respective.
Un fragment orizontal se produce prin selectie:
Fiecare tuplu din relatia R apare īntr-un anume fragment, o singura data. Daca se doreste reconstructia relatiei, se utilizeaza reuniunea pentru a obtine relatia R initiala.
R= R1 R2 . Rn
In general fragmentele unei relatii R sunt disjuncte.
Fragmentarea pe verticala
Un fragment vertical dintr-o relatie consta dintr-o relatie care are ca atribute o submultime a atributelor relatiei initiale.
Un fragment vertical se produce prin proiectie:
Daca S1 R si S2 R atunci si .
Completitudinea este asigurata prin faptul ca fiecare atribut apare cel putin īntr- una din submultimile S1 si S2.
Reconstructia relatiei initilale se realizeaza prin jonctiune naturala.
Asadar la descompunerea relatiei initiale īn fragmente trebuie sa se tina seama de regulile care asigura o descompunere fara pierderi la jonctiune.
In cazul descompunerii pe verticala nu este posibil sa se realizeze o disjunctie totala. Se admite existenta unor atribute comune, si anume a atributelor care formeaza cheile primare (respectiv cheile externe). Fragmentele verticale se stabilesc prin determinarea afinitatilor īntre atribute, īnca din faza de analiza.
Fragmentarea combinata (mixta, hibrida, compusa)
fragmente verticale fragmentate orizontal
Expresia corespunzatoare īn algebra relationala (pentru fiecare dreptunghi din figura de mai sus) este:
fragmente orizontale fragmentate vertical
Expresia corespunzatoare īn algebra relationala (pentru fiecare dreptunghi din figura de mai sus) este:
7.5. Transparenta īn SGBDD
Prima regula, considerata regula de baza in sistemele distribuite, este cerinta ca aspectul distribuit trebuie sa fie transparent pentru utilizator.
Cu alte cuvinte utilizatorul nu trebuie sa-si dea seama ca lucreaza cu o baza de date distribuita, deci nu trebuie sa aiba cunostinte in plus ca sa utilizeze resursele unei astfel de baze de date.
Īn realitate transparenta poate fi realizata doar īntr-o anumita masura. Tipuri de transparenta:
transparenta distribuirii
transparenta tranzactiilor
transparenta performantelor
7.5.1. Transparenta distribuirii
Daca se realizeaza transparenta distribuirii, utilizatorul percepe baza de date ca pe o entitate unitara din punct de veder logic.
Acest tip de transparenta se poate descompune īn doua aspecte: utilizatorul nu trebuie sa cunoasca faptul ca exista fragmentarea datelor (transparenta fragmentarii) sau utilizatorul nu stie de localizarea datelor pe retea (transparenta localizarii).
Transparenta fragmentarii este cel mai īnalt grad de transparenta. Utilizatorul se adreseaza cu interogari bazei de date ca si cānd ar fi localizata centralizat, deci nu trebuie sa se preocupe de existenta fragmentelor.
Transparenta fragmentarii este strāns legata de acordarea numelor (identificatorilor) īn cadrul bazei de date distribuite. si īntr-o baza de date distribuita (ca si īn cazul centralizat) numele diferitelor "obiecte" trebuie sa fie unic. Doua site-uri nu pot contine obiecte cu nume identice.
Sunt cateva solutii posibile:
Se poate crea un server central de nume care are menirea sa sigure ca numele date in aplicatii distribuite sunt nume unice pe toata baza de date. Aceasta abordare are dezavantajele ca se pierde autonomia locala a site-urilor, se poate ajunge la o suprasolicitarea serverului de nume (se creeaza un asa-numit loc ingust - "bottleneck") si disponibilitatea bazei de date este redusa (daca serverul de nume iese din uz temporar, se blocheaza accesul la date)
Alternativa la solutia de mai sus este sa se recurga la prefixarea obiectelor cu un identificator de site, de fragment, de copie.
Exemplu: prin notatia s1.client.f3.c2 se poate desemna copia a doua a fragmentului 3 a tabelei client care se afla pe site-ul s1.
Consecinta cea mai grava a acestui mod de a numi obiectele este pierderea completa a transparentei. In aceasta situatie mai exista un mod prin care se poate "indulci" situatia: se utilizeaza alias-uri. De exemplu s1.client.f3.c2 poate avea ca alias numele client_local pentru utilizatorii site-ului s1.
Transparenta localizarii reprezinta un nivel mediu de transparenta. In aceasta situatie utilizatorul stie cum este fragmentata baza de date dar nu stie unde sunt plasate diferitele fragmente sau copii ale acestora.
In interogari vor aparea numele fragmentelor dar nu se vor face referiri la localizare. O interogare poate avea un format asemanator cu cel de mai jos:
select A1,.An
from f1
where conditie1
union
select A1,.An
from f2
. . .
Avantajul major in cazul de mai sus consta in faptul ca se poate oricand reorganiza baza de date (ca locatii) fara ca aplicatiile ce o utilizeaza sa trebuiasca modificate.
Transparenta maparii locale reprezinta cel mai jos nivel al transparentei distribuite. Utilizatorul trebuie sa specifice si numele fragmentelor si localizarea datelor.
7.5.2. Transparenta tranzactiilor
Acest tip de transparenta asigura faptul ca toate tranzactiile distribuite pastreaza integritatea si consistenta BDD.
O tranzactie distribuita acceseaza date stocate la mai mult de o locatie īn retea. Fiecare tranzactie e divizata īn sub-tranzactii, cāte una pentru fiecare site accesat. Sub-tranzactiile se executa īn paralel pe site-uri si īn mod concurent pe fiecare site. SGBDD are sarcini deosebite īn legatura cu gestionarea tranzactiilor distribuite dar acestea nu vor fi tratate in acest capitol.
Īn cadrul transparentei tranzactiilor se trateaza īn mod deosebit transparenta concurentei si transparenta erorilor.
SGBDD ofera transparenta concurentei daca rezultatele tuturor tranzactiilor concurente (distribuite sau nu) sunt executate independent si sunt logic echivalente cu rezultatele obtinute īn cazul īn care tranzactiile sunt executate pe rānd, īntr-o ordine seriala arbitrara.
Transparenta erorilor necesita si un mecanism de recovery care ne sa asigure ca tranzactiile se comporta atomic īn fata erorilor: ori sunt executate toate operatiile unei tranzactii ori nici o operatie nu este executata. Odata ce o tranzactie s-a executat, transformarile operate de ea asupra bazei de date sunt durabile (permanente).
7.5.3. Transparenta performantelor
Transparenta performantelor se asigura prin cerinta ca sistemul considerat sa aiba performante comparabile cu ale unui sistem centralizat. Īn aceasta situatie trebuie ca SGBDD sa determine strategia cea mai eficienta de a executa fiecare interogare īn parte. Īn acest scop un DQP (Distributed Query Processor) mapeaza o cerere de date īntr-o secventa ordonata de operatii asupra bazei de date. DQP decide ce fragment se acceseaza, ce copie se utilizeaza, care locatie se utilizeaza. DQP produce o strategie de executie care este optimizata relativ la o functie de cost. Costul asociat cu o interogare distribuita include:
timp de acces (input/output) la accesarea datelor fizice pe suportul respectiv,
timp CPU la executatrea operatiilor asupra datelor in memoria principala,
costuri de comunicatii asociate cu transmiterea datelor prin retea.
Īntrebari recapitulative.
Ce este o baza de date distribuita?
Care sunt avantajele unui sistem distribuit?
Care este arhitectura unui sistem distribuit?
Ce diferente apar la proiectarea bazelor de date distribuite?
Cum se poate face proiectarea alocarii datelor?
Cum se face o fragmentare corecta?
Ce este fragmentarea?
Ce tipuri de transparenta trebuie sa realizeze un sistem distribuit?
Ce este transparenta distribuirii?
Ce este transparenta tranzactiilor?
Ce este transparenta performantelor?
Raspunsuri la īntrebari.
Un SGBDD consta dintr-o singura baza de date care este descompusa īn fragmente, eventual unele fragmente sunt multiplicate, si fiecare fragment sau copie se pastreaza pe unul sau mai multe site-uri, sub controlul unui SGBD local. Fiecare site este capabil sa proceseze interogari utilizator īn regim local, independent de restul retelei, sau este capabil sa participe la procesarea unor date situate īn alte site-uri din retea. Pentru a spune ca un SGBD este distribuit trebuie sa existe cle putin o cerere globala.
Avantajele distribuirii bazelor de date sunt:
sistemul distribuit se modeleaza cel mai bine pe structura organizationala a multor organizatii, avand īn vedere ca multe companii sunt localizate "distribuit" din punct de vedere geografic
datele sunt partajabile dar administrarea lor se bucura de un grad īnalt de autonomie locala
disponibilitatea bazei de date este evident mai buna decāt īn cazul centralizat. Daca se semnaleaza unele erori sau "aderi" de sistem la nivel local sistemul ]n īntregime poate sa continue sa functioneze īn conditii satisfacatoare
fiabilitatea sistemului este īmbunatatita. Se pot reface rapid fisiere distruse utilizānd replici aflate pe alte site-uri
performantele īn prelucrarea datelor se īmbunatatesc prin posibilitatea prelucr[rii īn paralel a unor interog[ri
un sistem distribuit ofera avanatje economice daca luam īn considerare costurile implementarii si īntretinerii unei retele fata de costurile corespunzatoare ale unui sistem centralizat de putere comparabila de prelucrare. Costuri scazute se mai obtin daca se realizeaza prelucrari locale cāt mai multe (īn caza sistemul si aplicatiile permit acest lucru). De asemenea este mult mai convenabil sa se "ajusteze" o retea de calculatoare la nevoile organiza'iei (daca de exemplu este necesara adaugarea unor site-uri īn plus) decāt un calculator central de putere asemanatoare
capacitatea de gestionare modulara a sistemului permite extensii ale acestuia sau rezolvarea unor "caderi" partiale fara sa se afecteze prea tare (uneori fara a se afecta deloc) mersul activitatilor pe ansamblul sistemului distribuit.
Schema externa
globala
3)
Schema de alocare
BD
Arhitectura ANSI-SPARC pe trei nivele
In cadrul unui SGBDD putem identifica urmatoarele componente:
o componenta locala SGBD (LSGBD)
o componenta de comunicatii de date (CD)
un dictionar de date global (DDG). Acest dictionar are aceeasi functionalitate ca si und dictionar de date īn cazul SGBD centralizat dar contine informatii suplimentare referitoare la fragmentare si la alocarea datelor. si DDG poate fi fragmentat si replicat ca orice alta informatie din baza de date distribuita
componente de SGBD distribuit (SGBDD).
4) Proiectarea corecta a unei baze de date relationale distribuite necesita, pe lānga cerintele cunoscute pentru sistemele centralizate, si realizarea urmatoarelor:
fragmentarea datelor - informatiile pot fi partitionate īn fragmente care sunt apoi stocate pe diferite site-uri īn retea
replicarea - se pot realiza copii ale diferitelor relatii sau ale fragmentelor
alocarea fragmentelor si a replicilor pe diferite site-uri
5) Se cunosc patru strategii de alocare a datelor īntr-o baza de date relationala distribuita:
a!. centralizat
Baza de date se afla īn īntregime pe un singur site din retea si este gestionata de un singur DBMS. Spunem īn acest caz ca baza de date este procesata distribuit, ea de fapt nu mai este o baza de date distribuita in adevaratul sens al cuvāntului. Dezavantajele sunt mai ales costurile mari de comunicatii si o fiabilitate si o disponibilitate foarte scazute, avānd īn vedere ca orice eroare care blocheaza accesul la baza de date, practic paralizeaza īntreaga activitate īn retea pe aceasta directie.
a2. fragmentat (partitionat)
Baza de date este partitionata īn mai multe fragmente disjuncte care sunt stocate pe diverse site-uri. Comentarii:
aceasta partitionare a datelor poate īmbunatati frecventa referintelor locale
daca nu exista replici ale fragmentelor, costurile de stocare sunt reduse
fiabilitatea si disponibilitatea sunt scazute dar nu asa de mici ca īn cazul centralizat
daca datele sunt distribuite corect, costurile de comunicare pot fi relativ scazute
a3. replicat complet
Pe fiecare site se gaseste o copie completa a bazei de date. Comentarii:
eficienta referirilor locale, fiabilitatea si disponibilitatea sunt maxime
costurile de stocare sunt īn schimb si ele foarte mari, la fel sunt si costurile de actualizare
a4. replicat selectiv
Aceasta strategie este o combinatie intre partitionare, replicare si centralizare cu scopul de a se cumula, pe cat posibil, avantajele fiecarei strategii si sa se elimine dezavantajele.
6) Reguli de baza care duc la o fragmentare corecta a bazei de date:
- completitudine - daca relatia R este descompusa īn fragmentele R1, R2, .,Rn, trebuie luate masuri care sa previna pierderea de informatii
- reconstructie - sa fie posibil īn orice moment sa se refaca relatia R de la care s-a pornit cu fragmentarea. Aceasta regula conserva dependentele functionale.
disjunctie - daca data di apare īn fragmentul Ri atunci nu este permis sa apara īn nici un alt fragment. De la aceasta regula se admite doar o exceptie, cazul cānd o relatie este fragmentata pe verticala.
7) Tipurile de fragmentare sunt:
pe orizontala
pe verticala
combinata
Fragmentarea pe orizontala:
Ne putem imagina ca o tabela se fragmenteaza orizontal ca mai jos:
Un fragment al unei relatii partitionate pe orizontala consta dintr-o submultime a tuplelor relatiei respective.
Un fragment orizontal se produce prin selectie:
Fiecare tuplu din relatia R apare īntr-un anume fragment, o singura data. Daca se doreste reconstructia relatiei, se utilizeaza reuniunea pentru a obtine relatia R initiala.
R= R1 R2 . Rn
In general fragmentele unei relatii R sunt disjuncte.
Fragmentarea pe verticala
Un fragment vertical dintr-o relatie consta dintr-o relatie care are ca atribute o submultime a atributelor relatiei initiale.
Un fragment vertical se produce prin proiectie:
Daca S1 R si S2 R atunci si .
Completitudinea este asigurata prin faptul ca fiecare atribut apare cel putin īntr- una din submultimile S1 si S2.
Reconstructia relatiei initilale se realizeaza prin jonctiune naturala.
Asadar la descompunerea relatiei initiale īn fragmente trebuie sa se tina seama de regulile care asigura o descompunere fara pierderi la jonctiune.
In cazul descompunerii pe verticala nu este posibil sa se realizeze o disjunctie totala. Se admite existenta unor atribute comune, si anume a atributelor care formeaza cheile primare (respectiv cheile externe).
Fragmentarea combinata (mixta, hibrida, compusa)
Se poate face din fragmente verticale fragmentate orizontal:
Expresia corespunzatoare īn algebra relationala (pentru fiecare dreptunghi din figura de mai sus) este:
Sau se poate face din fragmente orizontale fragmentate vertical
Expresia corespunzatoare īn algebra relationala (pentru fiecare dreptunghi din figura de mai sus) este: .
8) Tipuri de transparenta:
- transparenta distribuirii
- transparenta tranzactiilor
transparenta performantelor.
9) Transparenta distribuirii se poate explica astfel:
Daca se realizeaza transparenta distribuirii, utilizatorul percepe baza de date ca pe o entitate unitara din punct de veder logic.
Acest tip de transparenta se poate descompune īn doua aspecte: utilizatorul nu trebuie sa cunoasca faptul ca exista fragmentarea datelor (transparenta fragmentarii) sau utilizatorul nu stie de localizarea datelor pe retea (transparenta localizarii).
Transparenta fragmentarii este cel mai īnalt grad de transparenta. Utilizatorul se adreseaza cu interogari bazei de date ca si cānd ar fi localizata centralizat, deci nu trebuie sa se preocupe de existenta fragmentelor.
Transparenta fragmentarii este strāns legata de acordarea numelor (identificatorilor) īn cadrul bazei de date distribuite. si īntr-o baza de date distribuita (ca si īn cazul centralizat) numele diferitelor "obiecte" trebuie sa fie unic. Doua site-uri nu pot contine obiecte cu nume identice.
10) Transparenta tranzactiilor asigura faptul ca toate tranzactiile distribuite pastreaza integritatea si consistenta BDD.
O tranzactie distribuita acceseaza date stocate la mai mult de o locatie īn retea. Fiecare tranzactie e divizata īn sub-tranzactii, cāte una pentru fiecare site accesat. Sub-tranzactiile se executa īn paralel pe site-uri si īn mod concurent pe fiecare site. Īn cadrul transparentei tranzactiilor se trateaza īn mod deosebit transparenta concurentei si transparenta erorilor.
SGBDD ofera transparenta concurentei daca rezultatele tuturor tranzactiilor concurente (distribuite sau nu) sunt executate independent si sunt logic echivalente cu rezultatele obtinute īn cazul īn care tranzactiile sunt executate pe rānd, īntr-o ordine seriala arbitrara.
Transparenta erorilor īnseamna existenta unui mecanism de recovery care ne sa asigure ca tranzactiile se comporta atomic īn fata erorilor: ori sunt executate toate operatiile unei tranzactii ori nici o operatie nu este executata. Odata ce o tranzactie s-a executat, transformarile operate de ea asupra bazei de date sunt durabile .
11) Transparenta performantelor se asigura prin cerinta ca sistemul considerat sa aiba performante comparabile cu ale unui sistem centralizat. Īn aceasta situatie trebuie ca SGBDD sa determine strategia cea mai eficienta de a executa fiecare interogare īn parte. Īn acest scop un DQP (Distributed Query Processor) mapeaza o cerere de date īntr-o secventa ordonata de operatii asupra bazei de date. DQP decide ce fragment se acceseaza, ce copie se utilizeaza, care locatie se utilizeaza. DQP produce o strategie de executie care este optimizata relativ la o functie de cost.
|