Sunteți pe pagina 1din 13

Universitatea de Stat din Moldova Facultatea de Matematic i Informatic Specialitatea Baze de Date i Cunotine

Disciplina:

Baze da date i Tehnologii Java

Referat
Tema:

Baze de date NO SQL

Chiinu, 2012

CUPRINS Introducere. ................................................................................................................3 1.1. BigTable ...........................................................................................................5 1.2. Dynamo ............................................................................................................6 1.3. Cassandra ..........................................................................................................7 1.4. MongoDB .........................................................................................................9 Istorie ......................................................................................................................9 Caracteristici principale ..........................................................................................9 Instalare MongoDB...............................................................................................11 Concluzie..................................................................................................................12 Bibliografie ..............................................................................................................13

Introducere.
NoSQL desemneaz o categorie de baz de date care nu sunt construite dup modelul bazelor de date relaionale (RDBMS, Relational Database Management Systems). O evoluie a bazelor de date este prezentat n figura urmtoare:

Bazele de date NoSQL s-au dezvoltat alturi de companii de internet, cum ar fi Google, Amazon i Facebook. n cazul acestor companii, care trateaz cantiti imense de date, soluiile tradiionale RDBMS nu au putut face fa. Sistemele de baze de date NoSQL au fost dezvoltate pentru a gestiona volume mari de date care nu urmeaz neaprat o schem fix. Datele sunt mprite ntre diverse maini (din motive de performan i limitri de spatiu), operaiile de JOIN nu pot fi utilizate, si nici nu exist garanii ACID (Atomicitate - fiecare tranzacie va fi "totul sau nimic", n sensul n care eecul unei pri a unei tranzacii conduce la eecul ntregii tranzacii, deci la nu modificarea bazei de date, Consistena - orice tranzacie va determina trecerea bazei de date dintr-o stare consistent, valid n raport cu regulile definite (triggere, constrangeri, etc) ntr-o alt stare tot consistent, Izolare - execuia concurent a tranzaciilor va determina trecerea ntr-o stare care poate fi obinut i prin execuia secvenial a tranzaciilor respective, Durabilitate - tranzaciile finalizate (pentru care s-a dat commit) vor ramne aa i n cazul apariiei unor probleme hard sau soft), care n cazul RDBMS-urilor garanteaz procesarea n siguran a tranzaciilor. NoSQL este un sistem de management a bazelor de date rapid, portabil, fr limite arbitrare, altele dect memoria i viteza procesorului ce ruleaz i interacioneaz cu SO UNIX. Folo3

sete paradigma operator flux. Exist un numr de operatori fiecare executnd o funcie unic asupra datelor. Fluxul este furnizat de mecanismul de redirectare a intrrilor i ieirilor din UNIX. Fiecare operator proceseaz datele dup care le parseaz urmtorului operator prin pipe, foarte eficient deoarece pipe-urile n UNIX sunt implimentate n memorie. NoSql este compatibil cu modelul relaional, ns NoSql nu vine cu nici o garanie n ceea ce privete consistena. Exist un numr surprinztor de sisteme de NoSql disponibile astzi. Dintre proiectele open-source amintim: Cassandra, Chordlles, CouchDB, DB4O, GTM, Hbase, Hipertable, Memcachedb Mnesia, MongoDB, Neo4j, Project_Voldemort, Redis_(DBMS).

1.1. BigTable
BigTable este un sistem de stocare distribuit pentru date structurate, este folosit n servicii servicii Google precum indexing, Google Earth i Google Finance. O structur de date BigTable este un Map sortat, distribuit, persistent i multidimensional, indexat dup o cheie de rnd, una de coloan i o tampil de timp. Valoarea rezultat este un tablou de bytes, neinterpretat. Datele sunt meninute n ordine lexicografic dup cheia de rind. Fiecare operaie (citire/scriere) asupra datelor dintr-un rind se desfoar n mod atomic. Liniile sunt partiionate n mod dynamic n tablete, care reprezint totodat i unitatea de msur pentru verificarea ncrcrii ntr-un system distribuit. Aceast partiionare are avantajul simplificrii gsirii uneo date n cadrul structurii BigTable. Cheile de coloane sunt grupate n familii de coloane, care reprezint unitatea de baz a controlului. Numele familiei se folosee pentru prefixarea cheilor de coloan din ea. Fiecare celul poate conine multiple versiuni ale datelor, indexate dup o tampil de timp (timestamp). Implimentarea conine trei mari componente: biblioteca pentru client, un server master i serverele cu tablete, ce pot fi adugate i eliminate n mod dinamic (serverele). Masterul atribuie tablete serverelor de tablete, balanseaz ncrcarea acestor servere, ntreine lista lor, declaneaz garbage collector-ul. Clienii pot grupa mai multe familii de coloane n grupuri locale. La apariia unui grup se creaz un SSTable n tablet care grupeaz valorile unui grup respective. Aceasta duce la citiri mai eficiente. Grupurile locale pot fi declarate inclusive n memorie, caz n care ncrcarea lor se face lazily, dar fr acces la disc. Serverele de tablete folosesc dou nivele de caching (Scan cache i Block Cache).

1.2. Dynamo
Unele din serviciile de baz Amazon utilizeaz facilitile (disponibilitatea i scabilitatea) oferite de Dynamo prin sacrificarea consistenei. Amazon folosete o arhitectur orientate pe servicii slab cuplat, descentralizat. ntodeauna exist un numr mic de componente de reea care se pot defecta la un moment dat, de aceea e necesar ca softul s trateze erorile ca pe nite cazuri normale fr a afecta disponibilitatea sau performana. Exemplu: Clienii trebuie s poat vedea i s adauge itemi n coul de cumprturi chiar dac exist probleme tehnice n cadrul organizaiei. Pentru multe servicii cum ar fi: furnizarea listelor de best-seller-uri, courilor de cumprturi, preferinele cumprtorilor, managementul sesiunilor i a cataloagelor de produse. Folosirea unei baze de date relaionale ar fi neeficient i ar limita scalabilitatea i disponibilitatea. Dinamo furnizeaz o interfa bazat doar pe o cheie care ndeplinete cerinele acestor aplicaii. Datele sunt partiionate i replicate folosind hash-uri consistente iar consistena este mbuntit prin versionarea obiectelor. Consistena replicilor n timpul actualizrii este obinut printr-un protocol de sincronizare descentralizat. Adugarea i eliminarea nodurilor n sistem se face fr necesitatea vre-unei oparaii de partiionare au redistribuire. Sistemele tradiionale de producie i stocheaz starea n BD relaionale. Aceasta reprezint ns n unele cazuri o soluie departe de ideal deoarece n multe cazuri doar se stocheaz i regsesc date conform unei chei primare, fr a folosi interogrile complexe oferite de BD releionale, care ar solicita sisteme scumpe i personal calificat, iar mecanismele de replicare sunt nc n faza incipient. Cerinele sistemului de stocare:

Modelul de interogare: operaii simple de citire-scriere a unor date identificate printr-o cheie unic. Strile sunt stocate ca obiecte binare, identificate i ele prin chei unice. O operaie intervine asupra unei singure date deci nu e nevoie de o schema.

Prioritile ACID: o operaie logic = o tranzacie. Experiena la Amazon a artat c bazele de date care garanteaz ACID au o disponibilitate slab. Dynamo scade consistena pentru a obine o disponibilitate sporit.

Eficiena. Dynamo este folosit doar n cadrul Amazon-ului, ntr-un mediu presupus neostil, nu avem autoriti i autentificri.

Consideraii de proiectare: Algoritmii tradiionali de replicare se execut sincron spre a pstra consistena BD. Pentru sistemele n care sunt premise erorile de server i de reea se crete disponibilitatea aplicnd algoritmi de replicare n background, concureni. Asta implic aparaia conflictelor care trebuie rezolvate ntr-un anumit moment de timp i de ctre o entitate anume. n Dynamo, chiar i la apariia unui conflict procesul de scriere continu n mod normal iar conflictele se rezolv la citire, invers fa de sistemele tradiionale. Conflictele sunt rezolvate de ctre aplicaie prin unificarea celor dou versiuni conflictuale. Alte principii respectate: Scalabilitate incremental: adugarea sau eliminarea unui nod se face cu impact minim asupra sistemului i operatorului; Simetrie: toate nodurile au aceleai atribuii i drepturi; Descentralizare: comunicarea ntre noduri de tip p2p fr un control central; Eterogenitate: se pot aduga noduri de orice capacitate, fr a conta capacitatea nodurilor existente.

1.3. Cassandra
Cassandra este un sistem de stocare cheie-valoare structurat, scalabil, consistent i distribuit. Cassandra combin tehnologiile sistemelor distribuite de la Dynamo i modelul de date al produsului Big Table de la Google. Ca i Dynamo, Cassandra este eventual consistent (sistemul de stocare garanteaz c dac se execut update-uri asupra unui obiect toate accesele vor ntoarce valoarea ultimului update).

Modelul de date poate fi descris ca nite hash-map-uri imbricate. Hash-map-urile stocheaz datele printr-o cheie unic folosit pentru a regsi datele. De exemplu, pentru a mapa cu chei de tip string tablouri byte am scrie n java: Map<string, byte []> map=new HashMap<String, byte[]>(); Principiu se pstraez i n Cassandra doar c aici nu avem un singur hashMap ci pn la trei nivele imbricate de hash-uri. n acest caz sunt stocate valorile n tablouri de bytes i fiecare cheie refer un nou hashMap. Map<String, Map<byte[], byte[]>> map=new HashMap<string,

Map<byte[], byte[]>>(); n acets fel partiionarea datelor de stocat ca perechi cheie-valoare se face pornind de la primul hashMap. Obinerea unei valori se face furniznd o cheie cu ajutorul creia se obine un hashMap prin parcurgerea creia se obine valoarea de interes. n Cassandra perechile cheie-valoare nu sunt stocate ca dou valori individuale ci cuplate ntr-o clas numit column. Cassandra i structureaz modelul de date n spaii de chei, familii de coloane, coloane i supercoloane. Un spaiu de chei este un nume care grupeaz familiile de coloane i poate fi comparat cu shema unei singure baze de date n perspectiva SQL. Un spaiu de chei conine una sau mai multe familii de coloane. O familie de coloane poate fi vzut ca un hashMap multidimensional ce se modific dinamic. n analogia SQL o familie de coloane ar fi o tabel dintr-o schem. Liniile sunt accesate prin chei i fiecare linie care poate fi vzut ca un hashMap de date are o serie de coloane. Fiecare coloan n cadrul unei linii este o serie ordont de chei pe post de nume i de valori pe post de valoare, ambele implimentate prin tablouri de bytes. Funciile de configuraie Cassandra poate aplica o schem de sortare pentru a impune o ordine asupra coloanelor dintr-o linie. Asta permite interogri de domenii asupra coloanelor. Supercoloanele. Unul dintre principalele aventaje este c suport straturi adiionale de hashMap-uri. Stratul adiional se adaug la stratul column i permite s stochezi i s accesezi datele ca ntr-un hashMap tridimensional.

1.4. MongoDB
MongoDB este o baz de date NoSQL open-source orientat pe documente. Acest baz de date beneficiaz de suport din partea companiei 10gen. MongoDB face parte din familia de sistemelor de baze de date NoSQL. Diferena principal const n faptul c stocarea datelor nu se face folosind tabele precum ntr-o baz de date relaional, MongoDB stocheaz datele sub form de documente JSON cu scheme dinamice.

Istorie
Dezvoltarea MongoDB a fot nceput de 10gen n 2007, cnd compania dezvolta un produs platform as a service similar cu Windows Azure sau Google App Engine. n 2009 MongoDB a fost transformat ntr-un produs open-source. n Martie 2010, de la versiune 1.4, MongoDB a fost considerat gata pentru mediul de producie.

Caracteristici principale
MongoDB este o baz de date open-source NoSQL scris n C++. Aceasta poate conine mai multe baze de date, colecii i indeci. n unele cazuri (baze de date i colecii ) aceste obiecte pot fi create implicit. Odat create, ele se gsesc n catalogul sistemului db.systems.collection, db.system.indexes. Coleciile conin documente (BSON). Aceste documente conin la rndul lor mai multe cmpuri. n MongoDB nu exist cmpuri predefinite spre deosebire de bazele de date relaionale, unde exist coloanele care sunt definite n momentul n care tabelele sunt create. Nu exist schem pentru cmpurile dintr-un document, acestea precum i tipurile lor pot varia. Astfel nu exist operaia de alter table pentru adugare de coloane. n practic este obinuit ca o colecie s aib o structur omogen, dei nu este o cerin, coleciile putnd avea structuri diferite. Aceast flexibilitate presupune uurin n migrarea i modificarea imaginii de ansamblu asupra datelor.

Caracteristicile MongoDB
Stocarea datelor sub form de documente: Baza de date MongoDB stocheaz obiecte (documente). Aceste documente reduc nevoia de join; Prezint support pentru indexare Indexarea pe fiecare din atribute se face n modul tradiional (RDBMS) asupra cheilor de regsire ale documentelor; Disponibilitate - Disponibilitatea datelor este asigurat printr-un proces automat de failover;

Auto-Sharding Shardingul sau partiionarea datelor pe orizontal se face automat. Citirile i scrierile sunt distribuite pe partiii. Lipsa joinurilor face ca interogrile distribuite s fie rapide;

Limbajul de interogare Limbajul de interogare este mbunatatit i pstreaza principii SQL si C++; Modificri rapide MongoDB suport operaii de actualizare atomice ct i pe cele tradiionale. Operatiile de mai jos demonstreaz flexibilitatea limbajului NoSQL. $inc - { $inc : { camp : valoare } } incementeaz cmpul camp cu numrul dat ca valoare $set -{ $set : { camp : valoare } } cmpul camp ia valoarea dat $push -{ $push : { camp : valoare } } se adaug valoarea dat cmpului specificat $addToSet -{ $addToSet : { camp : valoare } } adaugarea valorii ntr-un vector $pop -{ $pop : { camp : 1 } } terge ultimul element dintr-un vector $pop -{ $pop : { camp : -1 } } terge primul element dintr-un vector $pull -{ $pull : { camp : _valoare } } terge toate valorile egale cu valoare din cmpul camp

10

Map Reduce MongoDB folosete map/reduce pentru agregare i procesare batch;

GridFS Poate stoca fiiere de dimensiuni mari fr a complica stiva de date;

Suport Exist o cantitate mare de informaii online tutoriale , cari forumuri ce servesc pentru a asimila rapid lucrul cu MongoDB.

Paralel MySQL versus MongoDB Termeni MySQL Baz de date Tabel Index Rnd Coloan Join Cheie primar Group by Concepte MongoDB Baz de date Colecie Index Document BSON Cmp BSON ncapsulare i legatur Cmpul cheie unic _id Agregare

Instalare MongoDB
Instalarea MongoDB este extrem de simpl. Aceast baz de date poate fi intalat pe si steme de operare variate, incluznd Windows, Linux, Ubuntu, Debian i OS X. Mediul de dezvoltare n cazul acestui articol a fost reprezentat de MongoDB n Windows 7 Professional 32 bit. Sistemele 32 bit sunt folosite de obicei pentru testare, deoarece instalrile MongoDB pe un astfel de sistem permit o capacitate maxim de stocare de 2G. De menionat este faptul c nu se permite instalarea pe sistemele Windows XP. De asemenea distribuia Mongo include fisierul bin/mongo ce reprezint un shell interactiv scris n JavaScript i folosit n aceeai manier n care este folosit SQl Plus pentru baze de date Oracle pentru comenzi n linie de comand. Shellul este folositor pentru verificri teste si pentru funciile administrative. 11

Concluzie

Bazele de date NO SQL snt foarte aplicabile n practic. n cadrul acesteia d atele sunt mprite ntre diverse maini (din motive de performan i limitri de spaiu), operaiile de JOIN nu pot fi utilizate, si nici nu exist garanii ACID (Atomicitate - fiecare tranzacie va fi "totul sau nimic", n sensul n care eecul unei pri a unei tranzacii conduce la eecul ntregii tranzacii, deci la nemodificarea bazei de date, Consistena - orice tranzacie va determina trecerea bazei de date dintr-o stare consistent, valid n raport cu regulile definite (triggere, constrangeri, etc) ntr-o alt stare tot consistent, Izolare - execuia concurent a tranzaciilor va determina trecerea ntr-o stare care poate fi obinut i prin execuia secvenial a tranzaciilor respective, Durabilitate - tranzaciile finalizate (pentru care s-a dat commit) vor ramne aa i n cazul apariiei unor probleme hard sau soft), care n cazul RDBMS-urilor garanteaz procesarea n siguran a tranzaciilor. NoSQL este un sistem de management a bazelor de date rapid, portabil, fr limite arbitrare, altele dect memoria i viteza procesorului ce ruleaz i interacioneaz cu SO UNIX. Fol osete paradigma operator flux.

12

Bibliografie

1. http://www.slideshare.net/dora4765/baze-de-date-no-sql-3148803 2. http://mihaistefanescu1.blogspot.com/p/nosql.html 3. http://www.books-express.ro/blog/nosql-avantaje-si-dezavantaje/ 4. http://ro.wikipedia.org/wiki/MongoDB

13

S-ar putea să vă placă și