BAZE de date NoSQL. Studiu de caz MongoDB [625243]

Ovidiu Esanu
Universitatea Titu Maiorescu
Facultatea de Informatica ID
Anul I I
Grupa 206

BAZE de date NoSQL. Studiu de caz MongoDB

2 Cuprins
1. Introducere ………………………….. ………………………….. ………………………….. ………………………….. ………. 3
2. Terminologie ………………………….. ………………………….. ………………………….. ………………………….. …… 4
3. Categorii de depozite de date NoSQL ………………………….. ………………………….. ………………………….. .. 4
3.1. Baze de date orientate pe cheie -valoare ………………………….. ………………………….. ……………………. 4
3.1.1. Project Voldermort ………………………….. ………………………….. ………………………….. …………….. 4
3.1.2. Riak ………………………….. ………………………….. ………………………….. ………………………….. …….. 5
3.2. Baze de date orientate pe document ………………………….. ………………………….. …………………………. 5
Sistemele care folosesc modelul orientat pe document suportă date mult mai complexe decât
cele anterioare(orientate pe cheie -valoare). Acest tip de sistem suportă în general indesci
secundari și multe tipuri de documente (obiecte) care pot fi stocate în bază, însă nu
îndeplinesc proprietățile tranzacționale ACID ………………………….. ………………………….. ……………… 5
3.2.1. SimpleDB ………………………….. ………………………….. ………………………….. …………………………. 5
3.3.3. CouchDB ………………………….. ………………………….. ………………………….. ………………………….. 5
3.3. Baze de date orientate pe coloane ………………………….. ………………………….. ………………………….. .. 6
3.3.1. HyperTable ………………………….. ………………………….. ………………………….. ……………………….. 6
3.3.2. Cassandra ………………………….. ………………………….. ………………………….. …………………………. 6
4. Studiu de caz: MongoDB ………………………….. ………………………….. ………………………….. ……………….. 6
4.1. Paralelă între baze de date SQL și NoSQL: ………………………….. ………………………….. ……………. 7
4.2. Caracteristicile MongoDB: ………………………….. ………………………….. ………………………….. ……. 7
4.3. Instalarea ………………………….. ………………………….. ………………………….. ………………………….. 10
5. Concluzii ………………………….. ………………………….. ………………………….. ………………………….. ………. 10
6. BIBLIOGRAFIE: ………………………….. ………………………….. ………………………….. ………………………… 11

3 ABSTRACT

În acesta lucrare se analizează așa numitele depozite de date „NoSQL” care au fost
proiectate să scaleze aplicațiile de tipul OLTP 1 distribuite pe un număr mare de servere. Prin
motivarea apariției aplicațiilor de tip Web 2.0, sisteme de date „NoSQL” au fost concepute pentru
scalarea milioanelor de utilizatori care citesc date din bază de date și fac actualizări asupra acestora
în mod frecvent, lucru ce apare în contrast cu sistemele de gestiune de baze de date tradiționale și
cu data warehouses. Pe parc ursul lucrării vor fi prezentate noile sisteme de împreună cu modele
lor de date, consistența mecanismelor, mecanismele de stocare, garanțiile durabilității,
disponibilitatea datelor, modul de interogare a datelor precum și alte concepte. Aceste sisteme
sacrifică în mod evident undele dintre conceptele enumerate mai sus, cum ar fi consistența
tranzacțiilor pentru a realiza altele pe care își îndreaptă mai mult atenția cum este disponibilitatea
și scabilitatea mare a datelor.

1. Introducere

Există în prezent mai multe tipuri de sisteme de gestiune a datelor diferite de cele relaționale
care se deosebesc de acestea prin anumite caracteristici cum ar fi mecanismul de stocare și de
extragere a datelor. Un exemplu de un sistem de g estiune a informațiilor diferit de cel clasic este
baza de date NoSQL. Arhitectura acestei baze de date nu este asemănătoare de cea folosită în SQL
ceea ce face ca anumite operații efectuate asupra bazei de date NoSQL să fie mai rapide iar altele
mai lente . Aceste tipuri de baze de date sunt utilizate în special pentru stocarea structurilor foarte
mari. Bazele de date NoSql permit dezvoltatorilor de aplicații web să stocheze date care nu au o
schema fixă.
Bazele de date NoSQL s -au dezvoltat alături de comp anii de internet, cum ar fi Google,
Amazon și Facebook. În cazul acestor companii, care tratează cantități imense de date, soluțiile
tradiționale RDBMS nu au putut face față. Sistemele de baze de date NoSQL au fost dezvoltate
pentru a gestiona volume ma ri de date care nu urmează neapărat o schemă fixă. Datele sunt
împărțite între diverse mașini (din motive de performanță și limitări de spatiu), operațiile de JOIN
nu pot fi utilizate, si nici nu există garanții ACID (Atomicitate – fiecare tranzacție va fi "totul sau
nimic", în sensul în care apare eșecul unei părți a unei tranzacții conduce la eșecul întregii
tranzacții, deci la a nu modifica datele in baza de date, Consistența – orice tranzacție va determina
trecerea bazei de date dintr -o stare consistent ă, validă în raport cu regulile definite (triggere,
constrangeri, etc) într -o altă stare tot consistentă, Izolare – execuția concurentă a tranzacțiilor va
determina trecerea într -o stare care poate fi obținută și prin execuția secvențială a tranzacțiilor
respective, Durabilitate – tranzacțiile finalizate (pentru care s -a dat commit) vor ramîne așa și în
cazul apariției unor probleme hard sau soft), care în cazul RDBMS -urilor garantează procesarea în
siguranță a tranzacțiilor. NoSQL este un sistem de managem ent a bazelor de date rapid, portabil,
fără limite arbitrare, altele decît memoria și viteza procesorului ce rulează și interacționează cu SO
UNIX.
Caracteristici baze NoSql:
• Nu sunt relaționale
• Sunt open -source
• Scalabilitate mare

1 OLTP = Online Transaction Processing

4 • Lipsa unei scheme f ixe pentru a modela baza de date
• Stocheaza o cantitate mare de date
2. Terminologie

Terminologia folosită pentru modele de date NOSQL este adesea inconsisten tă. Pentru scopul
acestei lucrări ne trebui un mod consistent de a compar a modele și funcționalitățile. Toate
sisteme stochează perechi de atribute -valori, dar folosind structuri diferite cum sunt:
1. Un „tuplu” reprezintă un rând dintr -o tabela relațională unde atributele sunt
predefinite în schema tabelei , valorile atributelor fac referință la numele acestora și sunt valori
scalare.
2. Un „document” permite c a valorile unui atribut să fie și liste, nu numai valori
scalare, iar numele atributelor pot fi modificate în mod dinamic în timpul procesării datelor. Un
document diferă de un tuplu prin faptul că atributele nu sunt definite într -o schema globală a
bazei de date și există o gamă largă de tipuri de valori care sunt permise.
3. O „inregistrare extensibila” este o punte între un tuplu și un document, unde o
parte din atribute s unt definite în schema bazei de date, însă pe parcurs pot fi adăugate și atribute
noi .
Atributele pot fi și o lista de valori, așa cum sunt și la documente.
4. Un „obiect” face analogie la un obiect clasic din limbajele de programare, dar fără
metode proc edurale. Valorile pot și referințe sau alte obiecte.
3. Categorii de depozite de date NoSQL

Bazele de date în general sunt grupate în câteva mari categorii conform modelului de date
pe care acestea î l au.
O clasificare a acestor tipuri de baze de date NO -SQL poate fi următoarea:
• Orientate pe coloane: Druid, Cassandra
• Orientate pe documente: CouchDB, MongoDB
• Orientate pe Cheie –Valoare: HyperDex, Dynamo
• Orientate pe Graph: Allegro, Neoj
• Multi -model: OrientDB, ArangoDB

3.1. Baze de date orientate pe cheie -valoare

Modelul cheie -valoare, este cel mai simplu model de stocare de date folosit și este similar
cu modelul popular memcache folosit pentru d istribuirea datelor în memoria chache care deține
un singur index c a și cheie pentru toate datele.

3.1.1. Project Voldermort

Este un sistem de stocare a datelor foarte avansat, orientat pe cheie valoare, scris în
limbajul de programare Java. Este un sistem open -source cu contribuții substanțiale de la
LinkedIn. Voldermort oferă un control depli n asupra concurenței prin actualizări și emiterea de
noi versiuni frecvent. Acesta face actualizări asincrone pe date, deci există posibilitatea să nu

5 ofere c onsistență a datelor, însă poate garanta faptul că informațiile furnizate sunt mereu „up –
todate”.

3.1.2. Riak

Este un sistem scris în limbajul de programare Erlang. A fost făcut open -source de către
cei de la BASHO la jumătatea anului 2009. BASHO descrie sistemul Riak că fiind atât orientat
cheie -valoare cât și pe document, însă aici l -am categorizat că fiind un sistem cheie -valoare
deoarece nu deține caracteristici importante ale unui sistem orientat pe document, ci are mai
degrabă funcționalități pentru un sistem cheie -valoare. Acesta reprezintă un sistem mai flexibil și
mai rapid spre deosebire de sistemele tra diționale relaționale.

3.2. Baze de date orientate pe document

Sistemele care folosesc modelul orientat pe document suportă date mult mai complexe
decât cele anterioare(orientate pe cheie -valoare). Acest tip de sistem suportă în general inde cși
secundari și multe tipuri de documente (obiecte) care pot fi stocate în bază, însă nu îndeplinesc
proprietățile tranzacționale ACID.

3.2.1. SimpleDB

Modelul de date SimpleDB este cel mai recent serviciu Cloud Computing din portofoliul
Amazon car e se ocupă de gestionarea bazelor de date. Acesta este un depozit de date
NoSQL care reușește să mai elimine din muncă administratorului bazei de date, deoarece este
simplu de utilizat, iar dezvoltatorii pot interoga bază de date prin cereri de servicii web, iar
Simple DB știe să răspundă API -urilor de tip REST 2. Amazon SimpleBD nu are cereri stricte de
funcționare precum bazele de date relaționale, și este un model optimizat pentru a furniza o
disponibilitate ridicată și fexibilitatea mare cu puține sarcini administrative. Cererile de
interogare sun foarte simpl e, prin specificarea domeniului, constrângerilor și atributelor:
select <attributes> from <domain> where
<list of attribute value constraints>
3.3.3. CouchDB

CouchDB a fost un proiect Apache, până în anul 2008. Este scris în Erlang. Acest a bază
de date acceptă cerereri de tip API -uri REST. Couch este un acronim de la ”Cluster Of
Unreliable Commodity Hardware”, slubiinind astfel natură distribuită a modelului de baze de
date. CouchDB a fost concepută pentru aplicații care stochează datele î n format de document
cum ar fi: forum -uri, aplicațiile de urmărire a erorilor, wiki , email, etc. Proiectul CouchDB este
parte din Apache Foundation. Limbajul de programare Erlang a fost ales pentru proiectarea
modelului de baze de date deoarece se potrive ște foarte bine cu aplicațiile care controlează
procese ce se bazează pe paradigme de programare. CouchDb nu este numai o bază de date
NOSQL, este deasemenea și un web server pentru aplicațiile scrise în Javascript. Avantajul
folosirii CouchDB că un web se rver este că poate fi pro gramat prin simplu fapt că pune date în

2 REST( Representational State Transfer)

6 bază și aplicațiile le pot acces a direct fără să fie nevoie de un protocol pentru a trimite
interogările.
3.3. Baze de date orientate pe coloane

Apariția bazelor de date orientate pe „ inregistrari extensibile” a fost motivată de succesul
Google cu BigTable. Modelul de bază de date se bazează pe rânduri și coloane, iar scalabilitatea
este împărțită conform modelului pe rânduri și coloane.
o Rândurile sunt împărțite prin partajarea c heii primare. Ele sunt împărțite prin
gama din din care fac parte, iar asta înseamnă că interogări le pe anumite domenii nu
trebuie să treacă prin fiecare nod.
o Coloanele unei tabele sunt distribuite pe mai multe noduri folosind conceptul
de „column gr oups”. Acest concept pare că introduce un nou grad de complexitate în
sistem, dar împărțirea coloanelor în acest mod face să fie ușor de explicat unui client c a
datele pe coloane sunt cel mai b ine de stocat împreună.
Prin rânduri se face analogie la documentele amintite în frazele anterioare, deoarece
acestea pot avea o gamă variată de atribute (câmpuri), numele atributelor trebuie să fie unice,
rândurile sun t grupate în colecții(tabele) și atributele rândurilor pot fi de orice tip.

3.3.1. HyperTable

HyperTable a fost scris în C++ și a fost făcut open -source de către Zvents. Acesta nu are
în momentul de față o popularitate foarte mare față de celal alte sisteme de baze de date NoSQL ,
dar suportul celor de la Baidu garantează că în viitor această bază de date se va face cunoscută.
HyperTable este foarte similar cu HBase și BigTable. Acesta folosește familii de coloane și are
nevoie de un sistem de fieșiere distribuit, cum este Hadoop și un manager de blocare distribuită.
Tabelele sunt replicate și partiționate peste mai multe servere conform intervalelor de chei.
Actualizările datelor sunt făcute inițial în memorie și apoi aduce pe disk. HyperTable suportă un
număr mare de limbaje de programare și de interfețe de client. Acesta folosește un limbaj de
interogare a datelor din bază care se numește HQL.
3.3.2. Cassandra

În 2008, doi ingineri de la Facebook (Avianash Lakshman și Prashant Malik) au dezvoltat
modelul de date Cassandra, pentru Facebook pentru a crește puterea de căutare a mesajelor în
inbox. Compania Facebook a lansat Cassandra c a proiect open -source, în iulie 2008. În martie
2009, acest model a devenit un proiect folosit și de Apache, iar pe 17 februarie 2010 a fost
recunoscut că un proiect de nivel superior. Dezvoltatorii de la facebook au numit bază lor de date
după un profet mitologic, Cassandra care aduce iluzie la un blestem pe tru un oracol.

4. Studiu de caz: MongoDB

MongoDB este o bază de date NoSQL, foate ușor de folosit pentru dezvoltatorii de aplicații
web deoarece lucrează cu date nestructurate pe care le organizează în format de document,
urmărind modelul cheie -valoare, nevând nevoie de o schema predefinită a datelor. Acestă bază de
date memorează informațiile folosind un model care este similar cu JSON numit BSON care
reprezintă defapt varianta binară a formatului JSON. MongoDB este o bază de date open -source

7 scrisă în C++. În MongoDB nu există câmpuri predefinite așa cum sunt coloanele în bazele de date
relaționale, atunci când se crează tabelele. Acest lucru oferă o flexibilitate destul de mare
utilizatorului, presupunând ușurință în migrare și modificarea datelor.
4.1. Paralelă între baze de date SQL și NoSQL:

MongoDB este o bază de date NoSQL open -source. Acestă bază de date beneficiază de
suport din partea companiei 10gen . Dezvoltarea MongoDB a fot începută de 10gen în 2007, când
compania dezvolta un p rodus similar cu Windows Azure sau Google App Engine . În 2009
MongoDB a fost transformat într -un produs open -source si devine treptat din ce in ce mai folosita.
MongoDB este o bază de date open -source NoSQL scrisă în C++. Aceasta poate conține
mai multe baze de date, colecții și indecși. În unele cazuri (baze de date și colecții) aceste obiecte
pot fi create implicit. Odată create, ele se găsesc în catalogul siste mului db systems.collection sau
db.system.indexes. Colecțiile conțin documente (BSON). Aceste documente conțin la rândul lor
mai multe câmpuri. În MongoDB nu există câmpuri predefinite spre deosebire de bazele de date
relaționale, unde există coloanele car e sunt definite în momentul în care tabelele sunt create. Nu
există schemă pentru câmpurile dintr -un document, acestea precum și tipurile lor pot varia. Astfel
nu există operația de „alter table” pentru adăugare de coloane. În practică este obișnuit ca o c olecție
să aibă o structură omogenă, deși nu este o cerință, colecțiile putând avea structuri diferite. Această
flexibilitate presupune ușurință în migrarea și modificarea imaginii de ansamblu asupra datelor.
4.2.Caracteristicile MongoDB:
• Stocarea datelo r sub formă de documente
Baza de date MongoDB stochează obiecte sub forma de documente. Aceste documente
reduc nevoia de join;
• Prezintă support pentru indexare
Indexarea pe fiecare din atribute se face în modul tradițional bazelor de date relationale
asupra cheilor de regăsire ale documentelor;
• Disponibilitate – Disponibilitatea datelor
este asigurată printr -un proces automat de
failover;
• Auto -Sharding
Shardin gul sau partiționarea datelor pe orizontală se face automat. Citirile și scrierile sunt
distribuite pe partiții. Lipsa joinurilor face ca interogările distribuite să fie rapide;

8 • Limbajul de interogare
Limbajul de interogare este îmbunatatit și păstreaza principii SQL si C++;
• Modificări rapide
MongoDB suportă operații de actualizare atomice dar și pe cele tradiționale. Operatiile de
mai jos demonstrează flexibilitatea limbajului NoSQL
$inc – { $inc : { camp : valoare } } – incrementează câmpul “camp” cu numărul dat ca
valoare
$set -{ $set : { camp : valoare } } – câmpul „camp” ia valoarea dată
$push -{ $push : { camp : valoare } } – se adaugă valoarea dată câmpului specificat
$addToSet -{ $addToSet : { camp : valoare } } – adaugarea valorii într -un vector
$pop -{ $pop : { camp : 1 } } –șterge ultimul element dintr -un vector
$pop -{ $pop : { camp : -1 } } –șterge primul element dintr -un vector
$pull -{ $pull : { camp : _valoare } } – șterge toate v alorile egale cu “valoare” din câmpul
“camp ”
• Map Reduce
MongoDB folosește map/reduce pentru agregare și procesare batch;
• Suport
Există o cantitate mare de informații online – tutoriale, carți ce servesc pentru a asimila
rapid lucrul cu MongoDB.
In imaginea urmatoare este prezentat un exemplu MongoDB. Baza de date se numeste test
iar colectia se numeste restaurants. Documentul arata in felul urmator:

Operatiile de CRUD pentru o baza de date mongoDB sunt prezentate in urmatoarele randuri.

9 Create Operatiile de creare sau inserare au rolul de a adăuga noi documente într -o colecție. În cazul
în care colectia nu există în prezent, operațiile vor crea colec ția. MonfoDB ofera urmatoarele
metode de a insera documente intr -o colectie:
• db.collection.insert()
• db.collection.inse rtOne()
• db.collection.insertMany()

Read
Operațiile de citire a documentelor preiau dintr -o colecție anumite informatii; Se poate
specifica pentru o astfel de interogare conditiile acesteia care identifica documentele ce vor fi
returnate.

Update Operațiile de actualizare au rolul de a modifica documentele existente într -o colecție.
MongoDB oferă următoarele metode de actualizare a documentelor dintr -o colecție:
• db.collection.update ()
• db.collection.updateOne ()
• db.collection.updateMany ()
• db.collection.replaceOne ()
În MongoDB, operațiunile de actualizare actioneaza asupra unei o singure colecții.
In operatiile de update exista posibilitatea de a specifica criterii sau filtre, care identifică
documentele de actualizare. Aceste filtre foloses c aceeași sintaxă ca și operații de citire.

10 Delete
Operațiile de ștergere au rolul de a elimina documentele dintr -o colecție. MongoDB oferă
următoarele metode pentru a șterge documentele dintr -o colecție:
• db.collection.remove ()
• db.collection.deleteOne ()
• db.collection.deleteMany ()

4.2. Instalarea

Instalarea MongoDB este extrem de simplă. Această bază de date poate fi intalată pe
sisteme de operare variate, incluzând Windows, Linux, Ubuntu, Debian și OS X. Mediul de
dezvoltare în cazul acestui articol a fost reprezentat de MongoDB în Windows 7 Professionam 32
bit. Sistemele 32 bit sunt folosite de obicei pentru testare, deoarece instalările MongoDB pe un
astfel de sistem permit o capacitate maximă d e stocare de 2G. De menționat este faptul că nu se
permite instalarea pe sistemele Windows XP. De asemenea distribuția Mongo include fisierul
bin/mongo ce reprezintă un shell interactiv scris în JavaScript și folosit în aceeași manieră în care
este folosit SQl Plus pentru baze de date Oracle pentru comenzi în linie de comandă. Shellul este
folositor pentru verificări teste si pentru funcțiile administrative.

5. Concluzii

Noile tendințe de grid computing și cloud computing fac c a soluțiile de baze de dae
NoSQL să fie mai dorite. Nevoia de a scal a rapid, de a disocia configurația hardware de modelul
de date și de a furniza date într -un mod mult mai efficient, reprezintă factori importanți în
tranziția de date. Cel mai important asp ect al bazelor de date NoSQL este multitudinea de modele
de baze de date puse la dispoziția dezvoltatorilor. Cerințele de stocare de date ale aplicațiilor care
fac parte din noile generații sunt cu mult diferite față de aplicațiile dezvoltate până acum cât va
timp. În ceea ce privește creșterea performanței și a scalabilității, variațiile de modele de baze de
date vor continuă să evolueze.

11 6. BIBLIOGRAFIE:

• „Noua generație de baze de date NoSQL”, Elena Geanina Ularu, Florina Puican, 20 20
• Documentație MongoDb http://nosql -database.org/ Accesat 20 20
• Guy Harrsion(2010) 10 things you should know about NoSQL databases –
• https://www.techrepublic.com/blog/10 -things/10 -things -you-should -know -about -nosql –
databases/ Accesat : 20 20
• Documentație MongoDb . https://docs. mongodb.com/manual/introduction/ Accesat:20 20

Similar Posts