Miscarea "NoSQL" in contextul Web-ului social/semantic

7

Click here to load reader

description

"Miscarea" NoSQL a aparut ca o consecinta a evolutiei Web-ului social/semantic, din necesitatea unor aplicatii precum retelele sociale de a rezolva problema scalabilitatii. Diferitele abordari implica e renuntarea la proprietatile oferite de bazele de date traditionale, e regandirea sis- temelor relationale de la cap la coada.

Transcript of Miscarea "NoSQL" in contextul Web-ului social/semantic

Page 1: Miscarea "NoSQL" in contextul Web-ului social/semantic

“Miscarea” NoSQL ın contextul Web-uluisocial/semantic

Elena-Oana Tabaranu si Anna-Maria Metzak

Facultatea de InformaticaUniversitatea “Alexandru I. Cuza” Iasi

{elena.tabaranu,anna.metzak}@info.uaic.ro

Abstract. “Miscarea” NoSQL a aparut ca o consecinta a evolutiei Web-ului social/semantic, din necesitatea unor aplicatii precum retelele so-ciale de a rezolva problema scalabilitatii. Diferitele abordari implicafie renuntarea la proprietatile oferite de bazele de date traditionale, fieregandirea sistemelor relationale de la cap la coada.

Key words: NoSQL, Web social, sisteme distribuite, scalabiliatate, Face-book, Cassandra, CouchDB, Hadoop, HiperTable

1 Introducere

Termenul NoSQL refera o suita de noi tehnologii pentru baze de date ce nuurmeaza modelul relational si nu ofera garantiile ACID 1.

La sfarsitul anilor ’90 si ınceputul anilor ’00 siturile web produceau continutpentru un utilizator ce se multumea cu simplul rol de consumator, iar modelelede acces la date pentru acest tip de aplicatii au devenit foarte raspandite.

In contextul Web-ului social, utilizatorul a devenit nu doar consumator decontinut, ci mai ales producator de continut. Acest lucru a avut drept consecintao redirectionare a arhitecturii aplicatiilor dinspre cele orientate spre citire masivade date spre cele de citire/scriere si mai apoi spre cele de scriere masiva de date.Astfel, a aparut necesitatea de a schimba modul de stocare si regasire a datelorpe Web.

Majoritatea a ıncercat sa rezolve acesta problema renuntand la proprietatileoferite de bazele de date traditionale si ıncorporand mai multa logica cu privire labaza de date ın cadrul aplicatiei respective. Altii au regandit sistemele relationalede la cap la coada, cu diferente ın functie de modelul de la care au plecat.

2 “Miscarea” NoSQL

“Miscarea” NoSql a aparut din necesitatea scalarii unor sisteme pentru careun model relational cu cele mai bune resurse hardware, optimizat fiind pentru1 Abreviere de la Atomicitate, Consistenta, Izolare, Durabilitate - proprietati ale unei

baze de date ce garanteaza procesarea tranzactiilor.

Page 2: Miscarea "NoSQL" in contextul Web-ului social/semantic

2 Elena-Oana Tabaranu, Anna-Maria Metzak

acestea, nu face fata numeroaselor operatii de actualizare combinate cu cele dejoin.

In contextul unor aplicatii mari ıntr-adevar scalabile, bazele de date relatio-nale sunt mari consumatoare de timp. Datele normalizate, join-urile, tranzactiileACID sunt definite ca anti-modelele relativ la scalabilitate. Partionarea nu re-zolva aceste probleme prin divizarea datelor ın bucati mai mici. In realitate ceamai mare problema a partitionarii bazelor de date relationale este ca acestea nuau fost proiectate ın aceasta directie, iar multe dintre beneficiile pentru care aufost construite initial sunt ınlaturate.

Partitionarea nu poate fi privita ca o solutie reala deoarece introducerea saın logica unei aplicatii implica problema netriviala de a alipi datele din diversetabele. Daca exista posibilitatea scalarii modelului pe verticala, aceasta este ceamai buna abordare. Chiar ın cazul scalarii datelor pe verticala, migrarea uneibaze de date MySQL foarte mare poate dura foarte mult. Acesta e unul dinmotivele pentru care unele companii prefera, atunci cand aplicatiile lor permitacest lucru, baze de date ce nu utilzeaza o schema.

Scalarea pe orizontala2 a unei aplicatii sacrifica normalizarea, join-urile, tran-zactiile ACID si nu trebuie neaparat realizata cu sisteme RDBMS3, totul de-pinde de aplicatie si de necesitatile de scalare a operatiilor de scriere. Pentruscalarea operatiilor de citire exista posibilitatea gestionarii unor subordonaticare sa replice ın timp real toate cererile catre baza de date master si ınfiintareaunui router proxy ıntre clienti si sistem.

Aplicatii aliniate Web-ului social/semantic precum retelele sociale au ın-tampinat probleme precum:

– Toate datele trebuie sa fie disponibile ın orice moment.– Partitionarea unui astfel de sistem este dificila deoarece toata lumea este

conectata.– Datele trebuie pastrate ın cache-ul RAM pentru a fi accesate cat mai rapid.– Numarul exponential de legaturi dintre entitatile sistemului implica necesi-

tatea scalarii la un nivel superior.– Postarile utilizatorilor cu un numar mare de prieteni sunt problematice

deoarece graful social trebuie traversat cel putin o data la fiecare postarepentru a determina cine trebuie sa primeasca actualizarea respectiva.

– Parcurgerea unor grafuri foarte mari ın timp real, precum si actualizareapostarilor sunt operatii costisitoare.

Aplicatia web Facebook a fost printre primele proiecte ce s-au confruntat cuastfel de probleme de scalabiliate. Dezvoltarea unei retele sociale pentru sute demilioane de utilizatori slab conectati s-a dovedit a fi un lucru nu foarte usor.Folosind NoSQL, Facebook a reusit sa depaseasca problema scalarii masive.

Un alt exemplu de retea sociala ce s-a confruntat cu probleme de scalabilitateeste Digg. Un utilizator al acestei aplicatii web are ın medie 100 de prieteni2 Adaugarea unui nou nod la un sistem, de exemplu un nou calculator ıntr-un sistem

distribuit. Aplicatii directe ın analiza seismica, ın trecut doar de supercalculatoare3 Abreviere de la termenii din limba engleza Relational Database Management System.

Se traduce prin sisteme relationale management al bazelor de date.

Page 3: Miscarea "NoSQL" in contextul Web-ului social/semantic

“Miscarea” NoSQL ın contextul Web-ului social/semantic 3

“urmaritori” responsabili cu 300 de milioane de postari zilnice, 3000 de operatiide scriere pe secunda, 7GB de date noi stocate ın fiecare zi si 5TB de date“plimbate” ıntre 50-60 de servere.

Spre deosebire de aplicatiile obisnuite, retelele sociale implica o complexi-tate mult mai mare din punct de vedere al scalabilitatii, iar tehnologia NoSQLpropune o solutie pentru a rezolva aceasta problema.

Tehnologia NoSQL este suficient de matura pentru a fi utilizata ın practica,dar sunt putine aplicatiile ce au nevoie de scalabiliatete masiva. In majoritateacazurilor modelul relational traditional este suficient.

Marele entuziasm de care se bucura miscarea NoSQL se datoreaza divergen-telor de opinii cu privire la produsele bazate pe acesta tehnologie. Lucru foartediferit fata de RDBMS, care a ınceput cu un unic pivot denumit SQL capabilsa creeze randuri si coloane de date bazate pe teoria matematica a operatiilorcu multimi. Astfel, fiecare aplicatie a adoptat aceeasi arhitectura de stocare adatelor, indiferent de modul ın care acestea urmau sa fie procesate.

3 Proiecte bazate pe tehnologia NoSQL

3.1 Cassandra

Cassandra este un sistem distribuit open source de management al datelor. Afost dezvoltat initial de Facebook pentru stocarea unor cantitati mari de date.Jeff Hammerbacher, cel care conducea echipa Facebook la momentul dezvoltariiacestui proiect, l-a descris ca un model de date bazat pe structura BigTable4 acelor de la Google, cu o infrastructura asemanatoare cu Dynamo 5 a celor de laAmazon.

Proiectul poate fi gandit ca un imens tablou cu patru sau cinci dimensiuni,fiecare dimensiune a matricei are atasat un index bazat pe cheile stocate la acelnivel. Puterea reala vine de la nivelul optional, al cincilea ın tabloul asociativ,care poate transforma o arhitectura simpla, bazata pe uple cheie-valoare, ıntr-oarhitectura de liste sortate, bazata pe un index ce tine de specificatiile utiliza-torului. Al cincilea nivel este numit SuperColumn, si este unul din punctele forteale acestui proiect.

Principale probleme care au dus la dezvoltarea sistemului Cassandra:

– multitudine de date: copii ale mesajelor, indici inversi pentru mesaje, datestocate per utilizator;

4 Sistem patentat de baze de date ce ofera un grad sporit de performanta si compresie,construit cu sistemul de fisiere Google (GFS). Nu este disponibil ın afara companiei,desi Google ofera acces la el prin intermediul Google App Engine. Folosit de aplicatiiprecum MapReduce ce actualizeaza datele din Google Reader, Google Maps, GoogleBook Search, Google Earth, Blogger.com, Youtube, etc.

5 Sistem patentat de gestiune a datelor structurate sub forma de perechi cheie-valoare.Are atat proprietatile unei baze de date, cat si cele ale unei tabele hash distribuite.Nu este expus direct sub forma unui serviciu web, dar este folosit ın cadrul unorservicii web oferite de Amazon.

Page 4: Miscarea "NoSQL" in contextul Web-ului social/semantic

4 Elena-Oana Tabaranu, Anna-Maria Metzak

– numarul mare de cereri de actualizare a informatiilor;– lipsa unei solutii performante pe piata care sa ıntruneasca cerintele de mai

sus.

Cassandra nu are puncte unice de esec si poate scala de la o masina la catevamii de masini grupate ın diferite centre de date. Nu are un punct central, iaroricate date pot fi scrise la oricare dintre nodurile din cluster si, de asemenea,pot fi citite de la orice alt nod din cluster.

Acest proiect pune la dispozitie posibilitatea alegerii caii cea mai potrivitadintre consistenta si disponbilitatea datelor, ın functie de particularitatile aplica-tiei si ale domeniului problema. De asemenea, ofera garantia faptului ca daca unnod va cadea, un alt nod va fi folosit pentru a-l ınlocui fara probleme.

Modelul de date propus de Cassandra este destul de bogat pentru a spri-jini o gama larga de aplicatii: suporta ın acelasi timp scalabilitate extrema sidisponibilitate ridicata, trasaturi pe care doar cateva alte baze de date le potoferi. Acestea sunt disponibile mentinand o latenta mai mica decat a altor solutiidisponibile.

Cassandra poate stoca date de pana la 50GB pe disc, ın doar 0.12 milise-cunde, mai rapid de 2500 de ori decat MySQL.

Exemplu de utilizare a unei librarii client pentru Cassandra folosind Java.

KeySpace ks = cl.getKeySpace("Keyspace1") ;

// insert valueColumnPath cp = new ColumnPath("Standard1" , null,"testInsertAndGetAndRemove".getBytes("utf-8"));for(int i = 0 ; i < 100 ; i++){

ks.insert("testInsertAndGetAndRemove_"+i, cp ,("testInsertAndGetAndRemove_value_"+i).getBytes("utf-8"));}

//get valuefor(int i = 0 ; i < 100 ; i++){

Column col = ks.getColumn("testInsertAndGetAndRemove_"+i,cp);

String value = new String(col.getValue(),"utf-8") ;assertTrue( value.equals("testInsertAndGetAndRemove_value_"

+i) ) ;}

//remove valuefor(int i = 0 ; i < 100 ; i++){

ks.remove("testInsertAndGetAndRemove_"+i, cp);}

try{

Page 5: Miscarea "NoSQL" in contextul Web-ului social/semantic

“Miscarea” NoSQL ın contextul Web-ului social/semantic 5

ks.remove("testInsertAndGetAndRemove_not_exist", cp);}catch(Exception e){

fail("remove not exist row should not throw exceptions");}

//get already removed valuefor(int i = 0 ; i < 100 ; i++){try{Column col = ks.getColumn("testInsertAndGetAndRemove_"+i, cp);fail("the value should already being deleted");

}catch(NotFoundException e){

}catch(Exception e){fail("NotFoundException:" + e.toString() );

}}

pool.releaseClient(cl) ;pool.close() ;

3.2 CouchDB

Apache CouchDB, denumit ın mod obisnuit CouchDB, este o baza de date orien-tata document, gratuita si open-source, scrisa ın limbajul de programare Erlang.Sistemul este proiectat pentru a favoriza replicarea locala si pentru a fi scalat pevericala pe o gama larga de dispozitive.

CouchDB nu este un sistem de gestiune a bazelor de date relationale, iarın loc de a stoca datele pe linii si coloane, baza de date valorifica o colectiede documente JSON. Documentele dintr-o colectie nu trebuie sa ımpartaseascao schema, dar pastreaza abilitati de interogare prin intermediul vizualizarilor.Vizualizarile sunt definite cu functii agregat si sunt calculate ın paralel, la fel caMapReduce.

Vizualizarile, ın general, sunt stocate ın baza de date, iar indecsii lor suntactualizati continuu, chiar daca interogarile introduc vizualizari temporare.

CouchDB sustine un sistem de vizualizari folosind servere soclu externe, pre-cum si un protocol bazat pe JSON. Drept consecinta, serverele de vizualizariofera suport pentru mai multe limbi.

CouchDB expune un API HTTP bazat pe REST, iar un numar mare declienti sunt deja disponibili. In plus, o arhitectura plug-in permite utilizareadiferitelor limbaje de programare pentru serverul de vizualizari, precum JavaScriptın mod implicit, PHP, Ruby, Python si Erlang. Alte limbaje sunt usor de adaugat.

CouchDB a fost acceptat ın incubatorul Apache ın februarie 2008 si a devenitproiect ın noiembrie 2008. In ciuda numarul redus al versiunii (0.10), acesta estedeja ın uz ın cadrul mai multor proiecte software si situri web. De exemplu,Ubuntu foloste aceasta tehnologie pentru a sincroniza adresa si datele de marcaj.

Page 6: Miscarea "NoSQL" in contextul Web-ului social/semantic

6 Elena-Oana Tabaranu, Anna-Maria Metzak

3.3 Apache Hadoop

Proiectul Hadoop al celor de la Apache este un framework Java open source subo liceta publica care suporta aplicatii distribuite ce lucreaza intensiv cu date.Acesta permite aplicatiilor sa lucreze cu mii de noduri si peta-octeti de date.Hadoop a fost inspirat de lucrarile despre MapReduce si Google File System(GFS) a celor de la Google.

Hadoop a fos creat de catre Doug Cutting si a fost dezvoltat initial pentru asuporta distributia pentru motoul de cautare Nutch.

Hadoop include urmatorele subproiecte:

– Hadoop Common: utilitarele de baza ce suporta celelale subproiecte Hadoop.– Avro: un sistem de serializare al datelor ce pune la dispozitie integrare di-

namica cu limbaje de scripting.– Chukwa: un sistem de colectare de date pentru gestionarea de sisteme dis-

tribuite de mari dimensiuni.– HBase: O baza de date distribuita si scalabila ce suporta stocarea structurata

a datelor pentru tabele mari.– HDFS: un sistem distribuit de fisiere care ofera acces nelimitat la datele

aplicatiei.– Hive: o infrastructura de stocare a datelor care ofera o sumarizare a datelor

si interogare ad-hoc.– MapReduce: un framework pentru procesarea distribuita a seturilor mari de

date pe clustere.– Pig: limbaj de nivel ınalt pentru flux de date si framework de executie pentru

calcul paralel.– ZooKeeper: un serviciu performant de coordonare pentru applicatii distribuite.

Hadoop este un proiect Apache de cel mai ınalt nivel, fiind construit siutilizat de o comunitate din ıntreaga lume. Yahoo! a fost cel mai mare con-tribuitor la proiect si utilizeaza Hadoop ın mod constant ın cautarea pe web sipublicitate. IBM si Google au anuntat intentia de a utiliza Hadoop pentru asustine cursuri universitare de programare distribuita. Pe langa Yahoo!, multealte organizatii folosesc Hadoop pentru a rula calcule distrbuite de mari dimen-siuni. Printre aceste se numara EHarmony, Facebook, Freebase, Fox InteractiveMedia, LinkedIn, Meebo, The New York Times.

3.4 Hypertable

Hypertable este un sistem distribuit de stocare a datelor, proiectat pentru asprijini aplicatii care necesita performanta maxima, scalabilitate si fiabilitate.

Hypertable va fi deosebit de valoros pentru orice organizatie care are nevoiesa gestioneze date ce evolueaza rapid pentru a sustine aplicatii ın timp real.Modelat dupa bine cunoscutul proiect BigTable al celor de la Google, Hypertableeste conceput pentru a gestiona stocarea si prelucrarea de informatii pe un grupmare de servere, oferind astfel rezistenta la esecurile masinii sau a componentelor.

Hypertable este un proiect open source folosit de catre motorul de cautarelocala Zvents Inc. petru a scrie 1 miliard de celule de date pe zi.

Page 7: Miscarea "NoSQL" in contextul Web-ului social/semantic

“Miscarea” NoSQL ın contextul Web-ului social/semantic 7

4 Concluzii

Sistemele ce ofera suport pentru NoSQL functioneaza ın mod diferit, dar con-ceptul de baza al acestei tehnologii ramane acelasi: ımbunatatirea scalabilitatii siperformantei folosind modele de baze de date ce nu ofera toate functionalitatileunui sistem relational, dar ısi mentin utilitatea. Similar cu ınceputurile MySQL,aceasta tehnologie a renuntat la tranzactii ın favoarea unui castig major deperformanta.

5 Bibliografie

1. Hiper Table, http://www.hypertable.org/2. ***, http://www.computerworld.com/s/article/9135086/No_to_SQL_Anti_

database_movement_gains_steam_

3. ***, http://debasishg.blogspot.com/2009/11/nosql-movement-excited-with-coexistence.html

4. ***, http://www.eflorenzano.com/blog/post/my-thoughts-nosql/5. ***, http://www.brightyellowcow.com/blog/Evaluating-the-API-of-Cassandra-BigTable-.

html

6. Cassandra Wiki, http://wiki.apache.org/cassandra/ClientExamples7. Apache Hadoop, http://hadoop.apache.org/