baze de date no sql

19

Click here to load reader

Upload: ruxanda-yarinkowski

Post on 23-Nov-2015

146 views

Category:

Documents


0 download

DESCRIPTION

Referat pe tema "Baze de date NO SQL"

TRANSCRIPT

Universitatea de Stat din MoldovaFacultatea de Matematic i InformaticSpecialitatea Baze de Date i Cunotine

Disciplina: Baze da date i Tehnologii Java

ReferatTema: Baze de date NO SQL

Chiinu, 2012

CUPRINS

Introducere.31.1.BigTable51.2.Dynamo61.3.Cassandra81.4.MongoDB9Istorie9Caracteristici principale9Instalare MongoDB12Concluzie12Bibliografie13

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. Folosete 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. BigTableBigTable 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. DynamoUnele 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. CassandraCassandra 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 map=new HashMap();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 map=new HashMap();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. MongoDBMongoDB 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 MongoDBStocarea datelor sub form de documente:Baza de date MongoDB stocheaz obiecte (documente). Aceste documente reduc nevoia de join;Prezint support pentru indexareIndexarea 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-ShardingShardingul 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 interogareLimbajul de interogare este mbunatatit i pstreaza principii SQL si C++;

Modificri rapideMongoDB 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

Map ReduceMongoDB folosete map/reduce pentru agregare i procesare batch;

GridFSPoate stoca fiiere de dimensiuni mari fr a complica stiva de date;

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

Paralel MySQL versus MongoDBTermeni MySQLConcepte MongoDB

Baz de dateBaz de date

TabelColecie

IndexIndex

RndDocument BSON

ColoanCmp BSON

Joinncapsulare i legatur

Cheie primarCmpul cheie unic _id

Group byAgregare

Instalare MongoDB Instalarea MongoDB este extrem de simpl. Aceast baz de date poate fi intalat pe sisteme 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.Concluzie

Bazele de date NO SQL snt foarte aplicabile n practic. n cadrul acesteia datele 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. Folosete paradigma operator flux.

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

5