Sunteți pe pagina 1din 6

CAPITOLUL III

PROIECTAREA BAZELOR DE DATE DISTRIBUITE

Principiile proiectării bazelor de date discutate în anul II (normalizare,


descompunere etc.) se aplică deasemenea şi la bazele de date distribuite. În acest
paragraf ne vom concentra aupra cercetărilor de proiectare ce sunt specifice BDD.
Considerăm o relaţie ce urmează a fi memoratăaîntr-o BD. Există mai multe
probleme în memorarea relaţiei în BDD ca:
Replicarea. Sistemul menţine mai multe replici (copii) ale relaţiei. Fiecare
replică este memorată pe un sit diferit, care resultă din replicarea datelor. O
alternativă la replicare este să memoreze numai o copie a relaţiei r.
Fragmentarea. Relaţia este partiţionată în mai multe fragmente. Fiecare
fragment este memorat într-un sit.
Replicare şi fragmentare. Această este o combinaţie a celor două noţiuni de
mai sus.

Replicarea datelor

Dacă relaţia r este replicată, o copie a relaţiei r este memorată în două sau
mai multe situri. În cazuri extreme avem o replicare completă în care o copie este
memorată în fiecare sit din sistem. Există un număr de avantaje şi dezavantaje ale
replicării.
Disponibilitatea. Dacă un sit are o pană (se defectează) atunci relaţia poate
fi gaşită pe alt sit. Astfel sistemul poate continua procesul de interogare ce implică
relaţia r în ciuda erorii de pe sit.
Paralelism crescut. în cazul când majoritatea accesărilor la relaţia r se
reduc numai la citiri ale relaţiei, mai multe situri pot prelucra întrebări în paralel.
Când există mai multe replici ale lui r atunci există o sansă mai mare ca datele
necesare executării unei tranzancţii să fie în acelaşi sit, în care se execută tranzacţia.
Prin urmare replicarea datelor minimizează mişcarea între situri.
Cresc cheltuielile cu actualizarea. Sistemul trebuie să aşigure că toate
replicile relaţiei r sunt consistente în acest caz calculele pot fi enorme.Astfel când
r este actualizată, actualizarea trebuie să fie propagată pe toate siturile care conţin
replica şi astfel cresc cheltuielile de actualizare. De exemplu într-un sistem de
bănci, unde informaţiile dintr-un cont sunt replicate pe diverse situri, este necesar
să modificăm conturile în toate siturile. în general, replicarea aşigură performanţa
operaţiilor de citire şi creşterea disponibilităţilor datelor la tranzacţiile de citire.
Totuşi, tranzacţiile de actualizare comportă mari cheltuieli. Problema controlului
actualizării tranzacţiilor concurente a mai multor de date replicate este mult mai
complexă decât abordarea centralizată a controlului concurenţei. Vom putea
simplifica gestiunea replicilor lui r prin alegerea uneia drept “copie primară” a lui
r. De exemplul, într-un sistem bancar un cont poate fi asociat unui sit în care contul
a fost deschis. Similar într-un sistem de rezervare, zborul poate fi asociat cu situl
din care se zboară iniţial.

Fragmentarea datelor
Dacă relaţia r este fragmentată, adică este divizată într-un număr de
fragmente r ,r ,…rp. Aceste fragmente trebuie să conţină informaţii suficiente astfel
încât să reconstruim relaţia iniţială r. Reconstruirea relaţiei r se face fie aplicând
reuniunea fie aplicând unirea (join) pentru diverse fragmente ale relaţiei. Există
două scheme diferite pentru fragmentarea unei relaţii:
- fragmentarea orizontală ,
- fragmentarea verticală,
- fragmentarea mixtă.
Fragmentarea orizontală descompune relaţia r prin atribuirea fiecărui tuplu al
relaţiei r la unul sau mai multe fragmente. Fragmentarea verticală descompune
relaţia r prin împărţirea schemei de relaţie R a lui r. Aceste două scheme pot fi
aplicate succesiv la aceeaşi relaţie, rezultând un număr de fragmente diferite.
Remarcăm ca aceleaşi informaţii pot să apară în mai multe fragmente. Vom discuta
diverse moduri de fragmentare a relaţiei r. Vom ilustra acest ncaz considerând un
depozit de bani la o bancă care are schema :

D=(Nume_Sucursală, Nr_Cont, Nume_Client, Sold)

Relaţia depozit(D) este:


Nume_Sucursală Nr_Cont Nume_Client Sold
Craiova 305 Albu Mihai 500
Craiova 226 Albu Mihai 330
Iaşi 177 Rosu Dorin 205
Iaşi 402 Negru Mircea 1000
Craiova 155 Costin Dan 75
Iaşi 200 Costin Dan 1200
Iaşi 639 Negru Mircea 750
Figura 1. Exemplu de relaţie de depozit.

Un fragment poate fi definit ca o selecţie si/sau proiecţie dintr-o relaţie


globală r. Adică se utilizează în construcţia fragmentului r un predicat P şi
r = P (r) .
Reconstrucţia relaţiei r poate fi obţinută prin reuniunea tuturor fragmentelor
fragmentelor r=r r …r .
Să ilustrăm aceasta, presupunând că relaţia r este relaţia depozit din figura 1.
Aceasta relaţie poate fi impărţită în fragmente diferite, unde fiecare conţine
conturi numai dintr-o sucursala. Dacă sistemul bancar are numai două sucursale:
Iaşi şi Craiova atunci există două componente diferite:
depozit1=  Nume_Sucursală=Iasi= (depozit),
depozit2=  Nume_Sucursală=Craiova (depozit).
In exemplul nostru fragmentele sunt disjuncte. Prin schimbarea predicatului de
selecţie s-ar putea că un tuplu particular a lui r să apară în mai mult de un fragment
r a lui r. Această formă de replicare o vom discuta mai jos.

Fragmentarea verticală

In forma cea mai simplă fragmentarea verticală este aceeaşi cu


descompunerea. Fragmentarea verticală a relaţiei r(R) implică definiţia mai multor
submulţimi ;
R , R ,…,R ale schemei R astfel ca
R= R  R … R
Fiecare fragment ri a lui r este definit prin:

r= (r ) i=1,2,….,n.

Relaţia r poate fi construită din fragmente luând unirea naturală

r=r r …. r

In plus, fragmentarea verticală poate fi însoţită de adăugare de atribute


speciale numite “identificatori_de_tupluri” la schema R. Un identificator_de_tuplu
(ID) este o adresă fizică sau logică. Deoarece fiecare tuplu a lui R trebuie să aibă o
adresa unică, atributul ID este o cheie pentru schemă de relaţie marită.
Exercitiu. Scrieţi relaţia r obţinută din r prin adăugarea ID la schema R. În
figura 2 am arătat o descompunere a relaţiei depozit la care am adăugat atributul ID
şi din care au rezultat schemele de relaţie:

R3=(Nume_sucursala, Nume_Client, ID)


R4=(Nr_Cont, Sold, ID).

Relaţiile depozit3 şi depozit4 rezultă din evaluarea expresiilor:

depozit3=R3(depozit)
depozit4= R4(depozit)

Exerciţiu. Scrieti relaţiile depozit3 şi depozit4 obtinute prin fragmentarea pe


verticala. Se observa ca:

depozit5=depozit3 depozit4

este o forma specială de unire. Atributul de unire este ID. Deoarece valoarea
atributului ID reprezintă adresa relativă, este posibil sa împerechem un tuplu al
relaţiei depozit3 cu tuplul al relaţiei depozit4. Aceste adrese permit regăsirea
tuplului fără indexare. Astfel aceasta unire este calculată mult mai uşor şi mai
eficient decât unirea naturală. Prin urmare, atributul ID facilitează implementarea
unei partiţionări verticale şi ceea ce este important este că, acest atribut nu este
vizibil utilizatorilor. Dacă accesul la tupluri este dat de ID atunci este imposibil ca
sistemul să schimbe adresele tuplurilor. Astfel, accesibilitatea adreselor interne
violează noţiunea de independenţă a datelor, una din virtuţile principale ale
modelui relaţional.

Nume_ Nume_ ID Nr_Cont Sold ID


Sucursala Client
Craiova Albu Mihai 1 305 500 1
Craiova Roşu Dorin 2 226 330 2
Iaşi Roşu Dorin 3 177 205 3
Iaşi Negru Mircea 4 402 1000 4
Craiova Costin Dan 5 155 75 5
Iaşi Costin Dan 6 200 1200 6
Craiova Negru Mircea 7 639 400 7
depozit3 depozit4
Figura2. Fragmentarea verticală a relaţiei depozit.
Replicarea şi fragmentarea datelor

Tehnicile descrise mai sus pentru replicarea şi fragmentarea datelor pot fi


aplicate succesiv la aceiaşi relaţie. Adică, un fragment poate fi replicat succesiv, şi
apoi replicile fragmentelor pot fi din nou fragmentate şi aşa mai departe. De
exemplu, să considerăm un sistem distributiv constând din siturile S ,S ,…,S .
Vom putea fragmenta depozit în depozit3a şi depozit3b şi depozit4 şi vom memora
o copie a lui depozit3a pe siturile S , S şi S , o copie a depozit3b pe siturile S şi S
, şi o copie a lui depozit4 pe siturile S , S şi S .

Transparenţă şi autonomie

O relaţie poate fi memorată într-o BDD în diverse moduri. Ceea ce este


important este că sistemul minimizează gradul în care un utilizator ar trebui să
cunoască cum se memorează o relaţie. Cu alte cuvinte sistemul “ascunde detaliile
de implementare pentru utilizator. Sistemul poate ascunde detaliile de distribuţie a
datelor în reţea. Vom numi aceasta transparenţa reţelei. Transparenţa reţelei este
legată într-un anumit sens de autonomia locală. Autonomia locală este gradul în
care un proiectant sau un administrator al unui sit poate fi independent de ceea ce
rămane din sistemul distribuit. Vom cerceta transparenţa şi autonomia legată de:
- Numirea elementelor de date,
- Replicarea elementelor de date,
- Fragmentarea elementelor de date,
- Localizarea fragmentelor şi replicilor,
- Independenţa datelor,
- Transparenţa reţelei

Numire şi autonomie locală

Orice element de dată dintr-o BD trebuie să aibă un nume unic. Această


proprietate este uşor de asigurat într-o BD nedistribuită. Trebuie să ne asigurăm
într-o BDD că două situri nu utilizează acelaşi nume pentru elemente de date
distincte. O soluţie la această problemă esta să cerem ca toate numele să fie
înregistrate într-un server central. Aceasta abordare are următoarele dezavantaje:
- Numele serverului poate duce la ştrangulare
- Dacă serverul se defectează este posibil ca orice sit dintr-un sistem distribuit
să nu conţinue execuţia
- Există o autonomie locală minimă deoarece numirea este controlată central

S-ar putea să vă placă și