Download - NoSql

Transcript
Page 1: NoSql

Mişcarea NoSQL şi Web-ul social/semantic

Damian T. Sorin-Alexandru, Ionel R. Ancuţa

Abstract. Mişcarea NoSQL, deşi poarta de mai puţin de un an aceasta denumire, este o alternativă la tradiţionalele baze de date relaţional şi se găseşte în completarea acestora, atât la nivelul specificării datelor cât şi la nivelul beneficiilor pe care le aduce. Marile companii producătoare de software sau care îşi expun serviciile prin intermediul internetului au dezvoltat în ultima decadă proiecte pilot, opensource şi nu numai care sa vină în întâmpinarea nevoilor şi cerinţelor utilizatorilor de astăzi - de a avea acces oricând şi în bune condiţii la serviciile pe care le doresc. Renunţând la ideea ca bazele de date relaţionale oferă exclusiv toate soluţiile de care o aplicaţie de dimensiuni mari are nevoie companiile în căutare de alternative au găsit completarea în exprimările NoSQL. Aflată în plină ascensiune, această mişcare poate revoluţiona web-ul social şi semantic.

Keywords: web social, web semantic, NoSQL, baze de date, eventualy consistent

1 Introducere

Sub denumirea de NoSQL se adună colecţiile de date non-relaţionale care de cele mai multe ori iau naştere din baze de date relaţionale. Primul termen legat de bazele de date relaţionale şi noţiunea care cuprinde cel mai bine esenţa lor este ACID (atomicitate, consistenţă, izolare, durabilitate). La polul opus, colecţiile de date NoSQL nu sunt constrânse de scheme fixe precum cele ale bazelor de date. Ideea de NoSQL a luat fiinţă în contextul unei nevoi de scalare pe orizontală. Wikipedia [5] prezintă scalabilitatea pe orizontală ca o tendinţă a arhitecturilor de astăzi cu efect direct asupra bazelor de date, ideea de scalare orizontală o implică pe cea de sistem distribuit. Adam Wiggins [4] prezintă problema scalabilităţii bazelor de date SQL şi concluzionează că singura metodă de rezolvare, după ani în care atât programatorii cât şi administratorii de sisteme au încercat soluţii de moment, este redefinirea.

2 Influenţe asupra Web-ului social/semantic

Influenţa mişcării NoSQL asupra web-ului semantic sau a webului sociale se observă la o simplă enumerare a companiilor care s-au afiliat. Google foloseşte BigTable pentru mare parte din aplicaţiile pe care le pune la dispoziţia utilizatorilor: Google Earth, Google Reader, Google Maps, Google Code, YouTube.

Page 2: NoSql

2 Damian T. Sorin-Alexandru, Ionel R. Ancuţa

Amazon, unul dintre cei mai mari operatori de e-commerce din lume foloseşte Dynamo, o colecţie de perechi cheie-valoare cu o rată foarte mare de disponibilitate[3], iar pentru a atinge acest obiectiv renunţă la conceptul de consistenţă, esenţial pentru sistemele de baze de date relaţionale.

2.1.1 LinkedIn – Proiectul Voldemort

Proiectul Voldemort de la LinkedIn este inspirat din Dynamo, este de asemeni o tabelă hash de dimensiuni foarte mari, distribuită, persistentă. În cazul în care un server cade, disponibilitatea întregii aplicaţii nu este compromisă deoarece nodurile care compun tabela nu depind unele de altele, informaţiile sunt replicate şi distribuite. Performanţele unui nor pot ajunge la 10-20 mii pe secundă. LinkedIn a reuşit să mute unele aplicaţii (de exemplu „Who has viewed my profile”) care au nevoie de sute de milioane de citiri-scrieri pe secundă pe sistemul Voldemort şi să obţină timpi de răspuns de sub 10 ms, valoare care anterior era peste 400 ms [6]. Deşi iniţial au pornit cu o bază de date relaţională de dimensiuni mari pe care apoi au partiţionat-o, aceasta nu a putut face faţă aplicaţiilor care implicau atât un număr mare de citiri cât şi un număr mare de scrieri simultane. LinkedIn este un exponent al web-ului sociale şi afilierea sa la mişcarea NoSQL prin proiectul Voldemort este un vot de încredere pentru această mişcare.Proiectul Voldemort nu se încadrează în web-ul semantic dar ar putea sa rezolve problemele de performanţă şi scalabilitate, păstrarea şi accesarea unui volum mare de informaţii.

2.1.2 Facebook - Cassandra

Facebook este un alt reprezentant al web-ului social care şi-a canalizat eforturile ţn direcţia mişcării NoSQL. Facebook a avut nevoie de o solutie de pastrare a indecşilor care sa scaleze eficient din punct de vedere a costurilor. Astfel a aparut Cassandra, un sistem distribuit de stocare şi indexare a datelor structurate. Cassandra a fost definit ca un hibrid între modelul BigTable şi infrastructura de la Amazon, Dynamo. In Cassandra fiecare instanta are o singura tabela in care randurile sunt identificate unic iar coloanele sunt grupate in familii de coloane. Datele sunt distribuite in noduri redundante care pot fi replicate inclusiv in cadrul mai multor datacenter-e. Primul deployment de Cassandra a fost pentru sistemul de Search din Inbox-urile utilizatorilor Facebook unde s-au obtinut rezultate foarte bune cu indecşi de peste 120TB intr-un cluster cu peste 600 de procesoare[9].

2.1.3 Apache – HBase

HBase are ca punct de plecare BigTable, modelul susţinut de Google, dar este scris în Java şi beneficiază de suportul fundaţiei Apache. Scopul proiectului a fost să stocheze tabele foarte mari. Deşi la capitolul scalabilitate se comportă foarte bine, la acest moment nu are performanţe de viteză.

Page 3: NoSql

Mişcarea NoSQL şi Web-ul social/semantic 3

Heart[10] este un RDF store distribuit care foloseşte HBase pentru stocarea triplelor şi Hadoop pentru procesare. Deşi este în stadiu de propunere, este o verigă care leagă mişcarea NoSQL de web-ul semantic. Apariţia proiectului face plauzibilă stocarea şi procesarea datelor în format RDF şi expunerea lor prind terminale SPARQL.Componenta Heart Data Loader (HDL) citeşte date dintr-un fişier în format RDF şi le organizează într-o tabelă HBase în aşa fel încât să fie eficient procesate.

3 Studii de caz

3.1 Google – BigTable

Pentru administrarea datelor structurate, Google foloseşte un sistem de stocare distribuit, numit BigTable. Numeroase proiecte Google îşi stochează aici datele: indexarea web, Google Earth, YouTube sau Google Finance sunt doar câteva exemple. Aceste aplicaţii diferă în natură şi au nevoi diverse fie că este vorba de dimensiunea datelor sau de viteza cu care se doreşte regăsirea lor. BigTable oferă flexibilitate şi performanţă. Nu suportă un model relaţional dar pune la dispoziţia clienţilor un model care permite control dinamic asupra datelor şi formatului acestora. Indexarea datelor cu şiruri şi coloane ale căror nume pot fi orice şir de caractere, tratarea datelor ca simple şiruri de caractere şi posibilitatea clienţilor de a controla datele din schemă fac din BigTable un suport fantastic pentru aproape orice aplicaţie de orice dimensiune. BigTable poate fi folosit împreună cu MapReduce, framework-ul Google pentru calcul paralel.

3.1.1 Google Analytics

Google Analytics păstrează informaţiile despre sesiunea unui utilizator ce vizitează un site într-o singură linie BigTable. Tabela care păstrează aceste informaţii despre toţi utilizatorii este deaproximativ 200 TB. Tabela ce cuprinde statistici este de aproximativ 20 TB şi este actualizată din tabela anterioară la inervale regulate de timp.Aplicaţia se leagă de conceptul de web social prin statisticile pe care le oferă sau şabloanele ce pot fi extrase. Provocările web-ului semantic la nivel de stocare şi procesare peste un volum foarte mare de date s-ar reduce, dupa modelul Google Analytics şi BigTable, la găsirea unor denumiri care să rezolve problema stocării comprimate.

Page 4: NoSql

4 Damian T. Sorin-Alexandru, Ionel R. Ancuţa

3.1.2 Google Earth

Google Earth are o serie de servicii care oferă utilizatorilor acces la imagini de rezoluţie foarte înaltă cu suprafaţa Pământului. Aici se folosesc două tabele: una de preprocesare şi una cu imaginile propriu-zise. Fiecare rând din tabele corespunde unui segment geografic; rândurile sunt denumite astfel încât să asigure ca segmente geografice adiacente sunt stocate unul lângă celălalt.Aplicaţie web 2.0 în natură, Google Earth şi modelul său de stocare pot constitui un punct de plecare pentru specificarea datelor web-ului semantic.

3.1.3 Căutarea personalizată

În cazul căutării personalizate, pentru fiecare utilizator, acţiunile sale sunt stocate într-un singur rând dintr-o tabelă. Tabela este partajată de mai multe echipe Google şi a rezultat o tabelă cu mai multe familii de coloane (principiul BigTable presupune existenţa unui număr controlabil de familii de coloane, de ordinul sutelor şi în cadrul lor, a oricâtor coloane).Fiind folosită foarte intens şi fiind necesară o latenţă foarte mică, această tabelă este replicată pe multe clustere.Web-ul social are în centrul preocupărilor sale utizatorul şi satisfacerea nevoilor acestuia. Căutarea personalizată ţine cont de istoricul acţiunilor şi preferinţelor unui utilizator contruind pentru acesta un profil transparent.

3.2 Amazon – Dynamo

Dynamo este o colecţie de perechi cheie-valoare, este distribuit, versionat, partiţionat şi replicat. Nu este expus ca serviciu web dar este parte integrantă din Amazon Web Services, precum S3.Ca sistem de e-commerce, Amazon a dezvoltat de-a lungul timpului soluţii de business intelligence pentru a-şi promova produsele. Asemeni căutării personalizate de la Google, Amazon ia în considerare „profilul” utilizatorului pentru a face sugestii inteligente. Pe lângă informaţiile despre produse şi utilizatori, Amazon corelează utilizatorul de informaţiile ce ar putea prezenta interes pentru acesta. Soluţia SQL are ca avantaje consistenţa dar aduce ca principal dezavantaj disponibilitatea. Teorema lui Brewer se aplică în cazul Amazon astfel: s-a optat pentru disponibilitate (availability din „CAP”) ţn defavoarea consistenţei (C din ACID).Procesarea unui număr mare de triple necesită un efor computaţional semnificativ, iar în cazul Amazon aceasta s-ar traduce în pierderi financiare. Reprezentarea informaţiilor în format RDF şi asocierea produselor cu eventuale concepte definite extern nu pare a fi una din priorităţile companiei la momentul acesta. Totuşi, o colecţie stabilă şi flexibilă cum este Dynamo ar putea propulsa Amazon în universul web-ului semantic.

Page 5: NoSql

Mişcarea NoSQL şi Web-ul social/semantic 5

4 Concluzii

Mişcarea NoSQL nu susţine ca SQL sau bazele de date relaţionale ar fi elemente negative, nici că web-ul social ar avea de suferit de pe urma lor. Pentru 99.8% din site-urile disponibile, bazele de date relaţionale sunt suficiente. Pentru câteva companii mari, ale căror aplicaţii se apropie de statutul de aplicaţii gigant, alternativa la bazele de date relaţionale, disponibilitatea în defavoarea consistenţei şi sisteme care nu deţin puncte slabe (single point of failure) a fost îndelung căutată şi perfecţionată.Probabil că web-ul social de dimensiuni mici-medii, aplicaţiile în care utilizatorul poate lăsa feedback sau în care poate interacţiona cu un număr nu foarte amre de alţi useri este potrivit SQL. Totuşi, web-ul semantic şi cel social de dimensiuni foarte mari au găsit în mişcarea NoSQL o soluţie. Pot stoca şi expune cantităţi impresionante de date, le pot interoga şi pot procesa rezultatele. Iar un astfel de beneficiu nu ar fi fost posibil din partea bazelor de date relaţionale, fie ele cuprinse în sisteme distribuite şi consistente.

5 Referinţe

1. http://www.allthingsdistributed.com/2008/12/eventually_consistent.html

2. http://labs.google.com/papers/bigtable.html

3. http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf

4. http://adam.blog.heroku.com/past/2009/7/6/sql_databases_dont_scale/

5. http://en.wikipedia.org/wiki/NoSQL

6. http://blog.linkedin.com/2009/03/20/project-voldemort-scaling-simple-storage-at- linkedin/

7. http://project-voldemort.com/

8. http://blog.linkedin.com/2009/03/20/project-voldemort-scaling-simple-storage-at- linkedin/

9. http://www.facebook.com/note.php?note_id=24413138919

10. http://wiki.apache.org/incubator/HeartProposal