NOUA GENERAŢIE DE BAZE DE DATE NoSQL
Elena-Geanina Ularu
ularugeanina@yahoo.com
Institutul de Studii Doctorale Bucureşti
Florina Puican
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.
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 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ă:
- Abilitatea de a scala orizontal pe mai multe servere;
- Abilitatea de a replica şi distribui datele pe mai multe servere;
- CLI (call level interface) caracterizat prin simplitate (în contrast cu SQL binding);
- Un model concurenţial mai slab decat modelul relaţional (ACID);
- Utilizarea eficientă a indexării distribuite şi a RAM pentru o stocare eficientă;
- 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 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.
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.
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.
Bibliografie
- SEEGER, M.:Key-Value stores: a practical overview, Computer Science and Media Ultra-Large-Sites SS09 Stuttgart, Germany, 21 Septembrie 2009.
- http://nosql-database.org/
- WU, Suzanne: How Much Information IS There in the World. University of Southern California, 10 Februarie 2011.
- CATTELL, R.: Scalable SQL and NoSQL Data Stores, SIGMON Record, Decembrie 2010, Vol 39, Nr 4.
- Aslett, M.: “MySQL vs. NoSQL and NewSQL- survey results”, 22 May 2012, 451 Research Group.
- 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.
- 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.
- 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
- http://docs.mongodb.org/
This work is licensed under a Creative Commons Attribution 4.0 International License.