Bază de date distribuită
O bază de date distribuită este o bază de date controlată de un sistem de gestiune a bazelor de date (Data Base Management System, DBMS), în care dispozitivele de stocare a datelor sunt atașate în mod distribuit la mai multe calculatoare. Aceste calculatoare pot ori să se afle fizic în aceeași locație (sală, clădire etc.), ori să fie dipersate într-o rețea de calculatoare interconectate.
Porțiunea unei baze de date distribuite atașată la unul singur dintre calculatoarele involvate este numită partiție sau fragment. Fiecare partiție a unei baze de date distribuite se poate replica (duplica) identic într-o altă locație, deci în alt calculator din rețea, cu scopul măririi siguranței în funcționare (fiabilității). Pe baza acestei structuri redundante, eventualele greșeli/defecte în funcționare se pot de multe ori repara "în zbor", deci fără întreruperea funcționării, similar într-o oarecare măsură cu principiul matricilor cu discuri hard multiple de tip RAID.
În afară de fragmentare și replicare, pentru bazele de date distribuite există multe alte modele. Așa de exemplu autonomia locală, de asemenea tehnologiile sincrone și asincrone.
Alegerea unei anumite baze de date distribuite și implementarea ei concretă depind de:
- nevoile întreprinderii,
- confidențialitatea care trebuie garantată datelor din baza de date,
- gradul necesar de securitate, consistență și integritate a datelor,
- precum și de suma pe care compania este dispusă să o investească.
Arhitectura de bază
[modificare | modificare sursă]Un server de baze de date este software-ul care administrează baza de date; un client de baze de date este o aplicație care cere servicii de la server, de exemplu transmite date la, sau cere date de la baza de date. De obicei pentru un server și baza de date corespunzătoare există concomitent mai mulți clienți. Fiecare calculator din rețeaua de calculatoare a bazei de date distribuite se numește un nod. Un nod al sistemului unei baze de date distribuite se poate comporta drept server, drept client, sau chiar drept ambele, în funcție de situație.
Un tip important de baze de date distribuite sunt bazele de date distribuite relationale, conduse de un Relational Data Base Management System (RDBMS). În cadrul acestor baze de date avem:
- Fragmente orizontale -
- subseturi de tuple (rânduri) dintr-o relație (tabel).
- Fragmente verticale -
- subseturi de atribute (coloane) dintr-o relație (tabel).
- Fragmente mixte -
- un fragment care este fragmentat atât orizontal, cât și vertical.
- Bază de date ditribuită omogenă -
- folosește un SGBD (exemplu: Oracle).
- Bază de date distribuită eterogenă -
- folosește mai multe SGBD (exemple: Oracle ; MySql; PostgreSQL).
Utilizatorii accesează baza de date distribuită prin:
- Aplicații locale (aplicații care nu necesită date de pe alte situri), sau
- Aplicații globale (aplicații care au nevoie de date de pe alte situri).
Considerații importante
[modificare | modificare sursă]Administrarea internă a bazelor de date distribuite este pretențioasă și în general dificilă, deoarece trebuie asigurat că:
- Distribuția este transparentă (invizibilă și nederanjantă) – utilizatorii trebuie să poată să interacționeze cu sistemul ca și când ar fi vorba un sistem nedistribuit (monolitic);
- Tranzacțiile trebuie să aibă și ele o structură transparentă (invizibilă și nederanjantă). Fiecare tranzacție în parte trebuie desigur să mențină integritatea bazei de date, în ciuda multitudinii de partiții. Pentru aceasta ele se divizează de obicei în subtranzacții, fiecare din acestea prelucrând doar o singură partiție.
Avantajele bazelor de date distribuite
[modificare | modificare sursă]- Pot reflecta structura organizațională a companiei – partițiile pot fi plasate direct în secțiile de care aparțin.
- Autonomie locală – fiecare secție își poate controla mai îndeaproape propriile ei date.
- Disponibilitate îmbunătățită – o greșeală într-o bază de date distribuită va afecta de cele mai multe ori o singură partiție, și nu toată baza de date. Celelalte partiții rămân disponibile pentru prelucrare.
- Performanță îmbunătățită – datele pot fi amplasate lângă situl cu cererea cea mai mare, iar partițiile însele sunt paralelizate, permițând astfel ca solicitarea bazei de date să se echilibreze dinamic între serverele disponibile (o solicitare intensă într-o partiție a bazei de date distribuite nu va afecta alte partiții).
- Economie – costă mai puțin să se creeze o rețea de computere mai mici, dar cu puterea totală a unui singur computer mare.
- Modularitate – subsistemele unei baze de date distribuite pot fi modificate, adăugate sau deconectate dinamic, fără să se afecteze alți clienți sau partiții.
Dezavantaje ale bazelor de date distribuite
[modificare | modificare sursă]- Complexitatea – trebuie depusă muncă suplimentară de către administratorii bazelor de date pentru se a asigura că natura distribuită a sistemului este transparentă (invizibilă pentru utilizator). Muncă suplimentară trebuie de asemenea depusă și pentru a întreține multiple sisteme disparate. Proiectarea unei baze de date distribuite trebuie să țină cont și de natura ei disconectă – de exemplu, operația join (reunirea a două tabele ale unui RDBMS) devine deosebit de laborioasă când trebuie efectuată pe baza mai multor partiții disparate.
- Profitabilitatea redusă – complexitatea mai mare și infrastructurile mai ample duc la costuri suplimentare pentru realizare și implementare.
- Securitatea – toate partițiile bazei de date trebuiesc securizate, dar deoarece acestea nu sunt centralizate, trebuiesc securizate și toate siturile implicate, la orice distanțe s-ar afla ele. Drept urmare, și infrastructura trebuie securizată (de ex. prin codificarea tuturor transmisiilor între siturile rețelei).
- Dificultatea de a menține integritatea – dacă baza de date este concepută greșit, atunci asigurarea integrității poate suprasolicita și chiar bloca rețeaua dintre noduri.
- Lipsa de experiență – câmpul de activitate fiind dificil, nu există documentație suficientă despre experiența acumulată în diverse proiecte concrete.