PROIECT DE PRACTICA

Bine ati venit pe blogul meu!
Acesta este primul meu blog si in acelasi timp - un proiect de practica, cu tema: MongoDB.

NoSQL

NoSQL desemneaza o categorie de baza de date care nu sunt construite dupa modelul bazelor de date relationale (RDBMS, Relational Database Management Systems). O evolutie a bazelor de date este prezentata in figura urmatoare:
Bazele de date NoSQL s-au dezvoltat alături de companii de internet, cum ar fi Google, Amazon si Facebook. In cazul acestor companii, care trateaza  cantităţi imense de date, solutiile traditionale RDBMS nu au putut face fata. Sistemele de baze de date NoSQL au fost dezvoltate pentru a gestiona volume mari de date care nu urmează neapărat o schemă fixă. Datele sunt împărţite între diverse masini (din motive de performanţă şi limitări de spatiu), operatiile de JOIN nu pot fi utilizate, si nici nu exista garantii ACID (Atomicitate - fiecare tranzactie va fi "totul sau nimic", in sensul in care esecul unei parti a unei tranzactii conduce la esecul intreagii tranzactii, deci la numodificarea bazei de date, Consistenta - orice tranzactie va determina trecerea bazei de date dintr-o stare consistenta, valida in raport cu regulile definite (triggere, constrangeri, etc) intr-o alta stare tot consistenta, Izolare - executia concurenta a tranzactiilor va determina trecerea intr-o stare care poate fi obtinuta si prin executia secventiala a tranzactiilor respective, Durabilitate - tranzactiile finalizate (pentru care s-a dat commit) vor ramane asa si in cazul aparitiei unor probleme hard sau soft), care in cazul RDBMS-urilor garanteaza procesarea in siguranta a tranzactiilor.
Principalele caracteristici ale sistemelor NoSQL sunt:
  •  Nu folosesc SQL ca limbaj de interogare;
  •  Nu ofere garantii ACID complete: De obicei, eventual, numai coerenta este garantată pentru tranzacţiile limitate la un singur element de date. Acest lucru înseamnă că, dupa o perioadă suficient de lungă de timp în care nu au fost trimise modificările, toate update-urile (actualizarile) se vor propaga în cele din urmă prin intermediul sistemului;
  •  Arhitectura distribuita, toleranta la defecte.

Sistemele NoSQL folosesc o arhitectura distribuita, deci datele sunt pastrate  într-un mod redundant, pe mai multe servere. În acest fel, sistemul poate “scala” cu uşurinţă prin adăugarea de mai multe servere, iar caderea  unui server poate fi tolerată. Acest tip de bază de date de obicei, scaleaza pe orizontală şi este utilizat pentru a gestiona cantităţi mari de date, atunci când performantele în timp real sunt  mult mai importante decât consistenţa (ca in cazul indexarii unui număr mare de documente, a paginilor de pe site-urile webde mare trafic, sau a livrarii stream-urilor media).


Sistemele NoSQL de baze de date sunt adesea extrem de optimizate pentru operatii de regasire/adaugare şi oferă putine functionalitati legate de memorarea inregistrarilor (memorarea inregistrarilor sub forma unor perechi, cheie-valoare). Flexibilitatea run-time redusa (faţă de sistemele SQL) este compensată prin creşteri semnificative de performanţă şi scalabilitate pentru modele de anumite date.

Practic, sistemele de gestionare a bazelor de date NoSQL isi dovedesc utilitatea atunci când se lucrează cu o cantitate mare de date, iar natura datelor nu impune un model relaţional pentru structura de date. Datele ar putea fi structurate (relaţiile dintre elemente sunt mai putin importante), insa ceea ce contează in cazul sistemelor NoSQL este capacitatea de a stoca şi de a prelua cantitati mari de date: se pot stoca milioane de perechi cheie-valoare în una sau câteva tablouri asociative sau milioane de înregistrări de date. Acest lucru este deosebit de util pentru analizele statistice sau în timp real pentru liste tot mai mari de elemente (cum ar fi mesaje pe Twitter sau log-urile de pe serverele Internet pentru  grupuri mari de utilizatori).

Unele sisteme NoSQL promoveaza interfete foarte simple (tablouri associative sau perechi cheie-valoare). Altele, cum ar fi bazele de date native XML, ofera si posibiltatea de realizare a unor operatii de join, fie prin XQuery, fie prin CloudTPS.

In functie de modul de inregistrare a datelor, sistemele NoSQL pot fi impartite in:
  • Perechi cheie-valoare (Apache-Cassandra, Dynamo, Hibari, OpenLink Virtuoso, Riak, Apache River, Apache Hadoop, Tarantools, etc.);
  • Implementari BigTable (BigTable este un format de memorare proprietar (Google), compresat, de inalta performanta);
  • Baze de date orientate-document  (BaseX, Clusterpoint, Apache CouchDB, eXist, OrientDB, MavenDB, Simplestore, MongoDB);
  • Baze de date graf, in care relatiile sunt bine reprezentate sub forma unui graf (AllegroGraph, DEX, Neo4j, OWLIM).
Overview of NoSQL: Video YouTube

What is NoSQL? Video YouTube

NoSQL Landscape 1/5 - Video YouTube

2/5 - Video YouTube



Mai multe informatii despre NoSQL:
NoSQL, wikipedia: NoSQL
Lith, Adam; Jakob Mattson (2010). Investigating storage solutions for large data (PDF). Göteborg: Department of Computer Science and Engineering, Chalmers University of Technology. p. 70. Retrieved 12 May 2011. "Carlo Strozzi first used the term NoSQL in 1998 as a name for his open source relational database that did not offer a SQL interface[...]"
Baze de date NoSQL: BD NoSQL

Niciun comentariu:

Trimiteți un comentariu