Sunteți pe pagina 1din 108

Baze de date distribuite

O baza de date distribuit (BDD) este o colecie logic corelat de date partajate, distribuite fizic pe o reea de calculatoare. Un sistem de gestiune al unei baze de date distribuite (SGBDD) este un sistem software care permite gestionarea BDD i face distribuirea transparent pentru utilizator. Sistemele de date distribuite sunt menite s rezolve problema "insulelor de informaii". Ele au aprut ca o necesitate, n special in cazul reelelor de calculatoare, pentru a sprijini gestionarea datelor n situaia cnd acestea se regsesc fizic n diferite puncte ale reelei.

Primele sisteme de baze de date distribuite au fost INGRES/STAR, versiune distribuit a lui INGRES, SQL*STAR versiune distribuit a lui ORACLE i R* versiune distribuita a lui DB2, MySQL.

Sistemul fizic (reeaua) care constituie suportul unei baze de date distribuite poate fi format din calculatoare personale, minicomputere, staii de lucru, etc. toate legate n reea i numite generic site-uri. Putem reformula definiia de la nceput spunnd ca un sistem de baze de date distribuite const dintr-o colecie de site-uri, fiecare putnd participa la executarea tranzaciilor care acceseaz datele de pe un site sau de pe mai multe site-uri.

Printre cerinele pe care trebuie s le asigure un sistem de baze de date distribuite menionm: autonomia locala n organizarea i prelucrarea datelor, neutilizarea unei centralizri a evidenei i a datelor, posibilitatea de lucru continuu al site-urilor independent de schimbrile in configuraiile de lucru (adugari sau eliminari de site-uri), independena localizrii i fragmentrii datelor (transparena fizic), posibilii de replicare (copiere) i independena copiilor, prelucrarea distribuit a cererilor, administrarea distribuit a tranzaciilor, independena de hardware, de sistemul de operare, de reea i de sistemul de gestiune a bazelor de date.

Un SGBDD const dintr-o singur baz de date care este descompus n fragmente, eventual unele fragmente sunt multiplicate, i fiecare fragment sau copie se pastreaz pe unul sau mai multe site-uri, sub controlul unui SGBD local. Fiecare site este capabil sa proceseze interogri utilizator n regim local, independent de restul reelei, sau este capabil s participe la procesarea unor date situate n alte site-uri din reea. Pentru a spune c un SGBD este distribuit trebuie s existe cel puin o cerere global.

Avantajele distribuirii bazelor de date: sistemul distribuit se modeleaz cel mai bine pe structura organizaional a multor organizaii, avand n vedere ca multe companii sunt localizate "distribuit" din punct de vedere geografic datele sunt partajabile dar administrarea lor se bucur de un grad nalt de autonomie local disponibilitatea bazei de date este evident mai bun dect n cazul centralizat. Dac se semnaleaz unele erori sau cderi" de sistem la nivel local sistemul ]n ntregime poate s continue s funcioneze n condiii satisfctoare ansamblul sistemului distribuit.

fiabilitatea sistemului este mbuntit. Se pot reface rapid fiiere distruse utiliznd replici aflate pe alte site-uri performanele n prelucrarea datelor se mbuntesc prin posibilitatea prelucr[rii n paralel a unor interog[ri un sistem distribuit ofer avanatje economice dac lum n considerare costurile implementrii i ntreinerii unei reele fa de costurile corespunztoare ale unui sistem centralizat de putere comparabil de prelucrare. Costuri scazute se mai obtin daca se realizeaza prelucrri locale ct mai multe (n caz sistemul i aplicaiile permit acest lucru). De asemenea este mult mai convenabil s se "ajusteze" o reea de calculatoare la nevoile organizaiei (dac[ de exemplu este necesar adugarea unor site-uri n plus) dect un calculator central de putere asemntoare capacitatea de gestionare modular a sistemului permite extensii ale acestuia sau rezolvarea unor "cderi" pariale fr s se afecteze prea tare (uneori fr a se afecta deloc) mersul activitilor 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 i de implementat un sistem distribuit costurile legate de un astfel de sistem sunt mult mai mari decat in cazul centralizat. Deja la nivelul proiectarii i implementarii sistemului este necesar mai mult timp i 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 i 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 i 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 i 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 i protocoalele de acces la date inca nu au standarde fixate i acceptate pe scara larga. Nu exista foarte multa experienta privind lucrul distribuit i proiectarea, gestionarea i 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 i de aici necesitatea rezolvarii unor probleme cum ar fi sincronizarea mesajelor, detectarea i corectarea unor perturbari, eliminarea unor inconsistente datorate redundantelor, etc.

In cadrul unui SGBDD putem identifica urmatoarele componente: o component local SGBD (LSGBD) o component de comunicaii de date (CD) un dicionar de date global (DDG). Acest dicionar are aceeai funcionalitate ca i und dicionar de date n cazul SGBD centralizat dar conine informaii suplimentare referitoare la fragmentare i la alocarea datelor. i DDG poate fi fragmentat i replicat ca orice alt informaie din baza de date distribuit componente de SGBD distribuit (SGBDD)

Proiectarea corect a unei baze de date relaionale distribuite necesit, pe lng cerinele cunoscute pentru sistemele centralizate, i realizarea urmtoarelor: fragmentarea datelor informaiile pot fi partitionate n fragmente care sunt apoi stocate pe diferite site-uri n reea replicarea se pot realiza copii ale diferitelor relaii sau ale fragmentelor alocarea fragmentelor i a replicilor pe diferite site-uri

Definirea fragmentelor i alocarea acestora pe site-uri au ca obiective: realizarea, pe cat posibil a accesului in regim de referinte locale. Acolo unde este necesar i unde permite aplicaia se recomanda utilizarea de copii ale fragmentelor obtinerea unei fiabilitati i 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 i a costurilor de stocare. Capacitatea i 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 crete costurile foarte mult (si riscul obtinerii inconsistentei) deoarece trebuie sa fie realizate asupra datelor de la toate site-urile.

SGBDD OMOGENE I ETEROGENE


O caracteristic important a SGBDD este omogenitatea sau eterogenitatea acestora. SGBDD este omogen atunci cnd toate SGBDD locale sunt de acelai fel. Un SGBDD eterogen implic existena a cel puin dou SGBDD locale diferite. Sistemele omogene sunt mai uor de proiectat i au unele avantaje, cum ar fi: adugarea de noi staii sistemului se poate face uor, se mrete performana exploatnd posibilitatea procesrii paralele pe mai multe staii. Sistemele eterogene rezult, de obicei, cnd staii individuale i implementeaz propriile BD, de abia mai trziu punndu-se problema integrrii lor ntr-un singur sistem. Comunicarea ntre SGBD-uri este esenial. Sistemele eterogene trebuie s asigure transparena SGBD, aceasta echivalnd cu faptul c un utilizator poate face cereri n limbajul SGBD local. Dup ce o cerere este fcut sistemul are sarcina localizrii datelor i a efecturii tuturor translaiilor necesare. Datele necesare satisfacerii cererii pot fi localizate la o staie care poate avea: hardware diferit; aplicaii diferite ale SGBD; i una i alta.

TRANSPARENE N CADRUL SGBDD


Un sistem distribuit poate oferi diferite nivele de transparen. n orice caz, toate aceste nivele au ca obiectiv centralizarea BDD (pentru utilizator). Se pot identifica patru tipuri de transparen n cazul sistemelor distribuite: transparena distribuiei; transparena tranzaciilor; transparena performanei; transparena SGBD

FRAGMENTAREA DATELOR
Din punct de vedere al modelului relaional, descompunerea unei relaii globale n fragmente poate fi realizat aplicnd dou tipuri de fragmentare: fragmentarea orizontal are ca rezultat relaii cu aceeai structur, coninnd o parte din tuplurile iniiale; fragmentarea vertical are ca rezultat relaii care au ca structur o parte din atributele iniiale;

Fig. 2. Fragmentare orizontal. Fig. 3. Fragmentare vertical.

Fig. 4. Fragmentare mixt.

Exist cteva reguli care trebuie respectate n definirea fragmentelor: Condiia de completitudine: ntreaga relaie global trebuie partajat n fragmente. Cu alte cuvinte, un articol care aparine relaiei globale care se fragmenteaz nu se poate s nu aparin nici unui fragment. Condiia de reconstrucie: n orice moment trebuie s fie posibil s reconstruim relaia global din fragmentele ei. Condiia de disjuncie: este util ca fragmentele s fie disjuncte pentru ca astfel replicarea datelor s poat fi controlat explicit la nivelul alocrii datelor.

REPLICAREA DATELOR
O baz de date este replicat dac exist mai multe copii ale acelorai informaii. Din punct de vedere al replicrii, o BD poate fi: nereplicat atunci cnd n sistem exist o singur copie asignat unui nod i care rezid numai pe acel nod. parial replicat atunci cnd exist informaii care sunt replicate i informaii care nu sunt replicate. complet replicat atunci cnd ntreaga BD este n ntregime replicat pe una sau mai multe staii.

ETAPELE PROIECTRII BDD


Stadiile care trebuiesc parcurse ar fi: proiectarea schemei globale; proiectarea schemei fizice; proiectarea fragmentrii; proiectarea alocrii.

PROIECTAREA FRAGMENTRII
Iat cteva motive pentru fragmentare: Utilizarea: n general, aplicaiile lucreaz doar cu anumite pri ale unor relaii. Eficien: datele vor fi memorate acolo unde sunt cele mai frecvent solicitate (dac anumite date nu sunt solicitate de aplicaiile locale ale unei staii atunci nu vor fi memorate pe acea staie). Paralelism: fragmentele fiind unitile distribuiei, o tranzacie va putea fi mprit n mai multe subtranzacii care s opereze pe fragmente. Securitate: date care nu sunt solicitate de aplicaii locale nu sunt memorate pe respectivele staii, accesul diferiilor utilizatori fiind astfel restrns. Exist i dezavantaje ale fragmentrii: Performana: va scdea performana aplicaiilor care solicit date de la mai multe fragmente memorate pe staii diferite. Integritatea: controlul integritii va deveni o problem complex n cazul n care un fragment va fi memorat pe mai multe staii.

Un fragment orizontal const dintr-un subset de tuple ale unei relaii globale, deci are aceeai structur ca aceea a relaiei globale din care provine. Tuplele care vor aparine aceluiai fragment sunt alese specificnd o condiie care va implica unul sau mai multe atribute ale relaiei. Aceste condiii vor fi numite predicatele fragmentrii sau calificri. Fragmentele orizontale vor fi rezultatele unor operaii de selecie folosind aceste codificri: FOi=Ci(R) unde este simbolul seleciei, iar ci este predicatul i.

Fragmentarea orizontal corect a unei relaii cere ca fiecare tuplu al relaiei globale s fie selectat n unul i numai unul din fragmente. Apare astfel necesitatea determinrii unui set complet de predicate disjunctive. Pentru a arta cum se realizeaz fragmentarea orizontal vom considera urmtoarea relaie: PERS (MARCA, NUME, SAL, FUNCT, NR_DEPT), reprezentat pe tupluri astfel:

Vom introduce urmtoarele definiii: Un predicat simplu este un predicat de tipul: Atribut = Valoare (FUNCT = P). Un predicat minterm Y pentru un set P de predicate simple este un predicat obinut prin conjuncia tuturor predicatelor din P, considerate n forma natural sau negat, astfel nct Y s nu fie contradicie: Y = pi* unde: (pi* = pi sau pi* = not pi i y fals). Un fragment este un set de tupluri selectate cu ajutorul unui predicat minterm. Un predicat simplu pi este relevant n raport cu un set de predicate simple P dac exist cel puin dou predicate minterm aparinnd lui P ale cror expresii difer numai n predicatul pi.

Referindu-ne la exemplul ales s presupunem c exist o serie de aplicaii care cer numai date referitoare la angajaii care sunt programatori. Dou predicate simple pentru acest exemplu sunt: NR_DEPT = 1 i FUNCT = P. Predicatele minterm ce pot fi construite pentru acest set de predicate sunt: NR_DEPT = 1 AND FUNCT = P NR_DEPT = 1 AND FUNCT NOT = P NR_DEPT NOT = 1 AND FUNCT = P i NR_DEPT NOT = 1 AND FUNCT NOT = P. Predicatele NR_DEPT=1 i FUNCT=P sunt relevante n raport cu setul de predicate minterm construit. Predicatul SAL>0 nu este relevant pentru predicatele minterm construite deoarece nu contribuie la fragmentare.

Fie P={P1, P2,..., Pn} un set de predicate simple. Pentru ca P s realizeze corect i eficient fragmentarea trebuie s fie complet i minimal: spunem c P este complet dac i numai dac oricare dou tupluri aparinnd aceluiai fragment sunt referite cu aceeai probabilitate de orice aplicaie; spunem c P este minimal dac toate predicatele sunt relevante.

Iat o metod care are ca rezultat o fragmentare orizontal corect i eficient: Pas1 fie p1 un predicat care partiioneaz tuplurile relaiei R n dou pri care sunt referite diferit de cel puin o aplicaie. Fie P={p1}; Pas2 considerm un nou predicat simplu pi care partiioneaz unul din fragmentele rezultate pn acum n dou pri care sunt referite diferit de cel puin o aplicaie. Fie P=P U {pi}; Pas3 eliminm predicatele din P care, prin adugarea lui pi, au devenit nerelevante; Pas4 dac P nu este complet se reia de la P2.

n anumite cazuri, fragmentarea orizontal a unei relaii nu se bazeaz pe proprietile atributelor relaiei respective, ci este derivat din fragmentarea orizontal a altei relaii, motiv pentru care se va numi fragmentare orizontal derivat. S considerm urmtoarele relaii globale: UTILAJ (CODUT, DENUT, LOC), EXPERIM (DATA, CODUT, CODEXP, CANTENERGIE).

Relaia EXPERIM trebuie partiionat astfel nct fiecare fragment s conin tuplurile referitoare la clienii dintr-o anumit localitate (vom presupune c sunt doar dou localiti implicate: CJ i BV). Dar LOC nu este un atribut al relaiei EXPERIM, ci al relaiei UTILAJ. n acest caz este necesar o operaie de semijonciune pentru a determina tuplurile din relaia EXPERIM care corespund clienilor dintr-o localitate dat.

Vom fragmenta orizontal relaia UTILAJ pe baza atributului LOC: UTILAJ1 = LOC=BV (UTILAJ) UTILAJ2 = LOC=CJ (UTILAJ) Fragmentarea orizontal derivat a relaiei EXPERIM poate fi definit astfel: EXPERIM1 = EXPERIM CODUT=CODUT UTILAJ1 EXPERIM2 = EXPERIM CODUT=CODUT UTILAJ2Vom fragmenta orizontal relaia UTILAJ pe baza atributului LOC: UTILAJ1 = LOC=BV (UTILAJ) UTILAJ2 = LOC=CJ (UTILAJ) Fragmentarea orizontal derivat a relaiei EXPERIM poate fi definit astfel: EXPERIM1 = EXPERIM CODUT=CODUT UTILAJ1 EXPERIM2 = EXPERIM CODUT=CODUT UTILAJ2

Considernd c n urma fragmentrii unei relaii R au rezultat fragmentele FOi, i=1,n, relaia poate fi reconstruit executnd operaia de reuniune a fragmentelor: R = FOi .

Fragmentarea vertical
Fragmentarea vertical a unei relaii R se realizeaz prin operaii de proiecie a relaiei pe seturi de atribute care sunt referite n acelai fel n cadrul aplicaiilor. Un fragment vertical const dintr-un subset de atribute ale unei relaii globale R i este obinut astfel: FVi = Li (R), unde Li este o list de atribute: a1, a2,..., am.

Condiia de corectitudine pentru fragmentarea vertical este ca fiecare atribut al relaiei R s aparin cel puin unui fragment. Pentru a permite reconstrucia relaiei originale este necesar existena unui atribut special care s permit jonciunea fragmentelor obinute: R = FV1 FV2 ... FVn.

Acest atribut special poate fi cheia relaiei, ns dat fiind faptul c aceast cheie nu este ntotdeauna simpl, de dimensiuni mici, este de preferat existena unui identificator de tuplu. Este foarte important ca acest atribut s nu fie vizibil pentru utilizatori. Dac utilizatorii au acces la identificatorul de tuplu, sistemul nu mai poate schimba adresa acestui identificator. Accesul utilizatorilor la adresele interne violeaz noiunea de independen a datelor. Obinerea fragmentelor verticale se poate face prin dou metode: partiionarea atributelor sau gruparea acestora.

Partiionarea atributelor
n acest caz fragmentele verticale obinute sunt aproape disjuncte, avnd n comun doar cheia relaiei. O metod de partiionare este stabilirea afinitii atributelor. Aceast metod produce fragmente verticale unde singurele atribute care se repet sunt cele ale cheii. Avnd n vedere c aceste atribute apar peste tot, le excludem din analiza urmtoare care va determina afinitatea.

Iat metoda care partiioneaz atributele unei relaii R: pentru fiecare aplicaie care acceseaz relaia R vom construi o matrice dup urmtorul exemplu: fie R (a1, a2, a3, a4, a5, CHEIA) fie o aplicaie care acceseaz CHEIA, a1, a2, a4 construim matricea triunghiular:

a1

a1 a2 a3 a4 a5

a2 1

a3 0 0

a4 1 1 0

a5 0 0 0 0

Matricea este triunghiular deoarece diagonala nu trebuie completat iar jumtatea de sub diagonal este imaginea n oglind a celeilalte jumti. 1 reprezint faptul c perechile de atribute corespunztoare sunt implicate n aceeai tranzacie. n toate matricile vom nlocui 1 cu frecvena fiecrei tranzacii corespunztoare. efectum suma tuturor matricilor, iar matricea sum o vom numi matricea de afinitate. stabilim fragmentele verticale innd cont de faptul c perechile cu afinitate mare n matricea de afinitate trebuie s apar n acelai fragment iar cele cu afinitate mic trebuie separate.

Gruparea atributelor
Prin grupare, atributele relaiei globale sunt succesiv agregate pentru a construi fragmente. Gruparea atributelor introduce replicarea n cadrul fragmentelor. n aceste condiii este important ca atributele replicate s fie rar sau deloc actualizate.

Revenind la relaia PERS definit mai sus s considerm c exist urmtoarele aplicaii: aplicaii administrative care necesit informaii referitoare la nume i salariu; aplicaii referitoare la structura fiecrui departament. Potrivit acestor dou tipuri de aplicaii vom grupa atributele n dou fragmente: PERS1 = (MARCA, NUME, SAL) PERS2 = (MARCA, NUME, FUNCT, NR_DEPT)

Dac am fi utilizat partiionarea trebuia s decidem n care din cele dou fragmente va rmne atributul NUME. ntruct atributul NUME este relativ stabil n acest caz este preferabil utilizarea gruprii deoarece partiionarea ar fi condus la necesitatea ca una dintre aplicaii s implice realizarea unei jonciuni i unei sau mai multor referiri la distan.

Fragmentarea mixt
Dac fragmentarea orizontal sau cea vertical se dovedesc a fi insuficiente se recurge la fragmentarea mixt care const n fragmentarea orizontal a unui fragment vertical sau fragmentarea vertical a unui fragment orizontal. Aceste operaii de fragmentare pot fi repetate recursiv, genernd arbori de fragmentare. n general, n practic este bine s avem cel mult dou nivele de fragmentare.

Pentru a exemplifica proiectarea fragmentrii s considerm urmtorul set de relaii globale: SCHEMA GLOBAL: PERS (MARC, NUME, SAL, MARCA_EF, NRDEPT); DEPT (NRDEPT, DEN, ARIA, MARCA_EF); UTILAJ (CODUT, DENUT, LOC); EXPERIM (DATA, CODUT, CODP, NRDEPT, CANTENERGIE).

S presupunem c departamentele pot fi grupate dup numrul lor n trei categorii iar clienii provin din dou localiti (CJ, BV). Rezultatul proiectrii fragmentrii l constituie schema fragmentrii a crei definiie o dm n cele ce urmeaz: schema fragmentrii unei BD este o definire a unui set de fragmente care s includ toate atributele i toate tuplele BD i care s permit reconstrucia ntregii BD aplicnd asupra fragmentelor o secven de operaii de reuniune i de jonciune. Este foarte avantajos dei nu necesar ca fragmentele s fie disjuncte cu excepia cheii primare, n cazul fragmentelor verticale sau mixte.

Iat SCHEMA FRAGMENTRII pentru relaiile considerate mai sus: PERS1 = NRDEPT 10 ( MARCA, NUME, MARCA_EF, NRDEPT (PERS)); PERS2 = 10 NRDEPT 20 ( MARCA, NUME, MARCA_EF, NRDEPT (PERS)); PERS3 = NRDEPT > 20 ( MARCA, NUME, MARCA_EF, NRDEPT (PERS)); PERS4 = MARCA, NUME, SAL, IMP (PERS); DEPT1 = NRDEPT 10 (DEPT); DEPT2 = 10 < NRDEPT 20 (DEPT); DEPT3 = NRDEPT > 10 (DEPT); UTILAJ1 = LOC = BV (UTILAJ); UTILAJ2 = LOC = CJ (UTILAJ); EXPERIM1 = EXPERIM CODUT=CODUT UTILAJ1; EXPERIM2 = EXPERIM CODUT=CODUT UTILAJ2;

PROIECTAREA ALOCRII
Dup definirea fragmentelor se pune problema alocrii lor la diferite staii ale reelei spre a fi memorate. n funcie de metodele utilizate, proiectarea alocrii poate avea ca rezultat o alocare final neredundant sau redundant. Cea mai simpl metod de alocare este ca ntreaga baz de date s fie memorat pe o singur staie, toate aplicaiile ce vor fi rulate de pe alte staii urmnd a accesa la distan baza de date. n consecin, procesarea local are foarte mult de suferit. La fel i disponibilitatea datelor, deoarece n caz c INSTITUIA unde este memorat BD sufer o cdere atunci nici o alt staie nu mai poate rula nici o aplicaie.

O alt metod care determin o alocare neredundant este metoda celei mai bune alegeri (1) care const n comensurarea fiecrei alocri posibile i alegerea staiei cu cea mai bun msur pentru fiecare fragment. Aceast metod elimin posibilitatea plasrii unui fragment la o anumit staie dac un fragment nrudit este deja alocat la INSTITUIA respectiv.

n cazul alocrii redundante replicarea datelor mrete complexitatea proiectrii deoarece: gradul de replicare al fiecrui fragment devine o variabil a problemei, realizarea acceselor de citire este complicat de faptul c aplicaiile trebuie s selecteze, din mai multe alternativ, staiile pentru a accesa fragmentele.

CERERI DISTRIBUITE
Un utilizator global interacioneaz cu o BDD de aceeai manier cu care ar interaciona cu o BD centralizat. El i exprim cererile sale (de la terminale online sau prin aplicaii) sub form de tranzacii globale. Pentru a nelege mai bine cum sistemul rspunde unei cereri distribuite dm n continuare urmtoarea schem:

Cererile care formeaz expresia canonic a cererii globale pot fi executate direct dar, n general, aceasta este o metod ineficient de a rspunde unei cereri. Din acest motiv expresia canonic trebuie modificat prin aplicarea succesiv a unor transformri echivalente. Avnd mai multe cereri echivalente se pune problema alegerii celei mai profitabile dintr-un punct de vedere, n general din punct de vedere al cantitii de date transferate prin reea, implicit al costului transferului acestor date.

Pentru exemplificare s considerm c relaiile PERS i DEPT sunt distribuite ca n Figura.: INSTITUIA 1: PERS:

5000 angajai * 65 bytes = 325000 bytes INSTITUIA 2: DEPT:

50 departamente * 45 bytes = 2250 bytes

Presupunem c relaiile nu sunt fragmentate. S considerm urmtoarea cerere: Pentru fiecare angajat s se gseasc numele su precum i al departamentului n care lucreaz. Utiliznd limbajul algebrei relaionale aceast cerere poate fi formulat astfel: NUME, DEN (PERS NRDEPT=NRDEPT DEPT) Rezultatul acestei cereri va avea 5000 de nregistrri lungi de cte 50 bytes fiecare (30+20).

Presupunnd c aceast cerere este formulat la INSTITUIA 3 putem adopta una din urmtoarele strategii: transferm relaiile PERS i DEPT la INSTITUIA 3; astfel vom transfera 325000 + 2250 = 327250 bytes; transferm PERS la INSTITUIA 2, executm cererea pe acea staie i transferm rezultatul la INSTITUIA 3; mrimea rezultatului fiind 5000*50=250000 rezult c, n total, transferm 325000+250000=575000 bytes; transferm relaia DEPT la INSTITUIA 1, executm cererea acolo i transferm rezultatul la INSTITUIA 3; n acest caz transferm 2250+250000=252250 bytes. Dac minimizarea transferului de date este criteriul de optimizare vom alege strategia 3.

Presupunnd c cererea a fost formulat la INSTITUIA 2 putem alege una din urmtoarele strategii: transferm PERS la INSTITUIA 2 i executm cererea acolo, total transfer = 325000 bytes; transferm DEPT la INSTITUIA 1, executm cererea acolo i ntoarcem rezultatul la INSTITUIA 2: total transfer = 2250+250000=252250 bytes.

O strategie mai complex, care uneori d rezultate mai bune folosete o operaie numit semijonciune. Vom discuta de spre semijonciune mai trziu.

TEHNICI DE REPREZENTARE A CERERILOR


Una din tehnicile cele mai utilizate pentru a reprezenta o expresie algebric relaional este reprezentarea arborescent. Arborele cererii este o reprezentare grafic a operaiilor i operanzilor care apar ntr-o expresie algebric. Relaiile sunt reprezentate n nodurile frunz iar operaiile n nodurile interne. n execuia cererii, un nod intern poate fi executat atunci cnd operanzii si sunt disponibili. Dup execuie, nodul este nlocuit cu rezultatul operaiei. Nodul rdcin este ultimul executat i este nlocuit cu rezultatul final.

Pentru exemplificare s considerm C1 cererea pentru codurile clienilor pentru care s-au livrat produse n cadrul departamentelor situate n zona de nord. C1: CODUT (ARIA=NORD (EXPERIM NRDEPT=NRDEPT DEPT)).

O alt ordine de execuie a operaiilor, ar fi: selecia aplicat relaiei DEPT, jonciunea i proiecia:

Aceast inversare n ordinea de execuie a nodurilor corespunde unei transformri echivalente.

EXPRESIA CANONIC A CERERII GLOBALE


Cererea global poate fi descompus n cereri fragment prin substituirea relaiilor globale cu expresiile de fragmentare corespunztoare, obinndu-se astfel expresia canonic a cererii globale. Reprezentarea arborescent a cererilor fragment se obine din reprezentarea arborescent a cererii globale substituind relaiilor globale expresiile corespunztoare schemei de fragmentare inversate. Astfel, nivelele arborelui expresiei canonice sunt fragmente i nu relaii globale.

CRITERII DE SIMPLIFICARE A CERERILOR DISTRIBUITE


Criteriile generale de simplificare a cererilor distribuite urmresc reducerea dimensiunii (cardinalitate) rezultatelor intermediare. n acest sens schimbarea ordinii de execuie a operaiilor joac un rol foarte important. Criteriul 1: Realizarea operaiilor de selecie i proiecie ct mai devreme posibil. Acest criteriu este util innd cont de faptul c att selecia ct i proiecia acioneaz ca reductori ai numrului de tuple dintr-o relaie. Aplicndu-le ct mai devreme reducem din timp cardinalitatea relaiilor implicate n cerere.

Calificrile sunt utile pentru a elimina fragmentele care nu sunt implicate n cerere. Atunci cnd se produce dup o selecie sau o jonciune calificarea va conine o conjuncie de predicate. Aceast calificare poate fi contradictorie (de exemplu: NRDEPT=15 AND NRDEPT 10). Relaiile care au calificri contradictorii sunt nule i trebuie eliminate.

Criteriul 2: Substituirea rezultatului seleciei cu relaia vid dac calificarea rezultatului este contradictorie. Criteriul 3. Utilizarea algebrei relaiilor calificate pentru a evalua calificarea operanzilor de jonciune. Substituirea subarborilor, incluznd jonciunea i operanzii si cu relaia vid dac calificarea rezultatului este contradictorie. Ultimele dou criterii sunt utile pentru a simplifica fragmentarea orizontal i jonciunea ntre fragmente orizontale.

SIMPLIFICAREA RELAIILOR FRAGMENTATE ORIZONTAL

Pentru simplificare vom mpinge selecia n jos n cadrul arborelui pentru a fi distribuit n raport cu uniunea. Calificarea rezultatului seleciei asupra fragmentelor DEPT2 i DEPT3 este contradictorie. Conform Criteriului 2 aceste rezultate vor fi substituite cu relaia vid. n final vom elimina operaia de uniune, aceasta avnd un singur operand diferit de relaia vid.

SIMPLIFICAREA RELAIILOR FRAGMENTATE VERTICAL


Simplificarea relaiilor fragmentate vertical este dual simplificrii relaiilor fragmentate orizontal. Raionamentul care st la baza acestei simplificri este de a determina un set de fragmente care s fie suficient pentru a rezolva cererea i de a elimina toate celelalte fragmente ca i jonciunile care nu sunt necesare.

Vom prezenta i acest tip de simplificare printr-un exemplu: fie cererea C3 pentru numele i salariul angajailor. Expresia algebric a cererii globale este: C3=NUME,SAL(PE RS)

Reamintim c relaia PERS este partiionat vertical n fragmentul PERS4 (care cuprinde informaii referitoare la salarizare) i n al doilea fragment care este partiionat mai departe orizontal, n funcie de numrul departamentului. Atributele NUME i SAL sunt atribute ale fragmentului PERS4. Este posibil, n consecin, s rspundem cererii utiliznd numai fragmentul PERS4. Arborele anterior va fi simplificat prin eliminarea celorlalte fragmente i a operatorului de jonciune.

S considerm jonciunea ntre dou relaii fragmentate orizontal R i S. Exist dou posibiliti distincte de a realiza jonciunea: prima presupune colectarea tuturor fragmentelor relaiei R, respectiv S, nainte de realizarea jonciunii; a doua const n realizarea jonciunii ntre fragmente i apoi colectarea tuturor rezultatelor ntr-o singur relaie rezultat; vom numi aceast metod jonciune distribuit. n general, prima metod este utilizat atunci cnd condiiile fragmentrii au un grad ridicat de selecie. A doua metod este preferat atunci cnd jonciunea implic mai multe perechi de fragmente.

Urmtorul criteriu permite transformarea unei cereri fr jonciune distribuit ntr-o cerere care s fie prelucrat cu ajutorul jonciunii distribuite. Criteriul 4: Pentru obinerea unei jonciuni distribuite, operaiile de uniune trebuie realizate dup jonciunile pe care dorim s le distribuim. Simplificarea jonciunii presupune aplicarea acestui ultim criteriu (pentru a distribui jonciunea), urmat de aplicarea criteriului 3 pentru a elimina jonciunea ntre fragmentele care nu au nici o contribuie la rezultatul final.

Fie cererea C4 pentru codul tuturor clienilor care au cel puin o livrare. Expresia algebric a cererii globale este: C4: CODUT (EXPERIM CODUT=CODUT UTILAJ) Arborele corespunztor formei canonice este:

Aplicnd criteriul 4 vom mpinge cele dou uniuni dup operaia de jonciune, genernd astfel patru jonciuni ntre fragmente. Aplicnd criteriul 3, constatnd c dou dintre rezultatele acestor jonciuni sunt vide (au calificrile contradictorii: UTILAJ1 EXPERIM2, UTILAJ2 EXPERIM1), arborele cererii se reduce la urmtorul:

PROGRAMUL DE SEMIJONCIUNE
Semijonciunea este o operaie a algebrei relaionale care are particulariti relevante n optimizarea cererilor distribuite. O operaie de jonciune poate fi transformat cu ajutorul unui program de semijonciune astfel: fie echijonciunea R A=B S, unde A i B sunt atribute sau seturi de atribute ale relaiei R, respectiv S; programul de semijonciune este: S A=B (R A=B (B (S))), unde R A=B S = Atr(R) (R A=B S).

Pentru a nelege intuitiv utilitatea acestui program s presupunem c R i S sunt situate pe staii diferite. Executarea programului de semijonciune presupune proiecia relaiei S dup atributul B i trimiterea rezultatului la INSTITUIA unde se afl R; aici se va realiza semijonciunea iar rezultatul va fi trimis la INSTITUIA de origine a lui S, unde se va realiza i jonciunea final. Astfel, numai un subset de tupluri din R va supravieui operaiei de semijonciune, i anume numai acelea care vor contribui la rezultatul final al jonciunii.

Aplicaiile bazelor de date necesit uneori operaii de acces care nu pot fi exprimate direct n limbajul algebrei relaionale. Limbajele de interogare pentru BD relaionale permit formularea unor astfel de cereri complexe care necesit gruparea tuplurilor n subseturi disjuncte care pot fi evaluate utiliznd funcii de agregare. n aceast seciune vom prezenta tehnici de prelucrare eficient a acestor cereri n cadrul BD distribuite.

GRUPAREA DISTRIBUIT I EVALUAREA FUNCIILOR DE AGREGARE

Iat trei exemple de cereri care nu pot fi exprimate direct utiliznd algebra relaional: media CANTENERGIEitilor livrate pentru produsul cu codul C1 partiionarea relaiei EXPERIM n grupuri care au acelai CODUT i CODP evalund pentru fiecare grup suma CANTENERGIEitilor livrate; aceeai cerere ca cea de mai sus ns n relaia rezultat s nu se pstreze dect acele nregistrri pentru care suma CANTENERGIEitilor s fie mai mare dect o sum dat (500 de exemplu).

Este evident faptul c trebuie s extindem algebra relaional cu noi operaii. Vom introduce operaia de grupare GBG,FA(R) definit astfel: G reprezint mulimea atributelor care determin gruparea; FA sunt funcii agregate care urmeaz a fi evaluate; GBG,FA(R) este o relaie cu urmtoarele caracteristici: schema relaional este format din atributele G i funciile agregate FA; numrul de tupluri este egal cu numrul de grupuri al relaiei R; atributele mulimii G iau valorile de grupare iar elementele mulimii FA primesc valorile funciilor agregate evaluate pentru fiecare grup.

Cu ajutorul operaiei de grupare putem formula cererile descrise anterior: C5 GBAVG(CANTENERGIE) (CODP=C1 (EXPERIM)); C6 GBCODUT,CODP,SUM(CANTENERGIE) (EXPERIM); C7 SUM(CANTENERGIE)>500 (GBCODUT,CODP,SUM(CANTENERGIE) (EXPERIM)).

Aceast operaie de grupare este distributiv n raport cu uniunea n anumite condiii: GBG,FA (R1 U R2) = (GBG,FA (R1)) U (GBG,FA (R2)) dac i numai dac fiecare grup aparine n ntregime unui fragment adic: i (Gi R1) (Gi R1 = ) Aceast distributivitate permite reducerea cardinalitii relaiilor care fac obiectul operaiei de uniune.

Putem enuna un nou criteriu de simplificare a cererilor distribuite: Criteriul 5: Pentru distribuirea gruprii i evaluarea funciilor agregate, operaiile de uniune trebuie realizate dup operaiile de grupare. Acest criteriu poate fi aplicat cu succes n cazul cererilor C6 i C7.

Tuplurile relaiei EXPERIM trebuie grupate dup valorile pentru CODUT i CODP. Relaia EXPERIM este fragmentat orizontal dup localitatea clienilor pentru care se efectueaz prelucrarile. Deci clienii cu acelai cod aparin aceluiai fragment. Este ndeplinit condiia necesar i suficient pentru a putea aplica Criteriul 5. Aplicnd apoi criteriul 1 vom distribui selecia n raport cu uniunea. Arborele rezultat este prezentat

n cazul cererilor care nu ndeplinesc condiia necesar i suficient criteriul 5 nu poate fi aplicat. n aceast situaie vom utiliza un calcul distribuit al funciilor de agregare. Pentru o funcie de agregare F se realizeaz un calcul distribuit dac pentru orice set S i orice descompunere a lui S n subseturi S1, S2,..., Sn putem determina un set de funcii agregate F1,...,Fm i o expresie E(F1,...,Fm) astfel nct F(S) = E(F1(S1),..., F1(Sn), F2(S1),..., F2(Sn),...,Fm(Sn)).

Calculul distribuit al funciilor agregate reprezint o proprietate important deoarece rezultatele pariale ale evalurii funciilor F1(S1),..., Fm(Sn) pot fi transmise la o staie comun, unde expresia E poate fi evaluat, n loc s transmitem toate datele la o singur staie unde s fie evaluate i funciile agregate. Aceast proprietate poate fi aplicat n cazul cererii C5 care nu ndeplinete condiia necesar i suficient deoarece produsul cu codul C1 poate s apar n ambele fragmente ale relaiei EXPERIM. Forma canonic a cererii C5 este:

Pentru a simplifica cererea vom genera dou subcereri care opereaz asupra fragmentelor EXPERIM1 i EXPERIM2: GBSUM(CANTENERGIE),COUNT (CODP=C1 (EXPERIM2)) GBSUM(CANTENERGIE),COUNT (CODP=C1 (EXPERIM1)). Fie S1 i T1 valorile returnate de evaluarea funciilor SUM(CANTENERGIE) i COUNT pentru fragmentul EXPERIM1, iar S2 i T2 valorile corespunztoare pentru fragmentul EXPERIM2. Media CANTENERGIEitilor va fi dat de (S1+S2)/(T1+T2). Arborele calcului distribuit pentru cererea C5 este prezentat

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