NoSQL: avantaje și dezavantaje

De peste 25 de ani bazele de date relaționale (RDBMS) sunt modalitatea preferată pentru a stoca baze de date. Dar în ultima vreme bazele de date NoSQL, non-relaționale au câștigat din ce în ce mai mult teren. Ele au apărut din nevoia unor companii precum Google, Facebook sau Twitter de a manipula cantități imense de date cărora bazele de date tradiționale pur și simplu nu le pot face față. Așa că bazele de date NoSQL au fost proiectate pentru a stoca volume foarte mari de date în general fără o schemă fixă și partiționate pe multiple servere. În funcție de modul în care stochează informațiile bazele de date NoSQL se împart în: colecții de perechi cheie-valoare, implementări BigTable, colecții de documente și baze de date graf.

Dar care sunt factorii care au dus la dezvoltarea rapidă a tehnologiilor NoSQL în ultima vreme? În primul rând o nouă formă de trafic internet generată de Web 2.0 care face posibile variații considerabile în numărul de vizite pe care un site le primește. Creșterile explozive de trafic pot fi predictibile (Crăciun, evenimente sportive) sau inpredictibile (atacul de la 11/09/2001), iar site-uri precum Facebook pot aduce cantități imense de trafic “peste noapte” unui site dacă un articol devine viral. Al doilea motiv este acela că structura datelor dintr-o aplicație se modifică în timp ceea ce duce la un număr mare de tabele “cârpite” și adaptate să servească noile nevoi. Al treilea factor este accesibilitatea tehnologiei. Până recent doar firmele foarte mari care aveau nevoie absolută și permiteau să dezvolte o astfel de soluție, dar cum baze de date NoSQL există acum ca pachete open-source oricine își poate permite să le folosească.

Care sunt situațiile în care se recomandă folosirea unei soluții NoSQL?

  • baza de date tradițională nu mai poate fi scalată la un preț acceptabil;
  • generați foarte multe informații temporare cum ar fi: coșuri de cumpărături, chestionare incomplete, istorice de navigare, personalizări, etc;
  • baza de date a fost deja denormalizată pentru a îmbunătăți performanțele;
  • stocați cantități foarte mari de text și/sau imagini;
  • aveți nevoie să rulați interogări de date care nu implică doar simple relații ierarhice. de exemplu: “toți oamenii dintr-o rețea socială care nu au cumpărat anul acesta o carte dar au legătură cu o persoană care a cumpărat”;
  • tranzacțiile nu trebuie să fie perfect consistente; de exemplu un buton de “like”, dacă tranzacția eșuează nu este nici o problemă, utilizatorul cel mai probabil va mai apăsa o dată butonul.

Bineînțeles că nu este totul perfect și există și dezavantaje:

  • nu există un limbaj universal valabil. Bazele de date relaționale au SQL, care chiar dacă are multe extensii proprietare totuși utilizatorii știu la ce să se aștepte;
  • maturitatea – majoritatea sistemelor NoSQL încă sunt la primele variante sau încă în plină dezvoltare;
  • suport – fiind în general proiecte open source, iar firmele ce oferă suport sunt mici, de multe ori startup-uri și poate nu oferă suficientă credibilitate;
  • disponibilitatea dezvoltatorilor – evident fiind o tehnologie nouă, comparativ cu bazele de date tradiționale sunt mult mai puțini dezvoltatori software NoSQL.

Cele mai populare baze de date NoSQL în acest moment sunt: CassandraMongodbCouchDBRedisRiakMembaseNeo4j și HBase. Puteți găsi o scurtă comparație a acestor sisteme aici.

În final vă prezint o serie de cărți care vă vor ajuta să faceți mai ușor tranziția către bazele de date NoSQL:

MongoDB

CouchDB

Altele

 

Surse: Wikipedia, TechRepublic și ToughWorks

Author: bogdan

Software developer, fotograf amator, înnebunit după science-fiction, în special space opera.

2 thoughts on “NoSQL: avantaje și dezavantaje”

  1. *cu mentiunea ca este de notorietate faptul ca facebook foloseste, inca, mysql.

  2. Facebook folosește foarte multe componente dezvoltate in-house. Da, încă folosesc mysql pentru anumite funcționalități, dar sub vreo 2 layere de caching. Până și codul php este optimizat și compilat de un compilator dezvoltat de ei special, dar din păcate e capabil să lucreze doar cu un subset php.

Leave a Reply

Your email address will not be published. Required fields are marked *