Baze de date NoSQL

4,914 views
4,813 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,914
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
209
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Baze de date NoSQL

  1. 1. BAZE DE DATE NOSQL Istrate (Sirbu) Doiniţa – student, Master Sisteme Distribuite, an II REZUMAT NoSQL este o derivare a sistemului de baze de date relaţional. Aşa cum îi spune şi numele nu este o bază de date SQL ci o unealtă la nivel de shell. Datele NoSql sunt stocate în fişiere ASCII UNIX astfel încât pot fi manipulate prin comenzi uzuale UNIX : ls, wc, mv, cp, cat, head, editate cu vi şi pot fi versionate cu CVS(Control Version System). Fiecare fişier conţine relaţii, tabele cu informaţii. Pentru a extrage informaţii un fişier cu date este trimis unuia sau mai multor operatori prin mecanismul de redirectare IO. NoSql există de mai mult de 1 deceniu şi nu are nimic de-a face cu noua mişcare NoSql aparută recent. În vreme ce prima este un pachet software bine definit cea de-a doua este mai mult un concept care pleacă de la modelul relaţional şi ar trebui să se numească NoRel (No Relation). SQL a fost dezvoltat de Andrew Richardson,Donald Messerly şi Raymond Boyce la începutul anilor 1970. Sistemele NoSQL de multe ori nu oferă garanţii şi au o coerenţa slabă, dar sunt mult mai uşor a fi distribuite. Se pot asocia matrici de perechi cheie-valoare sau baze de date XML care promovează XQuery. Multe dintre serverele de baze de date NoSQL de astăzi se bazează pe DHT (Distributed Hash Table), model, care prevede o semantică hashtable de acces. Pentru a accesa sau modifica orice dată obiect, clientul este obligat să furnizeze cheia primară a obiectului, atunci DB va căuta obiectul folosind un meci de egalitate la cheie furnizate INTRODUCERE Termenul NoSQL a fost inventat de Eric Evans angajat al companiei Rackspace. Numele a fost o încercare de a descrie aparitia unui număr tot mai mare de BD non-relaţionale, distribuite ce stochează date care de multe ori nu încercă să ofere garanţii ACID, diferite de sistemele relationale: MySQL, MSSQL, PostgreSQL concepute pentru gestionarea datelor in sistem relaţional. NoSQL este un sistem de management a bazelor de date rapid, portabil fără limite arbitrare altele decât memoria şi viteza procesorului ce rulează şi interacţioneaza cu SO UNIX. Foloseşte paradigma operator flux. Există un număr de operatori fiecare executând o funcţie unică asupra datelor. Fluxul este furnizat de mecanismul de redirectare a intrării şi ieşirilor din UNIX. Fiecare operator procesează datele după care le parsează următorului operator prin pipe, foarte eficient deoarece pipe-urile în UNIX sunt implementatte în memorie. NoSql este compatibil cu modelul relaţional însă NoSql nu vine cu nici o garanţie în ceea ce priveşte consistenţa.
  2. 2. Există un număr surprinzător de sisteme de NoSQL disponibile astăzi. Dintre proiectele open-source amintim: Cassandra, Chordless, CouchDB, DB4O, GTM, Hbase, Hipertable, Memcachedb Mnesia, MongoDB, Neo4j, Project_Voldemort, Redis_(DBMS). BIGTABLE BigTable este un sistem de stocare distribuit pentru date structurate, este folosit în 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 rând, una de coloană şi o stampilă de timp. Valoarea rezultată este un tablou de bytes, neinterpretat. Datele sunt menţinute în ordine lexicografică după cheia de rând. Fiecare operaţie (citire/scriere) asupra datelor dintr-un rând se desfăşoară în mod atomic. Liniile sunt partiţionate în mod dinamic în tablete, care reprezintă totodată şi unitatea de măsură pentru verificarea încărcării într-un sistem distribuit. Aceasta partiţionare are avantajul simplificării găsirii unei date în cadrul structurii BigTable. Cheile de coloane sunt grupate în familii de coloane, care reprezintă unitatea de bază a controlului. Numele familiei se foloseşte pentru prefixarea cheilor de coloană din ea. Fiecare celulă poate conţine multiple versiuni ale datelor, indexate după o ştampilă de timp (timestamp). Implementarea conţine trei mari componente: biblioteca pentru clienţi, un server master şi serverele cu tablete, ce pot fi adăugate şi eliminate în mod dinamic (serverele). Masterul atribuie tablete serverelor de tablete, balansează încărcarea acestor servere, întreţine lista lor, declansează garbage collector-ul. Clienţii pot grupa mai multe familii de coloane în grupuri locale. La apariţia unui grup se crează un SSTable în tableta care grupează valorile pentru grupul respectiv. Aceasta duce la citiri mai eficiente. Grupurile locale pot fi declarate inclusiv în memorie, caz în care încărcarea lor se face lazily, dar fără acces la disc. Serverele de tablete folosesc două nivele de caching (Scan cache si Block Cache). DYNAMO Unele din serviciile de bază Amazon utilizează facilităţile (disponibilitatea şi scalabilitate) oferite de Dynamo prin sacrificarea consistenţei. Amazon foloseşte o arhitectură orientata pe servici slab cuplată, descentralizată. Întotdeauna există un număr mic de componente de reţea care se pot defecta la un moment dat, de aceea e necesar ca softul să trateze erorile ca pe nişte cazuri normale fără a afecta disponibilitatea sau performanţa. Exemplu: Clienţii trebuie să poată vedea şi să adauge itemi în coşul de cumpărături chiar dacă există probleme tehnice în cadrul organizaţiei. Pentru multe servicii cum ar fi: furnizarea listelor de best-seller-uri, coşurilor de cumpărături, preferinţele cumpărătorilor, managemnetul sesiunilor şi cataloagelor de produse folosirea unei baze de date relaţionale ar fi neeficientă şi ar limita scalabilitatea şi disponibilitatea. Dinamo furnizează o interfaţă bazată doar pe o cheie primară care îndeplineşte cerinţele acestor aplicaţii. Datele sunt partiţionate şi
  3. 3. replicate folosind hash-uri consistente iar consistenţa este îmbunătăţită prin versionarea obiectelor. Consistenta replicilor în timpul actualizării este obţinută printr-un protocol de sincronizare descentralizat. Adăugarea şi eliminarea nodurilor în sistem se face fără necesitatea vre-unei operaţii de partiţionare sau redistribuire. Sistemele tradiţionale de producţie îşi stochează starea în BD relaţionale. Aceasta reprezintă însă în unele cazuri o soluţie departe de ideal deoarece în multe cazuri doar se stochează şi regăsesc date conform unei chei primare, fără a folosi interogările complexe oferite de BD relaţionale, care ar solicita sisteme scumpe şi personal calificat, iar mecanismele de replicare existente sunt încă în faza incipientă. Cerinţele sistemului de stocare:  modelul de interogare: operaţii simple de citire-scriere a unor date identificate printr-o cheie unică. Stările sunt stocate ca obiecte binare, identificate şi ele prin chei unice. O operaţie intervine asupra unei singure date deci nu e nevoie de o schemă.  proprietăţi ACID: o operaţie logică == o tranzacţie; Experienţa la Amazon a aratat că bazele de date care garanteaza ACID au o disponibilitate slabă. Dynamo scade consistenţa pentru a obţine o disponibilitate sporită.  Eficienţa. Dymano este folosit doar în cadrul Amazon-ului, într-un mediu presupus neostil, nu avem autorizări şi autentificări. Consideratii de proiectare: Algoritmii tradiţionali de replicare se execută sincron spre a pastra consistenta DB. Pentru sistemele în care sunt permise erorile de server şi de reţea se creşte disponibilitatea aplicând algoritmi de replicare în background, concurenţi. Asta implică apariţia conflictelor care trebuie rezolvate într-un anumit moment de timp şi de către o entitate anume. In Dynamo, chiar şi la apariţia unui conflict procesul de scriere continuă în mod normal iar conflictele se rezolvă la citire, invers faţă de sistemele tradiţionale. Conflictele sunt rezolvate de către aplicaţie prin unificarea celor două versiuni conflictuale. Alte principii respectate: - scalabilitate incrementală: adăugarea sau eliminarea unui nod se face cu impact minim asupra sistemului şi operatorului; - simetrie: toate nodurile au aceleaşi atribuţii şi drepturi; - descentralizare: comunicarea între noduri de tip p2p fără un control central; - eterogenitate: se pot adăuga noduri de orice capacitate, fără a conta capacitatea nodurilor existente. 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ă nu se execută update-uri asupra unui obiect toate accesele vor întoarce valoarea ultimului update). Modelul de date - poate fi descris ca nişte hash-map-uri imbricate. Hash-map-urile stochează datele printr-o cheie unică folosită pentru a regăsi datele. De exemplu pentru a mapa cu chei de tip string tablouri de bytes am scrie în java:
  4. 4. Map<String, byte[]> map=new HashMap<String, byte[]>(); Principiu se pastrează şi în Cassandra doar că aici nu avem un singur hashMap ci până 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 acest fel partiţionarea datelor de stocat ca perechi cheie-valoare se face pornind de la primul hashMap.Obţinerea unei valori se face furnizând o cheie cu ajutorul căreia se obţine un hashMap prin parcurgerea căreia se obţine valoarea de interes. În Cassandra perechile cheie-valoare nu sunt stocate ca două valori individuale ci cuplate într-o clasa numită column. Cassandra îşi structurează modelul de date în spaţii de chei, familii de coloane, coloane şi supercoloane. Un spaţiu de chei este un nume care grupează familiile de coloane şi poate fi comparată cu schema unei singure baze de date în perspectiva SQL. Un spatiu de chei contine una sau mai multe familii de coloane. O familie de coloane poate fi văzută 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 văzută ca un hashMap de date are o serie de coloane. Fiecare coloană în cadrul unei linii este o serie ordonată de chei pe post de nume şi de valori pe post de valoare, ambele implementate prin tablouri de bytes. Funcţie de configuraţie Casandra poate aplica o schemă de sortare pentru a impune o ordine asupra coloanelor dintr-o linie. Asta permite interogări de domenii asupra coloanelor. Supercoloanele . Unul dintre principalele avantaje este ca suportă straturi adiţionale de hashMap-uri. Stratul adiţional se adaugă la stratul column şi permite să stochezi şi să accesezi datele ca într-un hashMap tridimensional. Map<String, Map<Map<byte[],byte[]>,Map<byte[],byte[]>>>(); HashMap-ul adiţional se numeste supercoloana. Putem crea oricâte super coloane într-o familie de coloane. CHORDLESS Chordless este la nivelul inferior un hashTable distribuit modelat cu Chord şi DHash. Facilitati: nivel de replicare configurabil implicit 3 copii, transparenţă la erori (nodurile de backup devin automat decisive pentru o cheie când nodul decisiv pentru acea cheie dispare), cheile vor fi serializate şi vor fi distribuite la noduri criptate cu Sha1, valorile pot fi apelate la distanţă, datele pot fi persistate folosind JDBC, GUI. Se poate utiliza parserul ECMAScript pentru a verifica conţinutul sistemului din nodul conectat sau pentru a examina comportamentul valorilor stocate.
  5. 5. COUCHDB CouchDB - este o bază de date orientată document ce poate fi interogată şi indexată prin JavaScript. Oferă replicare incrementală cu detecţie şi rezolvare bidirecţională a conflictelor. Furnizează un api RESTfullJSON accesibil din orice mediu ce permite cereri HTTP. Este scrisă Erlang (un limbaj de programare ideal pentru sisteme distribuite concurente). Un server CouchDB tine BD stocheaza documente. Fiecare document are un nume unic în BD şi CouchDB furnizează un API RESTfullHTTP pentru citirea şi actualizarea documentelor. Documentele sunt tipuri primare de date şi constau din orice număr de câmpuri şi ataşamente. Includ deasemeni şi metadate întreţinute de către sistem. Câmpurile au nume unice şi conţin valori de tipuri diverse nefiind limitate ca dimensiune sau număr. Editarea documentelor se face de către client prin încărcarea documentului modificarea lui şi rezolvarea în BD. Dacă un alt client editează acelaşi document şi îşi salvează schimbările clientul obţine un conflict la salvare. Rezolvarea conflictului se face prin deschiderea ultimei versiuni a documentului şi reactualizarea ei. Actualizarile sunt atomice. Proprietatile ACID. Pe disc întotdeauna baza de date este într-o stare consistentă. Cu excepţia câmpurilor BLOB (Bynary Large Object) a căror actualizare este concurentă toate actualizările sunt serializate. Orice număr de clienţi poate citi documentul fără a fi întrerupt de actualizările concurente. Operaţiile de citire folosesc un model MVCC (Multi Version Concurrenty Control) prin care fiecare client vede o imagine consistentă a bazei de date pe toată durata operaţiei de citire. Documentele sunt indexate în B-arbori după nume şi id de secvenţă. Fiecare actualizare generează o nouă secvenţă. Id-urile de secvenţă se folosesc pentru a găsi schimbările în baza de date. B-arborii sunt actualizaţi simultan la salvari şi ştergeri. Datele sunt deja împachetate pentru stocare în loc de a fi împărţite în tabele şi rânduri. Periodic se realizează o compactare a BD prin clonarea tuturor datelor active într-un nou fişier şi ştergerea fişierului vechi. În tot timpul acestei operaţii DB rămâne accesibilă. Vizualizări - view-uri: Datele sunt stocate in documente semistructurate, flexibile, fiecare cu propria structură. View-urile sunt metode prin care se realizează agregări, join-uri şi rapoarte ale unor seturi de date, executate dinamic, la cerere. View-urile nu modifică documentul cu date. CouchDB are posibilitatea de a proteja documentul alocând drepturi de acces pentru o serie de utilizatori. Există acces de administrator, care poate crea alte conturi de admin şi poate actualiza documentele de design. Acestea sunt documente speciale, conţinând definiţii de view- uri şi formule, ca şi câmpuri ordinare şi blob-uri. Documentele CouchDB pot avea asociată o listă de cititori pentru a le proteja conţinutul. Totodată, la actualizare, pot fi introduse validari javascript pentru securitate şi consistenţa datelor. Actualizari distribuite si replicari. Sunt permise actualizările off-line asupra datelor, urmând ca mai tarziu modificările să se facă inclusiv pe server (când există conexiune). La nivelul bazei de date mecanismul de replicare examinează documentele modificate după ultima replicare. Pentru fiecare din aceste documente, sunt apoi replicate doar câmpurile şi blob-urile modificate. Acest mecanism permite o uşoară recuperare după o cădere a conexiunii. Pot fi replicate doar anumite documente, selectate prin filtre JavaScript.
  6. 6. Conflictele în CouchDB reprezintă o stare comună, nu una excepţională, permiţând oricărui număr de documente conflictuale să existe în DB. În fiecare instanţă se determină care versiune este caştigătoare şi care sunt cele conflictuale. Cel câştigător apare în view-uri, în vreme ce restul vor fi eliminate la proxima compactare. CouchDB este proiectat pornind de la o viziune consistentă a unui sistem de baze de date distribuit. Fiecare maşină este independentă şi datele replicate în cluster-ul propriu coincid cu cele de pe server. Asta înseamnă că la căderea serverului DB poate fi restaurată total prin juxtapunerea informaţiilor din clustere. Astfel, la restart, întregul sistem devine imediat disponibil. DB4O DB4O - este disponibil pentru Java, .net si visual basic. Are trei modele de interogari: Query by Example - QBE, Native Queries NQ si SODA Query API (SODA). QBE - are o serie de limitări : DB4O trebuie să reflecte toţi membri din obiectul exemplu, nu se pot efectua interogări avansate cu and, or etc, constrângerile nu pot fi aplicate pentru valorile implicite, 0 pt numere, şirul vid pentru şiruri sau nul pentru tipul referinţă, trebuie să poţi crea obiecte fără să iniţializezi câmpurile, deci nu se pot iniţializa câmpurile la declarare. Pentru a evita aceste constrângeri exista Native Queries NQ. NQ este variantă recomandată pentru interogări în DB4O. Permite rularea unei porţiuni de cod asupra instanţelor unei clase. SODA Query API este pentru interogări de nivel scăzut permiţând acces direct la nodurile grafului de interogare. Deoarece SODA foloseşte stringuri ca identificatori pentru câmpuri, expresiile nu sunt verificate la momentul compilării şi de asemeni sunt dificil de scris. SODA se foloseşte la generarea dinamică a interogărilor. Tranzactii: Orice interacţiune cu DB4O se desfăşoară în cadrul unei tranzacţii. Aceasta porneşte la deschiderea containerului, iar la inchidere se face comit. Există posibilitatea de a anula ultima tranzacţie prin metoda rollBack. Nivelul implicit al tranzacţiilor este read Committed, fiecare client având în container propria referinţă slabă la obiectele deja cunoscute. Pentru a actualiza valorile obiectelor cu cele rezultatte în urma comit-urilor altor clienţi este necesar un refresh al obiectelor de la server. Într-o reţea se specifică un port şi se setează conturi pentru clienţi. Aceştia se conectează introducând hostul, portul, user-name-ul şi parola. Cateodata un client trebuie să trimită un mesaj special serverului spre a-i transmite o comandă cum ar fi o defragmentare sau oprire. Asta se realizează prin apelul metodei setMessageRecipient();. Mesajul este recepţionat de server şi procesat cu metoda processMessage();. Evaluation este o modalitate de a transmite constrângeri definite de utilizator şi de a rula cod arbitrar într-o interogare SODA. API-ul Evaluation constă din două interfeţe evaluation şi candidate. Implementarile lui evaluation realizate de utilizator sunt injectate în interogare. În timpul execuţiei interogării ele vor fi apelate de motorul DB4O cu o instanţă candidat pentru a decide ce anume să includă în result-ul curent. Interfaţa evaluation conţine metoda evaluate care primeste un argument de tip candidate. şi va fi apelată de către DB4O pentru a verifica dacă obiectul încapsulat în acest candidat trebuie inclus în rezultat. Interfaţa candidate conţine trei metode: getObject(), include() şi objectContainer().
  7. 7. O implementare a lui evaluation poate apela metoda getObject pentru a obţine obiectul de evaluat, poate apela include() pentru a transmite lui DB4O dacă să includă sau nu acest rezultat si poate accesa direct baza de date prin apelul metodei objectContainer(). Un dezavantaj al lui evaluation este acesta că lucrează doar pe obiecte complet instanţiate în vreme ce interogările lucrează cu baza de date. De aici rezultă o penalizare de performanţă la instanţierea obiectului, timp pierdut dacă obiectul nu este inclus în rezultat. Interogările uzuale pot sări peste încapsulări accesând direct membri privaţi dar evaluation trebuie să utilizeze API-ul, deci membri privaţi pot fi obtinuţi doar prin intermediul accesorilor. GTM GTM - este o platformă de talie industrială pentru dezvoltarea tranzacţiilor de înaltă performanţă asupra procesării bazelor de date scabili la nivel enterprise, include toate functionalităţile necesare pentru implementarea aplicaţiilor de procesare a tranzacţiilor. Suportă tranzacţii ACID, este mai rapid decat bazele de date relaţionale, nu impune restricţii asupra schemei, este o suită completă de capabilităţi de administrare a sistemului incluzând funcţii cum ar fi: hotBackup() H creează direct o copie a bazei de date din momentul începerii operaţiunii fără a fi necesare fişierele de jurnalizare. GTM include o bază de date robustă de înaltă performanţă multiparadigma şi independentă de arhitectură. Modelele relaţionale orientat obiect şi ierarhic pot fi aplicate aceloraşi date care sunt accesibile aplicaţiilor client server prin C, C++, SQL si M. Stocarea datelor se face într-o variabilă fără tip, un tablou nestructurat de bytes.Relaţiile pot fi descrise în egală măsură ca fiind ierarhice, tablouri multidimensionale sau memorie cu conţinut asociativ. La nivel programatic conţinutul este accesat prin nume de variabile globale persistente. Modelele relational orientat obiect şi navigaţional se mapează corect pe baze de date GTM. Se pot aplica mai multe modele pe aceleaşi date şi în acelaşi moment pentru acces concurent. HBASE Hbase – este un server de baze de date de la Hadoop. Se foloseşte atunci când avem nevoie de acces read-write aleator şi în timp real asupra unei colecţii mari de date. Scopul proiectului este stocarea tabelelor foarte mari de miliarde de rânduri şi milioane de coloane. Hbase conţine: - clase de bază necesare pentru copierea task-urilor hadoopMapReduce în tabele Hbase. - interogarea predicatelor pe partea de server - optimizare pentru interogări în timp real - gateway thrift de mare performanţă - serviciu web RESTful care suporta codare XML protobuf şi date binare - surse cascading - shell extensibil bazat pe jruby - suport pentru exportul metricilor prin subsistemul metricilor hadoop în fişiere sau ganglia sau jmx.
  8. 8. Dacă rulează pe o singura maşină nu este necesară configurarea. Operarea distribuită poate fi pseudo sau complet distribuită. Modul pseudodistribuit reprezintă modul distribuit rulând pe o singura maşină. CERCETĂRI ÎNRUDITE: Sisteme p2p. Primele sisteme p2p erau nestructurate, folosite doar pentru partajarea de fişiere, iar căutarea în ele se făcea prin emiterea unui semnal broadcast de interogare a fiecărui nod în parte în legătură cu o resursă. Au apărut apoi reţelele p2p structurate, în care fiecare nod putea ruta în mod eficient o interogare spre nodurile care deţin data cerută. Sisteme distribuite de fişiere şi baze de date distribuite: Faţă de sistemele p2p care trebuie să suporte spaţii de nume plane, sistemele de fişiere distribuite suportă spaţii de nume ierarhice. Ficus şi Coda replică fişierele pentru disponibilitate sporită, cu preţul consistenţei. Conflictele se rezolvă folosind proceduri specializate. Farsite nu foloseşte nici un server central. Google File System foloseşte un server central pentru stocarea metadatelor, iar datele sunt stocate, în blocuri, pe servere de blocuri. Bayou este un sistem distribuit pentru baze de date relaţionale ce permite lucrul off-line şi asigură eventuala consistenţă. Neo4J este un model unic, stocând obiectele şi relaţiile ca noduri şi arce intr-un graf. Pentru interogări care se potrivesc acestui model (date ierarhice), răspunsul poate fi de 1000 de ori mai rapid decât în cazul altor baze de date. Scalaris este singurul server de baze de date care oferă tranzacţii distribuite pe chei multiple. CONCLUZII NoSQL este un sistem de management al bazelor de date care nu oferă garanţii ACID, este însă rapid, portabil fără alte limite decât memoria şi viteza procesorului ce rulează şi interacţionează cu SO UNIX. Foloseşte paradigma operator flux. Există un număr de operatori şi fiecare execută o funcţie unică asupra datelor. Daca se lucreaza cu o cantitate mare de date şi se doreşte rularea de interogări dinamice ad-hoc, se va folosi o baza de date relaţională SQL. Folosirea cheie-valoare nu are sens decât dacă se doreşte distribuirea muncii pe diferite maşini fără a trece prin crearea unui cluster de baze de date. Dacă se doreste pastrarea obiectelor într-o stare persistenta şi se doreste un acces de performanţă ridicată la ele se va folosi o stocare cheie valoare. Existã un numãr mare de sisteme NoSQL disponibile astãzi cum ar fi: Cassandra, Chordless, CouchDB, DB4O, GTM, Hbase, HiperTable, Memcachedb, Mnesia, MongoDB, Neo4J, Project_Voldemort, Redis_(DBMS). Dintre acestea HBase şi Cassandra se remarcă în mod deosebit. Diferenţele dintre aceste două proiecte se pot măsura în facilităţile oferite şi arhitectură. Hbase este o clonă apropiată a lui BigTable de la Google iar Cassandra este un hibrid între BigTable şi Dynamo.
  9. 9. Bibliografie: Giuseppe DeCandia, Deniz Hastorun, Madan Jampani, Gunavardhan Kakulapati, Avinash Lakshman, Alex Pilchin, Swaminathan Sivasubramanian, Peter Vosshall and Werner Vogels - Dynamo: Amazon’s Highly Available Key-value Store Fay Chang, Jeffrey Dean, Sanjay Ghemawat, Wilson C. Hsieh, Deborah A. Wallach Mike Burrows, Tushar Chandra, Andrew Fikes, Robert E. Gruber - Bigtable: A Distributed Storage System for Structured http://incubator.apache.org/cassandra http://couchdb.apache.org http://www.db4o.com http://fisglobal.com/Products/TechnologyPlatforms/GTM/index.htm http://hadoop.apache.org/hbase http://www.hypertable.org http://memcachedb.org http://www.erlang.org/doc/apps/mnesia/index.html http://www.mongodb.org/display/DOCS/Home http://neo4j.org http://wiki.huihoo.com/index.php?title=Project_Voldemort http://sthweb.bu.edu/archives/index.php?Redis_(dbms) http://www.sti.nasa.gov/spinoff/spinitem?title=Cordless+Instruments http://nosql.mypopescu.com/post/267817106/hbase-vs-cassandra-nosql-battle http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf http://labs.google.com/papers/bigtable.html http://www.allthingsdistributed.com/2008/12/eventually_consistent.html

×