Вы находитесь на странице: 1из 10

NOUA GENERAŢIE DE BAZE DE DATE NoSQL

Elena-Geanina Ularu Florina Puican


ularugeanina@yahoo.com piucanflorina@yahoo.com
Institutul de Studii Doctorale Bucureşti

Rezumat: Bazele de date tradiţionale sunt puse la încercare din ce în ce mai mult de noile tipuri de aplicaţii care le
folosesc. Aceste tipuri de aplicaţii utilizează de regulă o cantitate mare de date complexe. Dacă în trecut pentru o mare
perioadă de timp bazele de date relaţionale esenţiale pentru aplicaţii web erau MySQL, astăzi aceste baze de date
relaţionale întâmpină multe dificultăţi în lucru cu cantităţi mari de date. Pe piaţa în care activează MySQL au pătruns
furnizorii de soluţii de baze de date cloud. Aceste baze de date cloud poartă numele de NoSQL- Not only SQL şi sunt
baze de date non relaţionale. Dezvoltarea NoSQL şi NewSQL ameninţă monopolul MySQL.
În acest articol vom analiza caracteristicile bazelor de date NoSQL, arătând care sunt avantajele şi dezavantajele acestora
faţă de modelul relaţional tradiţional şi cum pot fi folosite pentru a aduce un plus organizaţiei. De asemenea articolul de
faţă conţine o scurtă analiză a funcţionalităţilor bazei de date NoSQL, MongoDB, pentru a exemplifica practic uşurinţa
trecerii de la SQL la NoSQL şi simplitatea dezvoltării de aplicaţii în acest tip de baze de date.
Cuvinte cheie: Baze de date, NoSQL, SQL, model relaţional, open-source.

Abstract: Traditional relational database management systems are being challenged by the increasing requirements of
new application types. This king of applications usualy need to work with large amounts of complex type of data. If for a
long time open source relational databases like MySQL represented the basis for Web applications nowadays this well
known RDBMS faces a lot of challenges from the alternative database providers. The market where MySQL activates has
be opened to cloud database providers.This databases are called NoSQL- Not only SQL and they represent non relational
databases.The development of NoSQL and NewSQL and the new features of this type of databases are theatening the
MySQL monopol.
In this paper we are analyzing the characteristics of NoSQL databases, stressing the advantages and disadvantages
compared to the relational model and showing how can these databases can be used to help the organization.In addition,
this paper presents a short analysis on the features of MongoDB, in order to give a practicat example on the switch
between SQL and NoSQL and the ease in development with the latest kind of database.
Keywords: Databases, NoSQL, SQL, relational model, open-source.

1. Introducere
Orice organizaţie colecţionează cantităţi mari de date constând în informaţii necesare pentru
buna desfăşurare a activităţii de bussines. Aceste informaţii sunt stocate pentru a putea fi folosite în
analize viitoare, precum previziuni şi analize de bussines, cu scopul de a aduce un avantaj
competitiv. În mod tradiţional, organizaţiile stochează aceste date în baze de date relaţionale pentru
a putea avea acces la ele şi pentru a putea desfăşura analizele de bussines necesare. Cu toate
acestea, în ultima vreme mulţi dintre dezvoltatori au început să implementeze şi să lucreze cu baze
de date non relaţionale numite NoSQL-Not Only SQL.
Diversele baze de date NoSQL existente azi pe piaţă prezintă diferite abordari. Ceea ce au în
comun este faptul că nu sunt relaţionale. Principalul avantaj este acela că permit lucrul eficient cu
date nestructurate precum e-mail, multimedia, procesoare de text. În prezent există multe companii
care au dezvoltat propriile baze de date NoSQL. Cele mai populare sunt cele dezvoltate de către
companiile mari Web 2.0, precum Amazon and Google, din nevoia de a procesa cantităţi mari de
date. Acestea au dezvoltat Dynamo şi Big Table ce stau la baza multor alte baze de date NoSQL
existente acum pe piaţă.
La început
Limbajul SQL a fost inventat în 1970 la IBM. Acest limbaj a fost dezvoltat pentru a lucra cu
date structurate conform modelului relaţional al lui Edgar F. Codd şi reprezintă limbajul standard
pentru bazele de date relaţionale. SQL permite construirea de interogări pentru analiza unor
cantităţi mari de date structurate şi contibuie la buna desfăşurare a activităţilor economice ale unei
companii. Un exemplu concret este reprezentat de obţinerea de indicatori de performanţă pentru

Revista Română de Informatică şi Automatică, vol. 22, nr. 4, 2012 http://www.rria.ici.ro 35


fiecare departament în parte.
Deşi în prezent nu există competitori reali pentru SQL, problema se schimbă în cazul
aplicaţiilor web. În acest caz, nu există o multitudine de asocieri inner şi outer pentru calcule
complexe ci mai degrabă se foloseşte o gândire orientată obiect, îndeosebi datorită MVC (Model–
View–Controller). Pentru a transforma aceste modele orientate obiect în baze de date relaţionale au
loc diverse procese de normalizare ce rezultă în ierarhii complexe de tabele şi îndepartează întregul
model de principiile modelării orientate obiect. Faptul că limbajul SQL permite interogări dinamice
asupra unor seturi de date complexe este nefolositor prin folosirea unei baze de date SQL doar
pentru stocarea persistentă a datelor orientate obiect.
Aici intervin bazele de date NoSQL. Acestea permit dezvoltatorului de aplicaţii să stocheze
date care nu au o schemă predefinită. Carlo Strozzi a folosit prima dată termenul de NoSQL în
1998, reprezentând numele bazei sale de date relaţionale open-source fără interfaţă SQL. Termenul
a fost reintrodus în 2009 de către Eric Evans în cadrul unui eveniment cu tema baze de date
distribuite open-source. De această dată termenul nu a fost folosit pentru a defini un întreg sistem,
ci a fost folosit pentru a marca un pas în evoluţia de la baze de date relaţionale către baze de date cu
performanţe sporite. Din acest moment s-au dezvoltat un număr vast de baze de date non-
relaţionale. [1]
O definiţie a bazelor de date NoSQL este dată de site-ul nosql-database.org. Acesta
caracterizează bazele de date NoSQL ca noua generaţie de baze de date ce îndeplinesc următoarele
condiţii: nu sunt relaţionale, sunt distribuite, open-source şi se caracterizează prin scalabilitate
orizontală. Alte caracteristici ce trebuiesc menţionate sunt lipsa unei scheme pentru a modela baza
de date, prezintă suport pentru replicare, API, nu respectă în întregime ACID, stochează o cantitate
mare de date.[2]
Unul din motivele apariţiei NoSQL constă în nevoia aplicaţiilor web de a manipula cantităţi
mari de date a pentru a putea rămane competitive. Cantitatea de informaţie digitală la nivel mondial
este măsurată în exabytes. Conform unui studiu realizat de Universitatea Southern California
cantitatea de date adaugată în 2006 a fost de 161 de exabytes. Doar un an mai tarziu, în 2007
capacitatea totală s-a ridicat la 295 de exabytes, o creştere cu aproape 200%. Altfel spus, există o
cantitate mare de informaţie în lume şi aceasta creşte exponenţial. De aici survine şi nevoia de baze
de date web ce suportă cantităţi mari de date.[3]
O bază de date NoSQL ignoră principiile RDBMS şi nu stochează date folosind tabele ci
folosind chei de identificare. Datele pot fi regăsite în funcţie de cheile asignate. Părerea noastră este
că acest tip de baze de date evadează din rigorile relaţionale prin lipsa unei scheme, lipsa necesităţii
de normalizare a datelor şi de stocare a relaţiilor dintre tabele aducând astfel performanţe sporite
aplicaţiilor care le folosesc. De asemenea acest tip de baze de date îmbunătăţesc şi răspunsul la
schimbări de-a lungul timpului. Într-un sistem relaţional nu există flexibilitatea necesară pentru a
asimila modificări în modelul de date. Faptul că bazele de date NoSQL nu au o schemă de date fixă
face aceste baze de date să fie mult mai flexibile şi adaptabile la schimbări de model în cursul
anilor.
Conform definiţiei date de Rick Cattell, bazele de date NoSQL prezintă şase trăsături de bază:
1. Abilitatea de a scala orizontal pe mai multe servere;
2. Abilitatea de a replica şi distribui datele pe mai multe servere;
3. CLI (call level interface) caracterizat prin simplitate (în contrast cu SQL binding);
4. Un model concurenţial mai slab decat modelul relaţional (ACID);
5. Utilizarea eficientă a indexării distribuite şi a RAM pentru o stocare eficientă;
6. Abilitatea de a adăuga dinamic noi atribute la înregistrările existente.[4]
O altă caracteristică importantă a sistemelor NoSQL este arhitectura „shared nothing” prin
care fiecare nod/server este independent, nici unul din ele nu partajează memorie sau spaţiu.
Datorită acestei caracteristici pot fi efectuate un număr mare de operaţii de citire/scriere pe

36 Revista Română de Informatică şi Automatică, vol. 22, nr. 4, 2012 http://www.rria.ici.ro


secundă. O simplă operaţie poartă numele de OLTP (online transaction processing) şi este de
asemenea comună şi în cadrul aplicaţiilor web moderne.
Conform unui studiu realizat de 451 Group Research intitulat MySQL vs. NoSQL and
NewSQL între 2009 şi 2011 s-a înregistrat o scădere în utilizarea MySQL de la 82% la 73%.
Studiul a fost efectuat asupra unui eşantion compus din 347 de utilizatori de baze de date open-
source. 49% din respondenţi au abandonat soluţiile MySQL pentru a migra la soluţii NoSQL.
Astfel se poate observa ameninţarea directă pe care o presupune NoSQL asupra MySQL.[5]
Conform aceluiaşi studiu MySQL este direct ameninţat de apariţia NoSQL şi NewSQL, acesta
din urmă reprezentând un nou set de baze de date relaţionale care încearcă să adauge la modelul
relaţional performanţele şi funcţionalităţile bazelor de date NoSQL.

MySQL
NoSQL
NewSQL

Figura 1. Ameninţarea NoSQL şi NewSQL asupra MySQL [5]


Având la dispoziţie toate aceste informaţii despre conceptul NoSQL putem formula o definiţie
proprie a ceea ce considerăm NoSQL. Astfel mişcarea NoSQL reprezintă o încercare de a depăşi
limitările modelului relaţional şi un pas de trecere către NewSQL şi anume relaţional plus extra
funcţionlităţi NoSQL.

2. Avantajele folosirii sistemelor NoSQL


În bazele de date relaţionale (MySQL, MSSSQL, PostgreSQL) optimizările se fac prin
definiţiile index. Modelul de date pune accent pe normalizarea, abstractizarea şi integritatea
datelor. Baze de date NoSQL au apărut ca noua generaţie de baze de date ce permite cereri la noi
nivele şi fac faţă nevoilor tehnologiilor din ziua de azi, prin arhitecturi construite pe cloud şi
sisteme distribuite. Bazele de date non-relaţionale sunt distribuite şi memorează date care nu
respectă garanţiile ACID.
Utlizatorii nu se mai mulţumesc doar cu rolul de a folosi bazele de date, ci doresc şi să producă
conţinut şi astfel s-a produs o restructurare a modalităţii de stocare şi folosire a datelor de pe Web.
Din acest punct de vedere, bazele de date relaţionale nu mai prezintă eficienţă din perpectiva
timpului, în special în contextul aplicaţiilor mari.
Printre primele aplicații mari, ce au ridicat problemă scalabilității, se număra aplicația Web
Facebook. Această reţea de socializare presupune un număr impresionant de utilizatori, la nivelul
milioanelor. Prin adoptarea bazeleor de date NoSQL scalarea masivă a adus un beneficiu enorm.
Unul din primele sisteme NoSQL pentru managementul datelor a fost proiectat inițial de
Facebook și se numește „Cassandra”. Acest sistem distribuit permite stocarea masivă de date și
este bazat pe structura BigTable. Această strucutră oferă performanță prin compresie, iar ca singur
dezavantaj este faptul că nu poate fi folosit în afara companiei. A fost implementată cu sistemul de
fişiere Google.

Revista Română de Informatică şi Automatică, vol. 22, nr. 4, 2012 http://www.rria.ici.ro 37


Avantajele folosirii sistemelor NoSQL constau în portabilitate, iar serverele acestora
utilizează modelul DHT (Distributed Hash Table), astfel încât manipularea datelor obiect se
realizează prin furnizarea de către utilizator a cheii primare a obiectului. DHT (Distributed Hash
Table) fiind accesibil prin intermediul API Hashtable. Funcţia hash este un algoritm matematic ce
stă la baza arhitecturii NoSQL. Acest algoritm are la intrare o lungime variabilă şi produce o
lungime fixă la ieşire. Fiecare cheie este partiţionată, iar valoarea hash rezultantă este folosită
pentru a se trimite la un server de baze de date NoSQL. Înregistrarea este memorată pentru căutări
ulterioare. NoSQL permite accesul la date doar într-un model îngust de acces predefinit. Astfel
modelul de acces la date este unul fiabil. Printre sistemele NoSQL din ziua de azi pot fi menţionate
cele open-source, precum Hbase, MongoDB, CouchDB, GTM.[6]
Bazele de date NoSQL au atât modele mai simple decât cele SQL, dar şi modele mult mai
complicate decât acestea. Ceea ce se doreşte însă este obţinerea unei flexibilităţi mult mai mari.
Procesarea se face online, la o performanţă înaltă şi este scalabilă orizontal. În cazul în care este
necesară păstrarea mai multor copii ale datelor sesiune de către un utilizator şi nu este necesară
supunerea tuturor controalelor de consistenţă asupra acestora, specifice bazelor de date relaţionale,
atunci este eficientă doar păstrarea acestora în memorie prin sisteme NoSQL. [4]
Sistemele de baze de date NoSQL permit şi un transfer mare de date, în comparaţie cu
RDBMS-urile. Ca de exemplu, Google este capabil să proceseze date la nivelul zecilor petabyte
într-o zi prin abordarea MapReduce.
Sistemul de baze de date NoSQL este proiectat astfel încât să nu fie dependent de
componentele de hardware. Orice maşină poate fi îndepărtată sau adăugată fără eforturi
operaţionale semnificative. O caracteristică importantă a bazelelor de date NoSQL este scalarea
orizontală, ce presupune construirea pe loc şi nu vertical. Scalarea orizontală este utilizată atunci
când există capacitatea de a rula mai multe instanţe pe servere simultan. Este utilizată în momentul
în care necesatăţile aplicaţiilor constau în trafic foarte mare şi conectarea la un număr mare de
evenimente. Soluţiile NoSQL pot fi uşor de scalat orizontal. [7]
Bazele de date NoSQL permit ca PC-urile să fie avantajos extinse, fără complexitatea şi costul
“sharding”, care ar implica partiţionarea unor baze de date în mai multe tabele pentru a rula pe
grupuri mai mari sau grile.
Unul din avantajele substanţiale aduse de sistemul de management NoSQL este procesarea
distribuită a datelor, ce se realizează şi prin intermediul MapReduce. În NoSQL se lucrează în
medii distribuite, concentrându-se pe dinamica mecanismelor de interogare. Deşi nu este un
substitut al lipsei interogărilor şi al capabilităţilor de întreţinere, procesarea distribuită a datelor este
un ghid către NoSQL.
Modelele de interogare în NoSQL se bazează pe căutarea unor chei primare sau a unui câmp ID
şi pe lipsa unei interogări pe alte domenii. Bazele de date MongoDB şi CouchDB permit interogări
mai avansate, cum ar fi cele static predefinite pe nodurile bazei de date. Proiectarea bazelor de date
NoSQL a fost făcută cu caracteristici dinamice de interogare în favoarea obţinerii performanţei şi a
scalabilităţii. [4]
Bazele de date NoSQL Companion reprezintă o abordare în care atributele căutate sunt copiate
într-un SQL sau text. Capacităţile de interogare ale acestei baze de date sunt utilizate pentru a
prelua cheile primare de sortare în seturi de date, prin care baza de date NoSQL va fi mai târziu
accesată. A se vedea Fig. 2:

38 Revista Română de Informatică şi Automatică, vol. 22, nr. 4, 2012 http://www.rria.ici.ro


Figura 2
Mai există şi alte modalităţi de căutare în NoSQL, precum cele Scatter / Gather, unde se
permite interogarea şi indexarea în cadrul unui server de baze de date. În acest caz procesorul de
interogare poate trimite interogări către nodurile bazei de date, unde interogările sunt executate
local. Rezultatele de la bazele de date ale tuturor serverelor sunt trimise înapoi la procesorul de
interogare. A se vedea Fig.3:

Figura 3
Datorită avantajelor menţionate, sistemele NoSQL sunt în ascensiune şi necesare proiectelor
web complexe. Pentru a fi adoptate la o scară cât mai largă, acestea trebuie să fie:
1. open-source
2. facil de utilizat
3. suficiente şi consistente
NoSQL-ul completează bazele de date relaţionale, se caracterizează prin lipsa unei scheme
fixe şi aduce în plus scalarea ca soluţie eficientă pentru seturile de date de dimensiuni mari.

3. Dezavantajele folosirii managementului bazelor de date NoSQL


Este ştiut faptul că în ansamblul sistemelor, modele alese joacă un rol vital. Datorită faptului că
în sistemele NoSQL nu există o autoritate calificată pentru a defini un singur, bine-definit model,
folosirea unui model non-normalizat poate conduce la suprapunerea obiectelor de date. La nivel de
sistem este de asemenea important să se ţină cont de modelele de concurenţă şi de limitele
serviciilor de date alese.

Revista Română de Informatică şi Automatică, vol. 22, nr. 4, 2012 http://www.rria.ici.ro 39


Din punctul de vedere al arhitecturii bazelor de date NoSQL există probleme legate de interfeţe
şi interoperabilitate. Modelul DHT (Distributed Hash Table) conţine interfeţele sale încă
standardizate, însă nu conţine o semantică intrinsecă pentru indicii. Interoperabilitatea este
importantă în momentul în care datele trebuie accesate de mai multe servicii, moment în care se
poate pierde din performanţă.
Spre deosebire de bazele de date relaţionale care s-au consacrat ca fiind stabile, sistemele
NoSQL apar pe piaţă ca o alternativă ce poate fi pusă în aplicare doar cu precauţie, deoarece încă
nu au ajuns la un nivel de maturitate cel puţin egal cu RDBMS-urile. De asemenea, în cazul
apariţiei unor probleme, suportul sistemelor NoSQL este încă limitat, acestea fiind în mare proiecte
open-source, iar companiile care oferă suport pentru bazele de date NoSQL nu oferă credibilitatea
companiilor globale. [8]
Sistemele NoSQL se potrivesc foarte bine şi în tehnologia Cloud, care se bazează pe
virtualizare. Există şi un punct slab al virtualizării ce ţine de performanţa I/O, limitările CPU-ului şi
ale memoriei fiind de altfel în strânsă legătură. Bazele de date NoSQL folosesc proporţia cea mai
mare pe memoria de disc, aceasta fiind locaţia principală de scriere, însă datorită scalării orizontale
sunt capabile să memoreze datele eficient.
Bazele de date NoSQL prezintă un dezavantaj din punctul de vedere al administrării, pentru că
necesită un anumit efort pentru a fi menţinute şi cunoştiinţe solide pentru instalare. Persoanele
calificate pentru bazele de date NoSQL sunt mai puţine decât cele cu experienţă pentru RDBMS.
De aceea preluarea lor de către firme trebuie să fie făcută în mod corespunzător, întrucât beneficiile
reale aduse de acestea pot fi însoţite uneori şi de anumite probleme.

4. MongoDB
Pentru a putea exemplifica practic bazele de date NoSQL am ales să analizăm baza de date
NoSQL MongoDB. În opinia noastră acesată bază de date este uşor de folosit pentru utilizatorii de
RDBMS-uri. MongoDB lucrează cu date nestructurate şi organizează aceste date în format
document. Implementarea acestei baze de date este mai uşoară decat un RDBMS deoarece ea
urmăreşte modelul cheie valoare şi nu are nevoie de o schemă predefinită a datelor. Conceptele
acesteia pornesc de la concepte tradiţionale, de aceea întelegerea filosofiei acestei baze de date este
ceva uşor de realizat. Prezentul articol urmăreşte atât prezentarea generală a bazei de date cât şi
instalarea şi utilizarea ei.
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 sistemului db.systems.collection,
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 care 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 colecţ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.

40 Revista Română de Informatică şi Automatică, vol. 22, nr. 4, 2012 http://www.rria.ici.ro


Pentru a întelege această bază de date NoSQL o să facem o scurtă paralelă cu MySQL:

Termeni MySQL Concepte MongoDB


Baza de date Baza de date
Tabelă Colecţie
Index Index
Rând Document BSON
Coloană Câmp BSON
Join Încapsulare şi legatură
Cheie primară Câmpul cheie unică _id
Group by Agregare
ServerDB = mysqld ServerDB = mongod
Client = mysql Client = mongo
Figura 4. MySQL vs NoSQL
Caracteristicile MongoDB:
• Stocarea datelor sub formă de documente - Baza de date MongoDB stochează obiecte
(documente). Aceste documente reduc nevoia de join;
• Prezintă support pentru indexare – Indexarea pe fiecare din atribute se face în modul
tradiţional (RDBMS) asupra cheilor de regăsire ale documentelor;
• Disponibilitate - Disponibilitatea datelor este asigurată printr-un proces automat
de failover;
• Auto-Sharding - Shardingul 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;
• Limbajul de interogare - Limbajul de interogare este îmbunătăţit şi păstrează principii
Sql şi C++;
• Modificări rapide - MongoDB suportă operaţii de actualizare atomice cât şi pe cele
tradiţionale. Operaţiile de mai jos demonstrează flexibilitatea limbajului NoSQL:
$inc - { $inc : { camp : valoare } } – incementeaza campul “camp” cu numarul dat ca
valoare
$set -{ $set : { camp : valoare } } – campul „camp” ia valoarea data
$push -{ $push : { camp : valoare } } – se adauga valoarea data campului specificat
$addToSet -{ $addToSet : { camp : valoare } } – adaugarea valorii intr-un vector
$pop -{ $pop : { camp : 1 } } – sterge ultimul element dintr-un vector
$pop -{ $pop : { camp : -1 } } – sterge primul element dintr-un vector
$pull -{ $pull : { camp : _valoare } } – sterge toate valorile egale cu “valoare” din
campul “camp
• Map Reduce – MongoDB foloseşte map/reduce pentru agregare şi procesare batch;
• GridFS – Poate stoca fişiere de dimensiuni mari fără a complica stiva de date;
• Suport – Există o cantitate mare de informaţii online – tutoriale, cărţi forumuri ce
servesc pentru a asimila rapid lucrul cu MongoDB. [9]
Revista Română de Informatică şi Automatică, vol. 22, nr. 4, 2012 http://www.rria.ici.ro 41
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ă de stocare de 2G. De menţionat este faptul că nu se permite instalarea
pe sistemele Windows XP. De asemenea distribuţia Mongo include fişierul 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.
Modelul de date Mongo
Un sistem MongoDB conţine un set de baze de date. O bază de date conţine un set de colecţii.
O colecţie conţine un set de documente. Un document conţine un set de câmpuri. Un câmp conţine
o pereche cheie-valoare. Ocheia este un nume (string). O valoare poate fi orice tip de dată: string,
integer, float, un document sau un vector de documente etc.
Pentru a demonstra funcţionalităţile MongoDB vom construi o aplicaţie utilizând shellul
MongoDB. Shell-ul interactiv este inclus în distribuția MongoDB. Pentru a începe lucrul cu acest
shell trebuie apelat fișierul ./bin/mongo din locația unde a fost instalată baza de date. Dacă se
rulează fără nici un parametru, atunci conectarea se va face la o bază de date numită test ce rulează
pe maşina locală.
Când shell-ul este lansat în execuţie, se verifică dacă în directorul home există fişierul
.mongorc.js. Dacă acesta este găsit, atunci conţinutul lui este interpretat şi rulat înainte de a afişa
promptul. Acest fişier permite modificarea unor variabile. Instrucţiuni folositoare pentru utilizarea
shellului sunt:
help //ajutor pentru setările bazei de date
db.help() / / afisează metodele disponibile la nivelul bazei de date
db.mycollection.help() //metode la nivelul colecţiilor

Pentru a putea schimba baza de date în care se lucrează există urmăroarele instrucţiuni:
show dbs // afişează bazele de date existente pe server
user db_name // schimbă baza de date în lucru
show collections // afişează lista colecţiilor din baza de date curentă

Aplicaţia prezentată în acest articol va presupune înregistrarea comentariilor angajaţilor unei


multinaţionale ce lucrează în diferite locaţii referitoare la cum consideră aceştia mediul de muncă
în locaţia specifică.

Pas 1. Utilizatorii se logează într-o anumită locaţie. Vom crea baza de date cu locaţii.

Figura 5. Creare locaţii

42 Revista Română de Informatică şi Automatică, vol. 22, nr. 4, 2012 http://www.rria.ici.ro


Adaugăm comentariile şi alte date.

Figura 6. Adaugare detalii


Instrucţiunile de inserare şi regăsire sunt:
Db.db.insert(locatie1);
Db.db.find();
Ulterior putem adăuga detalii în campul de detalii astfel:
db.baza_mongo.update( {denumire :"Bucuresti"}, { $push : { "detaliicomentarii"
{ "angajat" : "Cristescu Marian" , "detaliu" :"mediu de lucru placut"}}});
Acesta este o scurtă aplicaţie pentru a demonstra uşurinţa şi flexibilitatea pe care o are orice
utilizator în folosirea bazelor de date NoSQL. Acestea sunt optime pentru a manipula cantităţi mari
de date, de preferat în cazul în care natura datelor de manipulat nu se încadreaza în standardele
modelului relaţional. Ele se caracterizează prin abilitatea de stocare şi regăsire într-o mare cantitate
de date, fără a avea relaţii între elemente.

5. Concluzii
Potrivit definiţiei formulate în acest articol bazele de date NoSQL reprezintă o trecere către
baze de date superioare ce vor integra flexibilitatea şi performanţele lor actuale cu modelul
relaţional. Odată cu apariţia bazelor de date NoSQL, dezvoltatorii au oportunitatea de a beneficia
de mai multă agilitate în modelul de date abordat. De asemenea aceste baze de date constituie
modelul optim pentru aplicaţiile web. De aceea cunoaşterea caracteristicilor lor este foarte
importantă, în special înainte de a migra la o astfel de soluţie.
Baza de date prezentată în acest articol, MongoDB este o bază de date ușor de înțeles și de
manipulat. Aceasta este ideală atât pentru proiecte mici, de test, cât şi pentru proiecte ce implică un
volum mare de date. În opinia noastră MongoDB este o bază de date ce va fi folosită din ce în ce
mai mult pe viitor datorită tendinţei actuale înclinată către aplicaţii Web.
În acest articol am realizat o prezentare a generaţiei noi de baze de date NoSQL, pe care le
considerăm un pas important în evoluţia bazelor de date, accentuând importanţa acestora.

Revista Română de Informatică şi Automatică, vol. 22, nr. 4, 2012 http://www.rria.ici.ro 43


BIBLIOGRAFIE
1. SEEGER, M.: Key-Value stores: a practical overview, Computer Science and Media Ultra-
Large-Sites SS09 Stuttgart, Germany, 21 Septembrie 2009.
2. http://nosql-database.org/
3. WU, SUZANNE: How Much Information IS There in the World. University of Southern
California, 10 Februarie 2011.
4. CATTELL, R.: Scalable SQL and NoSQL Data Stores, SIGMON Record, Decembrie 2010,
Vol 39, Nr 4.
5. ASLETT, M.: “MySQL vs. NoSQL and NewSQL- survey results”, 22 May 2012, 451
Research Group.
6. SHALOM, N.: The Common Principles Behind The NoSQL Alternatives, December 2009,–
Blog post of 2009-12-15. http://natishalom.typepad.com/nati_shaloms_blog/2009/12/the-
common-principlesbehind-the-nosql-alternatives.html.
7. WELSH, M., CULLER, D.; BREWER, E.: SEDA: an architecture for well conditioned,
scalable internet services. In: Proceedings of the eighteenth ACM Symposium on Operating
Systems Principles. New York, NY, USA : ACM, 2001 (SOSP ’01), p. 230–243.
8. STONEBRAKER, M.: The “NoSQL” Discussion has Nothing to Do With SQL. November
2009. – Blog post of 2009-11-04. http://cacm.acm.org/blogs/blog-cacm/50678-the-nosql-
discussion-has-nothing-to-do-withsql/fulltext
9. http://docs.mongodb.org/

44 Revista Română de Informatică şi Automatică, vol. 22, nr. 4, 2012 http://www.rria.ici.ro

Вам также может понравиться