Documente Academic
Documente Profesional
Documente Cultură
FRAGMENTAREA DATELOR
Trebuie să arătăm că fragmentarea are şi unele dezavantaje. Dacă o aplicaţie are mai multe
cereri conflictuale care împiedică descompunerea relaţiei în mai multe fragmente disjuncte
(reciproc exclusive). Atunci acea aplicaţie are nevoie de mai multe fragmente pentru a găsi data
ea trebuie să realizeze reuniunea sau unirea acelor fragmente care necesită timp. Aceste uniri
constitue o cercetare fundamentală a fragmentării. Un alt aspect este legăt de controlul semantic
al datelor care ne permit să verificăm condiţiile de integritate ale datelor. Decizia de a utiliza o
bază de date fragmentată este foarte importantă deoarece determină performanţa execuţiei unei
întrebări. Gradul de fragmentare variază între a nu fragmenta nimic sau a fragmenta pană la
nivel de tupluri (sau atribute) individuale în cazul fragmentării orizonatale sau la nivel de
atribute în cazul fragmentării verticale. Ele se definesc numai în raport cu aplicaţiile care se
execută asupra BD. Aplicaţiile sunt caracterizate de un număr de parametrii. În concordanţă cu
valorile acestor parametrii pot fi identificate în mod individual fragmentele.
Logica fragmentării
Alternative de alocare
Presupunem că baza de date este complet fragmentată şi trebuie să decidem asupra alocării
fragmentelor pe diverse siteuri din reţea. Când datele sunt alocate, ele pot fi replicate sau
menţinute într-o singură copie. Raţiunile pentru replicare sunt date de siguranţa în exploatare şi
eficienţa interogării, a întrebărilor de citire mai ales. Dacă există copii multiple de elemente de
date există şi o şansă mai mare ca o copie să fie accesibilă, chiar dacă sistemul are erori. În plus
numai întrebările de citire care accesează acelaşi element de date pot fi executate în paralel,
deoarece există copii pe mai multe staţii. Pe de altă parte, execuţia întrebărilor de actualizare
deranjează sistemul, deoarece toate copiile datelor trebuie toate actualizate. Prin urmare decizia
de replicare depinde de raportul dintre numărul de întrebări READONLY şi numărul de întrebări
de actualizare. Aceste decizii afectează aproape toţi algoritmii şi funcţiile de control ale unui
SGBD distribuit. O bază de date nereplicată (numită şi bază de date partiţionată conţine
fragmente ce sunt alocate pe staţii diferite şi există numai o copie a oricărui fragment pe o
singură staţie a reţelei). În cazul replicării, fie că baza de date există pe fiecare staţie (BD
complet replicată) sau copii de fragmente pot exista pe mai multe staţii (BD replicată parţial).
Cum vom vedea în continuare, numărul de copii ale fragmentelor poate fi o dată de intrare într-
un algoritm de alocare sau o variabilă de decizie a cărei valoare este determinată de algoritm. Un
aspect al proiectării distribuite este că, o mulţime de factori contribuie la proiectarea optimă.
Organizare logică a bazei de date, localizarea aplicaţiilor, caracteristicile de acces ale aplicaţiilor
la baza de date, şi proprietăţile sistemului de calcul pe fiecare staţie au o influenţă importantă
asupra deciziilor de distribuire. Informaţiile pentru partiţionare pot fi împărţite în patru categorii:
informaţii asupra bazei de date, asupra aplicaţiilor, asupra reţelei şi asupra sistemului de calcul.
Fragmentarea orizontală
Calificare C
Titlu, Salariu
Salariaţi S Proiecte
Funcţie
IdSalariat, IdProiect, OreLucrate, Sef
Relaţia din coada săgeţii este numită owner(sursă), iar cea din vârf member. Fie legătura L 1
din figura anteriară. Vom defini două funcţii owner şi member care specifică sursa şi destinaţia
legăturii.
Exemplul 1. Considerăm legătura L1 din figura anterioară. Funcţiile owner şi member au
următoarele valori:
Owner(L1) = C,
Member(L1)=S.
Informaţia cantitativă cerută despre baza de date este dată de cardinalitatea fiecărei relaţii r,
notată cu card(r). La proiectare aplicaţiile necesită ambele tipuri de informaţii cantitative şi
calitative. Informaţiile calitative orientează activitatea de fragmentare, în timp ce informaţiile
cantitative sunt cuprinse în modele de alocare. Informaţiile calitative fundamentale constau din
predicate utilizate în întrebările utilizatorilor. Dacă nu este posibil să ne imaginăm toate
predicatele utilizatorilor trebuie să investigăm pe cele mai importante dintre ele. Se sugerează
alegerea acelor întrebări ale utilizatorilor care au o frecvenţă de uilizare de cel puţin 20% şi
accesează în total cel puţin 80% din date. Din acest punct de vedere suntem interesaţi de
determinarea predicatelor simple. Fie relaţia r(A 1,A2,…,An), undeAi este un atribut cu domeniul
Di, 1≤i≤n. un predicat simplu p j definit pe r are forma : p j: Aiθd, unde dÎDi şi θ este un
comparator(<, ≤, =, >, ≥ ,¹) şi d o valoare aleasă din domeniul atributului Ai. Notăm cu pi
mulţimea tuturor predicatelor simple definite pentru relaţia ri.
Exemplu 2. Fie o instanţă a relaţiei proiect din figura anterioară. Denumire proiect=’producţie’
este un predicat simplu ca şi buget ≥20K
Totuşi întrebările utilizatorilor iunclud întrebări complexe care sunt combinaţii de predicate
simple. O combinaţie de predicate simple care ne interesează se numeşte predicat minterm care
este o cojuncţie de predicate simple, deoarece orice expresie booleană o putem transforma într-o
formă normală conjunctivă. Utilizarea predicatelor minterm în proiectarea algoritmilor nu
restrânge generalitatea. Fie o mulţime de predicate simple Pi={pi1,pi2,…,pin} pentru relaţia ri.
Mulţimea de predicate minterm00-= Mi={mi1,…,miq} este definită de
Mi={mij ; mij=Ùpik*| pik Îpi 1≤k≤m, 1≤j≤q} unde pik*=pik sau ┐pik.
Orice predicat simplu poate fi cuprins într-un predicat minterm fie în formă naturală, fie în
formă negată. Referinţa la negaţia unui predicat se referă numai la predicatele care conţin
operatorul de egalitate, adică de forma A=valoare. Pentru predicatele care conţin inegalitate,
negarea unui predicat simplu de forma A≤v este înlocuită cu predicatul A>v. În afară de
problemele teoretice, negarea complementului în mulţimi infinite, complementul poate fi dificil
de definit. De exemplu două predicate simple de forma
Margine_inferioară ≤ atribut1
Atribut1 ≤ margine_superioară, cu complementele lor
┐(Margine_inferioară ≤ atribut1)
┐(Atribut1 ≤ margine_superioară)
Cele două predicate simple pot fi scrise într-unul singur
margine_inferioară ≤ atribut1 ≤ margine_superioară, cu complementul
┐(Margine_inferioară ≤ atribut1 ≤ margine_superioară), care nu este uşor de definit.
Exemplul 3.Considerăm relaţia de calificare C pentru care dăm câteva predicate simple posibile:
p1 : Titlu=’analist’
p2 : Titlu=’progamator’
p3 : Titlu=’profesor’
p4 : Titlu=’inginer mec’
p5 : Titlu=’inginer calc’
p6 : Salariu≤60K
p7 : Salariu>60K
Dăm exemple de predicate minterm care pot fi definite pe baza acestor predicate simple.
m1: Titlu=’analist’ ÙSalariu≤6000
m2: Titlu=’analist’ ÙSalariu>6000
m3: Titlu=’programator’ ÙSalariu≤6000
m4: Titlu=’progamator’ÙSalariu>6000
m5: Titlu=’inginer mec’ÙSalariu≤4500
m6: Titlu=’ inginer mec’ÙSalariu>4500
unde Fj este o formulă de selecţie utilizată pentru a obţine fragmentul r ij. Dacă F este o formulă
normală conjunctivă atunci ea este un predicat minterm m ij. Algoritmii care sunt daţi sunt
pentru predicate minterme.
Exemplul 4. Descompunerea relaţiei proiecte în fragmentele Proiecte1 şi Proiecte2 din
exemplul 1.
Proiecte1=σBuget≤20(Proiecte)
Proiecte2=σBuget>20(Proiecte)
Aceste probleme pot fi rezolvare în practică prin limitarea domeniilor atributelor în
concordanţă cu cerinţele aplicaţiilor. Considerăm relaţia Proiecte
PR1=σLOC=BUC(Proiecte),
PR2=σLOC=CR(Proiecte),
PR3=σLOC=CJ(Proiecte).
Un fragment orizontal ri al relaţiei r constă din toate tuplurile din r care satisfac un predicat
minterm mi.Prin urmare fiind dată o mulţime M de predicate minterme, există o mulţime de
fragmente orizontale corespunzătoare predicatelor minterme. Această mulţime de fragmente
orizontale sunt numite în mod obişnuit fragmente minterme. Prin urmare primul pas al oricărei
fragmentări este să determinăm o mulţime de predicate simple cu anumite proprietăţi ca:
minimalitatea, şi completitudinea.
accmi accm j
card f i card f j
.
Exemplu 5: Mulţimea P de predicate este completă şi minimală, dar dacă se mai adaugă
Nume=”instrumentare” nu mai este minimală deoarece predicatul este nerelevant în raport cu P.
Nu există nici o aplicaţie care ar trebui să acceseze fragmentele rezultate în mod diferit. Vom
prezenta un algoritm care generează o mulţime completă şi minimală de predicate P’ dintr-o
mulţime simplă de predicate P. Acest algoritm se numeşte COMMIN.
Regula R1 este o regulă de completitudine şi minimalitate dacă o relaţie sau un
fragment este partiţionat în cel puţin două părţi care sunt accesate în mod diferit de cel
puţin de o aplicaţie.
Notăm cu fi ÎP’ un fragment definit în raport cu un predicat minterm definit de predicatele din P’.
În continuare dăm un algoritm care dintr-o mulţime de predicate simple determină o mulţime
completă şi minimală P’.
1. START [ ComMin ]
2. INPUT { r: relaţie, P o mulţime de predicate simple }
3. CALL relvar (P, r; pi, fj)
4. P’¬ {pi}
5. P¬P-{pi}
6. F¬{fi}
7. WHILE P’ nu e completă
7.1 CALL relvar (P, pk ;pj, fj)
7.2 P’¬P’È{pj}
7.3 P¬P-{pj}
7.4 F¬FÈ{fj}
7.5 IF $pkÎP’care nu e relevant
Then
.1. P’¬P’-{pk}
.2. F¬F-{fk}
7.6 CONTINUE
7. STOP
Procedura relvar determină un pjÎP astfel ca pj să partiţioneze un fragment fk determinat de
P în concordanţă cu regula R1. Algoritmul începe cu găsirea unui predicat care este relevant şi
care partiţionează relaţia de intrare. În ciclul while se adaugă predicate la această mulţime ce
păstreză minimalitatea la fiecare pas.
Al doilea pas în fragmentarea orizontală este obţinerea mulţimii de predicate minterm ce
pot fi definite de o mulţime de predicate P’. Aceste predicate minterm determină fragmentele
care sunt utilizate în pasul de alocare. Determinarea fiecărui predicat minterm este trivială,
n
dificultatea este că, mulţimea de predicate minterm este foarte mare (de ordin 2 , unde n este
numărul de predicate simple). În pasul următor vom determina modul de reducere al predicatelor
minterm ce sunt necesare în fragmentare. În al treilea pas se face eliminarea unui anumit
fragment ce poate fi nesemnificativ. Această eliminare este realizată prin identificarea acelor
mintermuri ce pot fi contradictorii cu o mulţime de implicaţii I dată.
De exemplu dacă P={p1,p2}, unde
p1: atr=v1
p2: atr=v2 şi dom(atr)-{v1,v2},
Evident că I conţine două implicaţii care sunt definite astfel:
i1: (atr=v1)Þù(atr=v2)
i2: ù (atr=v1)Þ(atr=v2).
i1 : p1 p2
i2 :p1 p2
i3 : p2 p1
i2 :p2 p1
În raport cu I predicatul minterm m1 este contradictoriu cu i1 şi m4 este contradictoriu cu
i2. Prin urmare M={m1,m2} În plus, i1 şi i4 reduce specificarea lui m1 la p1 şi similar m3 se reduce
la p2 datorită lui i2 şi i3.
r1 (Titlu Sal) r2(Titlu Sal)
ing. mec. 2700 Analist 4000
Programator 3800 ing. el. 3400
Există două fragmente definite în raport cu M.
Împreună i1 şi i4 reduc specificaţia lui m2 la p1 şi similar reducem m3 la p2 datorită lui i2 şi lui i3.
Prin urmare definim două fargmente F={S1,S2} în concordanţă cu M.
S1(Titlu Sal) S2(Titlu Sal)
Ing. mec. 2700 ing. electronist 3400
Programator 3800 Analist sistem 4000
Al doilea punct este cel mai important pentru BDD. Dacă în plus, avem de executat un număr
de întrebări de pe mai multe site-uri, vom putea executa orice întrebare în parallel, atunci timpul
de răspuns sau total al sistemului se micşorează. Considerăm unui graf de unire (al legăturilor)
dintre fragmente. Dacă există numai o legătură care intră sau iese dintr-un fragment atunci
graful se numeşte simplu. Avantajul proiectării unei relaţii de unire când graful este simplu este
că legătura poate fi alocată pe un site şi member şi owner-ul ei şi unirile dintre diferite
fragmente pot fi executate în paralel şi independent.
S1 S2
E1 E2