Sunteți pe pagina 1din 19

Contents

1. Ce este o bază de date distribuită?..................................................................3


2. Care sunt elementele care caracterizează sistemele distribuite și la care fac
referire în general definițiile?...............................................................................3
3. Ce este un SGBDD?...........................................................................................3
4. Ce se înțelege prin fragmentarea bazelor de date și de câte tipuri este
aceasta?................................................................................................................3
5. Care sunt argumentele în favoarea fragmentării?...........................................4
6. Ce reguli stau la baza fragmentării?.................................................................4
7. Descrieți fragmentarea orizontală. Exemplificați.............................................5
8. Ce sunt predicatele minterm?..........................................................................5
9. Descrieți fragmentarea verticală. Exemplificați...............................................5
10. Descrieți fragmentarea mixtă. Exemplificați..................................................6
11. Ce este fragmentarea derivată.......................................................................6
12. Când se utilizează relațiile nefragmentate?...................................................6
13. Ce este replicarea?.........................................................................................6
14. Care sunt nivelele de replicare pe care le cunoașteți? Sisteme de baze de
date distribuite.....................................................................................................7
15. Ce este alocarea și ce metode de alocare cunoașteți?..................................7
16. Desenați și descrieți arhitectura de referință a sistemelor distribuite..........7
17. Enumerați principiile lui Date referitoare la sistemele distribuite.................8
18. Care sunt etapele de procesare a cererilor într-un sistem distribuit?...........8
19. Dați exemple de protocoale de gestiune a accesului concurent într-un
mediu distribuit....................................................................................................9
20. Care sunt avantajele și dezavantajele sistemelor distribuite?.......................9
21. Ce este un sistem de baze de date federative? Dați exemple de situații la
care acestea se pretează......................................................................................9
22. Ce sunt sistemele nefederative?....................................................................9
23. Care sunt caracteristicile sistemelor federative?...........................................9
24. Ce este wrapper-ul?......................................................................................10
25. Ce este heterogenitatea semantică? Exemplificați......................................10
26. Ce sunt depozitele de date?.........................................................................10
27. Ce reprezintă piețele de date?.....................................................................10
28. Ce operațiuni presupune înmagazinarea datelor?.......................................11
29. Ce este OLAP?...............................................................................................11
30. Ce sunt cuburile de date?.............................................................................11
31. Ce este datamining-ul?.................................................................................11
32. În ce domenii se poate aplica mineritul datelor?.........................................11
33. Care sunt principalele operații de extragere a datelor?..............................11
34. Comentați integrarea bazelor de date.........................................................11
35. Care sunt caracteristicile Big Data? 4 caracteristici – cunoscute
generic ca 4V:.....................................................................................................12
36. Menționați pe scurt tipurile de baze de date NoSQL...................................12
37. Ce este MongoDB?.......................................................................................12
38. Care sunt caracteristicile de bază ale MongoDB?........................................12
39. Daţi exemplu de o colecţie cu 3 documente scrise în format BSON............13
40. Comparaţi design-ul unei baze de date normalizate cu cel al unei baze de
date NoSQL(MongoDB)......................................................................................14
41. Daţi exemple de comenzi MongoDB pentru realizarea operţiilor CRUD.....14
42. Care sunt tipurile de indecşi suportate în MongoDB?.................................15
43. Ce sunt indecşii multicheie în MongoDB?....................................................15
44. Descrieţi procesul de replicare în MongoDB................................................16
45. Care sunt tipurile de noduri din cadrul unui set de replici MongoDB?........16
46. Descrieţi pe scurt partiţionarea bazelor de date MongoDB........................17
47. Care sunt operatorii de agregare (aggregatin framework) din MongoDB?. 17
48. Faceţi o comparaţie între clauzele SQL şi operatorii framework-ului de
agregare..............................................................................................................18
1. Ce este o bază de date distribuită?
O bază de date distribuită e un ansamblu de baze de date administrate
de diferite situri, dar care apar pentru utilizator ca o bază unică. Ele
sunt proiectate sub forma unor colecții de date integrate, omogene sau
nu, împrăștiate cu discernământ într-o rețea de calculatoare sub forma
unei baze de date globale.

2. Care sunt elementele care caracterizează sistemele


distribuite și la care fac referire în general definițiile?
Definițiile surprind doua aspecte ale bazelor de date distribuite si
anume integrarea logica si repartizarea fizica.
Integrarea logica se refera la faptul ca datele înmagazinate nu sunt
simple colecții de fișiere ci reprezintă o structura bine organizată pe
care utilizatorul o percepe ca o singura baza de date.
Repartizarea fizica se refera la faptul ca baza de date nu este stocata
într-o singura locație fizica ci este împărțita pe mai multe stații de
lucru. Dispersarea poate sa se facă depășind bariera unui birou sau a
unei clădiri.

3. Ce este un SGBDD?
Un sistem de gestiune al bazelor de date distribuite reprezintă sistemul
software care permite gestiunea bazelor de date distribuite, făcând
distribuirea fizică transparentă pentru utilizatori.

4. Ce se înțelege prin fragmentarea bazelor de date și de


câte tipuri este aceasta?
Fragmentarea reprezintă procedeul de spargere a relațiilor utilizate
într-un sistem distribuit prin operațiuni relaționale de proiecție și
selecție controlate, în vederea plasării așa-numitelor partiții
(fragmente) rezultate în locul în care sunt cel mai frecvent solicitate
datele pe care le conțin.
In funcție de operatorii relaționali care se aplică asupra relațiilor,
fragmentarea (partiționarea) poate fi de mai multe tipuri: Orizontală,
Verticală, Mixtă
Pe lângă aceste tipuri clasice, uneori situația impune necesitatea unor
fragmentări derivate sau chiar a unor relații nefragmentate.

5. Care sunt argumentele în favoarea fragmentării?


Uzanța - in aplicațiile proiectate pentru baze de date se folosesc
frecvent tabelele virtuale in detrimentul relațiilor întregi. De cele mai
multe ori un operator nu are nevoie de toate relațiile si informațiile pe
care le oferă o relație întreaga. Astfel unitatea atomica de proiectare si
utilizare nu va fi relația ci o subdiviziune a acesteia.
Eficienta - distribuirea unor relații întregi pe diferite stații de lucru ar
anula aspectul semantic al siturilor in funcționalitatea sistemului
distribuit.
Paralelismul - mai multe fragmente ale unei baze de date sporesc
accesul concurent. Mai multe cereri la care sistemul răspunde în
același timp.
Securitatea - un atac nu ar afecta funcționarea întregului sistem ci
poate doar un sit, care oricum își replica informația.
Complexitatea proiectării - este mult mai greu de proiectat decât un
sistem nedistribuit.
Performanta - mult mai sporita datorita alocării eficiente a
fragmentelor.
Controlul integrității - este aspectul primordial al oricărei baze de
date.

6. Ce reguli stau la baza fragmentării?


Completitudinea fragmentării – fragmentele trebuie să acopere
întreaga relație inițială și trebuie să elimine pierderile de date.
Refacerea relației inițiale – fragmentarea se face in așa fel încât in
orice moment să poată fi refăcuta relația inițiala.
Caracterul disjunct – fragmentele provenite din aceeași relație nu
trebuie sa se suprapună.
7. Descrieți fragmentarea orizontală. Exemplificați.
Fragmentarea orizontală, după cum sugerează numele, se face de-a
lungul tuplelor unei relații. Așadar, un fragment orizontal, este format
dintr-o submulțime a tuplurilor unei relații, submulțime obținută în
urma unei operații de restricție. Restricția trebuie să asigure o
descompunere ortogonală în fragmente orizontale.
Să presupunem că în relația STUDENT avem atributul Locația, a
cărui valori indică locul unde urmează cursurile studenții de la
FSEGA Cluj-Napoca. Considerând că aceștia pot să fie într-una din
cele două locații posibile, avem fragmentele: CJ_STUD: σLocatia =
”Cluj-Napoca”(STUDENT) SM_STUD: σLocatia = ”Sighetu
Marmației”(STUDENT) Deci, vom avea două fragmente. Fragmentul
CJ_STUD pentru studenții înscriși la FSEGA Cluj-Napoca și urmează
cursurile în Cluj-Napoca și fragmentul SM_STUD pentru studenții
înscriși la FSEGA Cluj-Napoca, dar care frecventează cursurile în
Sighetu Marmației. Cele două fragmente îndeplinesc cele trei reguli
de bază. După cum s-a văzut, fragmentarea orizontală se realizează
prin operațiuni de selecție aplicate relației globale. În proiectarea
fragmentelor se ține cont de aspectul logic și cel statistic.

8. Ce sunt predicatele minterm?


Predicatele minterm sunt predicatele pe baza cărora se abordează
fragmentarea orizontala. Sunt conjuncții de predicate simple sau
negații ale acestora.

9. Descrieți fragmentarea verticală. Exemplificați.


Fragmentarea verticală reprezintă o descompunere de-a lungul
atributelor unei relații. Realizarea acesteia presupune operații de
proiecție asupra atributelor, prin includerea în cazul fiecărui fragment
a unei chei alternative a relației. Scopul includerii acesteia este
obținerea unei descompuneri fără pierderi, deci una care să verifice
fără probleme cele trei condiții impuse fragmentării, de orice fel ar fi
ea.
EXEMPLU: Vom lua cazul relației LOCALITATI(CodLoc, Loc,
CodJud). Putem avea următoarele fragmente:
L_LOC: ΠCodLoc, Loc(LOCALITATI)
J_LOC: ΠCodLoc, CodJud(LOCALITATI)
În ambele fragmente a trebuit să includem cheia primară a relației
LOCALITATI și respectă cele 3 reguli, recompunerea relației inițiale
presupunând operația de JOIN. Partiționarea verticală e mult mai
complexă decât cea orizontală.

10. Descrieți fragmentarea mixtă. Exemplificați.


Fragmentarea mixtă reprezintă un tip special de fragmentare, o
combinație a celorlalte două enunțate anterior. Combinația se
datorează aplicării celor doi operatori din algebra relațională utilizați
pentru fragmentarea pe orizontală și pentru cea pe verticală. În funcție
de ordinea în care sunt aplicați, putem să avem două tipuri de
fragmentări mixte. Dacă mai întâi avem o operație de selecție, urmată
apoi pentru fiecare fragment, de operații de proiecție obținem
fragmente orizontale partiționate vertical.

11. Ce este fragmentarea derivată


Fragmentarea derivată este o fragmentare orizontală care se face între
două relații: una părinte și cealaltă fiu. Se va porni de la relația copil,
care va fi fragmentată conform predicatului prestabilit. Predicatul
implică în mod obligatoriu cheia externă.

12. Când se utilizează relațiile nefragmentate?


Nu întotdeauna fragmentarea va fi eficientă și de aceea nici nu va fi
aplicată. Relațiile care se pretează la o astfel de abordare sunt acelea
care au un număr relativ mic de înregistrări. În astfel de situații se
recomandă replicarea acestora pe fiecare sit în parte.
13. Ce este replicarea?
Replicarea presupune copierea unor fragmente în mai multe locații.

14. Care sunt nivelele de replicare pe care le cunoașteți?


Sisteme de baze de date distribuite
-baze de date centralizate(o singura baza de date stocata pe nodul
central, un singur SGBD, securitatea, fiabilitatea si disponibilitatea
sunt scăzute. Cost de comunicație ridicat.)
-baze de date partiționate, fragmentate sau ne replicate(sunt acele baze
de date in care toate fragmentele apar o singura data. )
-baze de date replicate integral( orice sit contine cate o copie a intregii
baze de date, disponibilitatea, fiabilitatea si securitatea sunt maxime.
Cost mare al echipamentelor de stocare.)
-baze de date replicate partial( anumite fragmente sunt replicate altele
nu. Sunt replicate fragmentele utilizate cel mai des. Aceasta forma de
replicare preia avantajele celor de mai sus si incearca sa elimine
dezavantajele.

15. Ce este alocarea și ce metode de alocare cunoașteți?


Alocarea reprezintă procesul de repartizare a fragmentelor pe situri.
Alocarea poate să fie neredundantă sau redundantă. Alocarea
redundantă este o problemă de proiectare mult mai complexă. Există
două variante de abordare a proiectării în acest caz:
a) Metoda selectării. Identificarea acelor situri pentru care beneficiul
alocării unei copii depășește costul alocării;
b) Metoda alocării progresive. Se implementează mai întâi o alocare
neredundantă. Apoi, în funcție de gradul de profitabilitate al stațiilor
se vor răspândi replici ale fragmentelor deja alocate, până când nu mai
există candidați.

16. Desenați și descrieți arhitectura de referință a


sistemelor distribuite.
Arhitectura este formată din:
- schemele externe globale, care reprezintă viziunea fiecărui utilizator
asupra sistemului;
- o schemă conceptuală globală, adică o imagine completă a întregii
baze de date
- schema de fragmentare, ce reprezintă ideea proiectantului de
partiționare a întregii baze de date;
- schema de alocare - se referă la modul de amplasare fizică a
fragmentelor și replicilor acestora în vederea deservirii optime a
interogărilor și tranzacțiilor sistemului distribuit;
Pentru fiecare sit avem o arhitectură ANSI-SPARC pe trei nivele:
- schema de transformare reflectă o armonizare de interese între
fragmentele amplasate conform schemei de alocare și vederile
utilizatorilor bazei de date locale;
- schema conceptuală locală este descrierea logică a bazei de date
amplasate pe un anumit sit;
- schema internă locală indică modalitatea de stocare a datelor local

17. Enumerați principiile lui Date referitoare la sistemele


distribuite.
Principiul fundamental al bazelor de date distribuite stipulează că
„pentru utilizator, sistemul distribuit trebuie să arate” – am completa
noi: și să se comporte – „la fel cu unul nedistribuit”. Detaliere a
tuturor aspectelor de ordin mai tehnic, pe care „regula de aur” le
presupune: autonomia locală, absența unei dependențe de un sit
central, operarea continuă, independența de fragmentare11 ,
independența de localizare, independența de replicare, prelucrarea
distribuită a interogărilor, gestionarea distribuită a tranzacțiilor,
independența de hardware, independența de sistemul de operare,
independența de rețea și independența de sistemul SGBD.

18. Care sunt etapele de procesare a cererilor într-un


sistem distribuit?
Procesarea interogărilor presupune 4 etape importante:
1. Descompunerea interogărilor
2. Localizarea datelor,
3. Optimizarea cererilor globale 4. Optimizarea cererilor locale.

19. Dați exemple de protocoale de gestiune a accesului


concurent într-un mediu distribuit.
În sistemele distribuite controlul accesului concurent se poate face
prin: blocare (Protocolul 2PL centralizat, Protocolul 2PL de copie
primară, Protocolul 2PL distribuit și Protocolul de zăvorâre a
majorității) sau prin utilizarea mărcilor de timp.

20. Care sunt avantajele și dezavantajele sistemelor


distribuite?
Avantajele se referă la următoarele aspecte:  Structura
organizațională, Caracterul partajabil și autonomia locală,
Disponibilitate și fiabilitate crescute, Performanțe îmbunătățite,
Dezvoltare modulară, Economie.
Dezavantajele sistemelor distribuite sunt: Complexitatea, Lipsa de
standarde, Securitatea, Dificultatea controlului integrității și a
concurenței, Lipsa de experiență, Dificultatea de înlocuire sau
schimbare.

21. Ce este un sistem de baze de date federative? Dați


exemple de situații la care acestea se pretează.
Un sistem de baze de date federative este o colecție de sisteme de
baze de date colaborative care sunt autonome și posibil heterogene.
Cea mai sugestivă exemplificare a conceptului o reprezintă însuși
Internetul, care, la rândul său, reprezintă un sistem federativ de
dimensiuni mari.
Un sistem de baze de date federative al unei agenții de turism
interconectează sistemele unor tipuri de instituții cu domenii de
activitate diferite (hoteluri, agenții de turism, sisteme de rezervare
etc).

22. Ce sunt sistemele nefederative?


Sisteme de baze de date multiple în care nu avem utilizatori locali.
23. Care sunt caracteristicile sistemelor federative?
Autonomia. Fiecare bază de date a fost proiectată autonom și își
păstrează libertatea de a-și modifica sau nu design-ul
Heterogenitatea. Se concretizează în diferențe de hardware, sisteme de
operare, SGBD (heterogenitate de sistem); modele de date și limbaje
și dialecte (heterogenitate sintactică)
Distribuirea. Un număr de baze de date separate pot fi localizate în
diferite noduri ale unui sistem distribuit

24. Ce este wrapper-ul?


Este cel mai popular concept atunci cand se vorbeste de
interconectarea bazelor de date heterogene, mai este cunoscut sub
numele de mediator.Acestea sunt niste straturi software intermediare
ce transparentizeaza nivele ale heterogenitatii.

25. Ce este heterogenitatea semantică? Exemplificați.


Heterogenitatea semantică se referă la numele obiectelor, valorile pe
care pot să le ia datele și structura conceptuală.
Un exemplu care ar putea să dezvăluie o parte din problemele
heterogenității semantice, ar fi interconectarea sistemelor educaționale
naționale într-o federație internațională. Dacă vrem să analizăm doar
sistemul de evaluare al elevilor, studenților, masteranzilor,
doctoranzilor etc. am constata că și în cadrul aceleiași regiuni
geografice modalitățile de evaluare sunt heterogene: note, calificative,
admis/respins, premii, titluri dobândite. Asta ca să nu mai vorbim de
steluțe, buline roșii sau negre, porcușori etc. utilizate în primele etape
ale stadiului didactic.

26. Ce sunt depozitele de date?


Depozitele de date sunt colecții de date nevolatile, orientate spre
subiect, integrate, variabile în timp care sprijină managementul firmei
în procedeul de luare a deciziilor.
27. Ce reprezintă piețele de date?
Piețele de date sunt submulțimi ale depozitelor de date, particularizate
în vederea îndeplinirii nevoilor unui departament sau care acoperă un
subiect.

28. Ce operațiuni presupune înmagazinarea datelor?


Prin intermediul inmagazinarii datelor volume imense de date sunt
extrase, în general prin intermediul unui proces batch.

29. Ce este OLAP?


OLAP este o tehnologie ce suportă facilități analitice asupra uneia sau
mai multor surse de date. În general, sistemele OLAP implică analiza
datelor ce-și au originea în baze de date tradiționale, dar au fost
ulterior transformate în structuri multidimensionale pentru o
vizualizare și o analiză mai facilă.

30. Ce sunt cuburile de date?


In cadrul sistemelor multidimensionale, reprezentarea intuitivă a
datelor se face prin intermediul cuburilor de date. Cuburile de date
sunt ușor de extins pentru noi dimensiuni. Navigarea prin intermediul
cuburilor este facilă.

31. Ce este datamining-ul?


Data mining, extragerea de cunoștințe sau „mineritul” datelor, constă
într-o analiză automată a datelor electronice structurate, precum în
cadrul unui depozit de date, cu intenția de a descoperi tipare anterior
necunoscute și relații dintre date pentru a putea fi folosite în adoptarea
unor decizii importante necesare eficientizării activității economice.

32. În ce domenii se poate aplica mineritul datelor?


Domenii in care este aplicat cu succes: comertul cu
amanuntul/marketing, domeniul bancar, asigurari, medicina.

33. Care sunt principalele operații de extragere a datelor?


Modelarea predictivă, Segmentarea bazei de date, Analiza legăturilor
și Detectarea deviațiilor.
34. Comentați integrarea bazelor de date.
Integrarea bazelor de date presupune un proces în urma căruia
informațiile din bazele de date participante pot fi înglobate într-o
singură definiție coerentă acceptată de un sistem de baze de date
federative. Este, de fapt procesul de constituire a schemei conceptuale
globale. Integrarea trebuie să se poată face între diferitele modele de
date pe baza cărora bazele de date locale sunt constituite.

35. Care sunt caracteristicile Big Data? 4


caracteristici – cunoscute generic ca 4V:
Volum - Datele încearcă să surprindă cât mai fidel realitatea, de aceea
trebuie să fie mai detaliate, complexe, presupunând un volum ridicat
de atribute
Viteza - datele cresc ca volum cu o viteză foarte mare
Varietate - Datele pot proveni din diverse surse și pot avea formate și
tipuri multiple
Veracitate - datele luate individual nu au nicio relevanță fără aportul
celorlalte

36. Menționați pe scurt tipurile de baze de date NoSQL.


La ora actuală există următoarele categorii de baze de date NoSQL:
Key-/Value-stores – cel mai simplu model pentru date nestructurate.
Foarte eficient și flexibil.
Document databases – pentru depozite XML și obiecte care se
autodescriu.
Column-Oriented Databases (Baze de date pe coloane) – model foarte
bun folosit în cadrul depozitelor de date pentru date rarefiate.
Graf – un model relativ nou, bun pentru parcurgerea relațiilor, dar nu
pentru căutări generale.

37. Ce este MongoDB?

MongoDB – Este un SGBD NoSQL, gratuit, open-source, cross-


platform, ce gestionează baze de date tip document cu schemă
dinamică în format Binary JavaScript Object Notation (BSON, derivat
din JSON). Acesta este distribuit de către compania MongoDB Inc
(2013), anterior denumită 10gen.

38. Care sunt caracteristicile de bază ale MongoDB?

Caracteristici de bază sunt:


· Performanţă înaltă Performanţă foarte bună cu privire la
persistenţa datelor prin:
– Suport pentru modele de date încapsulate, fapt ce reduce operaţiile
de intrare/ieşire
– Indecşi, ce accelerează interogările.
· Limbaj de interogare dezvoltat
– Agregări de date
– Căutări text şi interogări geospaţiale.
· Disponibilitate ridicată
– Se datorează facilităţii de replicare ce permite o redundanţă
controlată, dar şi proceduri de refacere automată în caz de pană.
· Scalabilitate pe orizontală
– Partiţionare orizontală, ce permite distribuirea bazei de date în
cadrul unor clustere de maşini de calcul
Suport pentru multiple motoare de stocare (WiredTiger Storage
Engine şi MMAPv1 Storage Engine).

39. Daţi exemplu de o colecţie cu 3 documente scrise în


format BSON.

Angajati
{"_id": ObjectId("100000000000000000000000"),
marca: 1,
nume: "Pop",
prenume: "Ion",
salariu: 1500
},
{marca: 2,
nume: "Albu",
prenume: "Ana",
comision: 0.15
},
{ marca: 3,
prenume: "Bob",
nume: "Chis",
"data angajarii": "10/22/2015" }
Angajaţi este colecţie, conţinutul unei perechi de acolade este un
document, „_id” este identificatorul de obiect, „marca:1” reprezintă
un exemplu de pereche cheie-valoare.

40. Comparaţi design-ul unei baze de date normalizate cu


cel al unei baze de date NoSQL(MongoDB).

Când proiectăm o bază de date, dorinţa noastră este de a reprezenta


cât mai corecte informaţiile şi să diminuăm cât mai mult posibilitatea
de a ajunge la informaţii eronate. Pentru a ajunge la această
performanţă, trebuie să folosim normalizarea.
Normalizare - este o tehnică de generare a unor relaţii co proprietăţiile
dorite, în scopul memorării corecte a datelor. Normalizarea dă
posibilitatea proiectantului bazei de date, pentru a efectua o seria de
teste pe baza de date, toate aceste teste ducând la prevenirea
posibilităţii de a apărea anomalii la actualizarea bazei de date.

BD NoSQL nu au schemă şi nu stochează date relaţionale. Ele ridică


problematici importante, legate de consistenţă, durabilitate/persistenţă
şi gestiunea versiunilor.

41. Daţi exemple de comenzi MongoDB pentru realizarea


operţiilor CRUD.
Creare documente:
Adăugare câte 1 document
db.colectie.insertOne({"_id":"tt9eijdskd", ...})
Adăugare n documente
db.colectie.insertMany([{"_id":"tt9eijdskd", ...}, { } ])- va introduce
toate documentele până la primul duplicat de _id
Citire documente :
db.colectie.find({"an":1990}).pretty() # afişează toate documentele
pentru care anul este 1990 db.colectie.find({"an":1990"}).count()#
afişează numărul de documente pentru care anul este 1990
Proiecţia
Limitarea câmpurilor ce vor fi afisate = Proiectie
db.colectie.find({"an":1990}, {titlu:1, _id:0}).pretty() - afişează doar
titlul, chiar şi id-ul este exclus db.colectie.find({"an":1990}, {titlu:0,
_id:0}).pretty() - afişează toate campurile, excluzând doar titlul şi id-
ul
Actualizarea documentelor
Comenzi de actualizare -> Upserts
db.colectie.updateOne({autor:"ion"}, {$set:{titlu:"O noua carte"}}})
- adaugă un câmp nou la o colecţie sau îi actualizează valoarea dacă
exista. Se poate folosi şi la documente compuse/încuibărite.

42. Care sunt tipurile de indecşi suportate în MongoDB?

Indecşi multicheie
Indecşi unici db.students.createIndex({student_id:1}, {unique:true})
Indecsi date rarefiate (sparse index)
db.students.createIndex({student_id:1, class_id:1}, {unique:true,
sparse:true}) - forţează crearea indexului, ignorând documentele în
care avem valori null pentru cheie.
Indecşi geospaţiali 2d: {...., location: [10, -5]}
db.stores.ensureIndex({location:'2d', type:1}) db.stores.find({location:
{$near:[50,50]}})
Indecşi geospaţiali sferici (longitudine, latitudine în grade [-90,90])
"2dsphere" db.stores.ensureIndex({location:'2dsphere'})
Indecşi text nu se poate indexa tot textul, se descompune textul într-
un vector, în care se memorează cuvintele
43. Ce sunt indecşii multicheie în MongoDB?

Indecşi multicheie Se folosesc atunci când valorile cheilor sunt de tip


array.
Ex.: {nume:'Dan',
hobby: ['pescuit','alergat','baschet'],
culoare: 'albastru',
locatie: ['CJ','SM'] }
După {hobby} sau {hobby, culoare} sunt variante acceptabile în acest
context, dar nu şi {hobby, locatie}. Dacă atunci când creăm indexul,
cheia sau cheile sunt doar valori scalare, atunci nu vom avea index
multicheie, însă acesta se va transforma în astfel de index atunci când
facem prima inserare/actualizare şi folosim un array în loc de valoare
scalară la una dintre cheile de indexare

44. Descrieţi procesul de replicare în MongoDB.

Replicarea

Problematici acoperite:
- Disponibilitatea crescută,
- Rezistenţa la pene.
Pentru atingerea acestor deziderate, se realizează un set de replici
(replica set, servere) între care datele sunt oglindite. Numărul minim
de replici e 3. Un nod este replica primară, iar aplicaţia/clientul
MongoDB se conectează doar la acesta. În cazul în care nodul primar
cade, dintre cele rămase se alege altul ca fiind primar, celelalte fiind
secundare. La procesul „electoral” participă majoritatea nodurilor
iniţiale. Dacă îşi revine, vechea replică primară va deveni acum
secundară.

45. Care sunt tipurile de noduri din cadrul unui set de


replici MongoDB?

Tipuri de noduri din cadrul setului de replici:


· Nodul obişnuit (regular) - este un nod de date şi poate fi
primar/secundar
· Nodul arbitru - participa doar la procesul de votare pentru a
asigura majoritatea, nu conţine date şi nu poate fi primar
· Nodul întârziat/obişnuit - poate vota, dar nu poate fi primar.
Este în general un nod de recuperare în caz de dezastre. Poate fi
configurat să se afle la 1-2 ore în spatele celorlalte noduri
· Nodul ascuns - se utilizează pentru analize, nu poate fi
primar. Participă la alegeri. Fiecare nod are câte un vot.
Aplicaţia scrie întotdeauna pe nodul primar. Citirile se pot efectua fie
de pe acesta, fie de pe cele secundare. Replicarea e asincronă. Poţi
efectua citirile de pe alte noduri, însă nu ai garanţia că ai citit valoarea
actualizată.
MongoDB oferă implicit consistenţă la scriere şi citire prin utilizarea
replicii primare, putând oferi însă şi consistenţă eventuală - cu
riscurile de rigoare - dacă se apelează la citiri de pe replicile
secundare.

46. Descrieţi pe scurt partiţionarea bazelor de date


MongoDB.

Sharding - partiţionare orizontală


· partiţii ale bazei de date distribuite între noduri
· mongos.exe - gestionează shard-urile. Pot fi mai multe
procese mongos
· cheia de partiţionare - dacă s-a facut interogarea după cheia
de partiţionare, atunci mongos va direcţiona cererea doar către acel
nod care conţine partiţia. Altfel, cererea se va adresa tuturor
partiţiilor. Nodurile vor trimite răspunsurile către mongos, iar
acesta le va centraliza şi transmite aplicaţiei care a lansat cererea
· Ca recomandare, cheia de partiţionare ar trebui inclusă in
insert-uri.
Mongos.exe face legătura cu mai multe servere (mongod), dintre care
unul deţine informaţii legate de celelalte servere, Replica Set. Atunci
când facem o operaţiune asupra unui document, pe baza cheii de
partiţionare (shard key, de exemplu Student_id) mongos ne
direcţionează către serverul mongod în care există această cheie. Fără
aceasta, performanţa este mai scazută, deoarece interogările trebuie să
caute în toate serverele.

47. Care sunt operatorii de agregare (aggregatin


framework) din MongoDB?

· $project - rearanjarea campurilor 1:1


· $match - pasul de filtrare n:1 l $group - agregare n:1
· $sort- ordonare 1:1
· $unwind - normalizarea datelor in cadrul unui document 1:n
· $out - redirectionarea rezultatului catre o colectie, valabil
incepand cu versiunea 2.6
· Expresii de agregare: $sum, $avg, $max, $min
· $push -construieste un array. Similar cu addToSet, dar
adauga elementele de fiecare data cand le gaseste, nu doar
elemente unice
· $first/ $last - necesita sortare, afiseaza primul/ultimul
element dintr-un grup, in functie de criteriul de sortare

48. Faceţi o comparaţie între clauzele SQL şi operatorii


framework-ului de agregare.

Asemanari:
Framework-ului permite (MongoDB) să furnizeze capabilități de
agregare care corespund mai multor operațiuni comune de agregare a
datelor în SQL. Următorul tabel oferă o prezentare generală a
termenilor, funcțiilor și conceptelor comune de agregare SQL și a
operatorilor de agregare MongoDB corespunzători:

WHERE $match
GROUP BY $group
HAVING $match
SELECT $project
ORDER BY $sort
LIMIT $limit
SUM() $sum
COUNT() $sum
JOIN $lookup

Dar exista si anumiti operatori de agregare care nu-si au echivalenti


directi in SQL. Cateva exemple:

$collStats - Returnează statistici referitoare la colecție sau vizualizare.


$sample - Alege în mod aleatoriu numărul de documente specificat de
la intrare.
$bucket - Categorizează documentele primite în grupuri, numite
buckets, pe baza unei expresii specificate
$redact - Remodelează fiecare document în flux restricționând
conținutul fiecărui document pe baza informațiilor stocate în
documentele proprii. Include funcționalitatea $project și $match.
Poate fi folosit pentru a implementa redactarea la nivel de câmp.

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