Sunteți pe pagina 1din 9

BAZE DE DATE NOSQL

Istrate (Sirbu) Doinia student, Master Sisteme Distribuite, an II

REZUMAT
NoSQL este o derivare a sistemului de baze de date relaional. Aa cum i spune i
numele nu este o baz de date SQL ci o unealt la nivel de shell. Datele NoSql sunt stocate n
fiiere ASCII UNIX astfel nct 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 fiier conine relaii,
tabele cu informaii. Pentru a extrage informaii un fiier 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 micare 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 relaional 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 garanii i au o coerena slab, dar sunt mult
mai uor 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 astzi 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 cuta 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 numr tot mai mare de BD non-relaionale,
distribuite ce stocheaz date care de multe ori nu ncerc s ofere garanii ACID, diferite de
sistemele relationale: MySQL, MSSQL, PostgreSQL concepute pentru gestionarea datelor in
sistem relaional.
NoSQL este un sistem de management a bazelor de date rapid, portabil fr limite
arbitrare altele dect memoria i viteza procesorului ce ruleaz i interacioneaza 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 intrrii i ieirilor din
UNIX. Fiecare operator proceseaz datele dup care le parseaz urmtorului operator prin pipe,
foarte eficient deoarece pipe-urile n UNIX sunt implementatte 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, 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 rnd, una
de coloan i o stampil de timp. Valoarea rezultat este un tablou de bytes, neinterpretat. Datele
sunt meninute n ordine lexicografic dup cheia de rnd.
Fiecare operaie (citire/scriere) asupra datelor dintr-un rnd se desfoar n mod atomic.
Liniile sunt partiionate n mod dinamic n tablete, care reprezint totodat i unitatea de msur
pentru verificarea ncrcrii ntr-un sistem distribuit. Aceasta partiionare are avantajul
simplificrii gsirii 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 folosete pentru prefixarea cheilor de coloan din ea. Fiecare
celul poate conine multiple versiuni ale datelor, indexate dup o tampil de timp (timestamp).
Implementarea conine trei mari componente: biblioteca pentru clieni, 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, declanseaz
garbage collector-ul.
Clienii pot grupa mai multe familii de coloane n grupuri locale. La apariia 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 ncrcarea lor se
face lazily, dar fr acces la disc. Serverele de tablete folosesc dou nivele de caching (Scan
cache si Block Cache).

DYNAMO
Unele din serviciile de baz Amazon utilizeaz facilitile (disponibilitatea i
scalabilitate) oferite de Dynamo prin sacrificarea consistenei. Amazon folosete o arhitectur
orientata pe servici slab cuplat, descentralizat.
ntotdeauna 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,
managemnetul sesiunilor i 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 primar care ndeplinete cerinele acestor aplicaii. Datele sunt partiionate i

replicate folosind hash-uri consistente iar consistena este mbuntit prin versionarea
obiectelor.
Consistenta replicilor n timpul actualizrii este obinut printr-un protocol de
sincronizare descentralizat. Adugarea i eliminarea nodurilor n sistem se face fr necesitatea
vre-unei operaii de partiionare sau 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 relaionale, care ar solicita sisteme scumpe i personal calificat, iar mecanismele de
replicare existente 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 schem.

proprieti ACID: o operaie logic == o tranzacie; Experiena la Amazon a aratat c


bazele de date care garanteaza ACID au o disponibilitate slab. Dynamo scade
consistena pentru a obine o disponibilitate sporit.

Eficiena. Dymano este folosit doar n cadrul Amazon-ului, ntr-un mediu presupus
neostil, nu avem autorizri i autentificri.
Consideratii de proiectare: Algoritmii tradiionali de replicare se execut sincron spre
a pastra consistenta DB. Pentru sistemele n care sunt permise erorile de server i de reea se
crete disponibilitatea aplicnd algoritmi de replicare n background, concureni. Asta implic
apariia conflictelor care trebuie rezolvate ntr-un anumit moment de timp i de ctre o entitate
anume. In 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.

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 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 de bytes am scrie n java:

Map<String, byte[]> map=new HashMap<String, byte[]>();


Principiu se pastreaz 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 acest 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 clasa 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 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 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 ordonat de chei pe post de nume i de valori pe post de valoare, ambele
implementate prin tablouri de bytes. Funcie de configuraie Casandra 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 avantaje este ca 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.
Map<String, Map<Map<byte[],byte[]>,Map<byte[],byte[]>>>();
HashMap-ul adiional se numeste supercoloana. Putem crea oricte 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 cnd 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 coninutul sistemului din nodul conectat sau pentru a examina comportamentul
valorilor stocate.

COUCHDB
CouchDB - este o baz de date orientat document ce poate fi interogat i indexat
prin JavaScript. Ofer replicare incremental cu detecie i rezolvare bidirecional 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 numr de cmpuri i
ataamente. Includ deasemeni i metadate ntreinute de ctre sistem. Cmpurile au nume unice
i conin valori de tipuri diverse nefiind limitate ca dimensiune sau numr.
Editarea documentelor se face de ctre client prin ncrcarea documentului modificarea
lui i rezolvarea n BD. Dac un alt client editeaz acelai document i i salveaz schimbrile
clientul obine 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
excepia cmpurilor BLOB (Bynary Large Object) a cror actualizare este concurent toate
actualizrile sunt serializate. Orice numr de clieni poate citi documentul fr a fi ntrerupt de
actualizrile concurente. Operaiile 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 operaiei 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 gsi schimbrile n baza de
date. B-arborii sunt actualizai simultan la salvari i tergeri. Datele sunt deja mpachetate pentru
stocare n loc de a fi mprite n tabele i rnduri.
Periodic se realizeaz o compactare a BD prin clonarea tuturor datelor active ntr-un
nou fiier i tergerea fiierului vechi. n tot timpul acestei operaii DB rmne accesibil.
Vizualizri - view-uri: Datele sunt stocate in documente semistructurate, flexibile,
fiecare cu propria structur.
View-urile sunt metode prin care se realizeaz agregri, 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 alocnd 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, coninnd definiii de viewuri i formule, ca i cmpuri ordinare i blob-uri.
Documentele CouchDB pot avea asociat o list de cititori pentru a le proteja
coninutul. Totodat, la actualizare, pot fi introduse validari javascript pentru securitate i
consistena datelor.
Actualizari distribuite si replicari.
Sunt permise actualizrile off-line asupra datelor, urmnd ca mai tarziu modificrile s
se fac inclusiv pe server (cnd 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 cmpurile i blob-urile modificate. Acest mecanism permite
o uoar recuperare dup o cdere a conexiunii.
Pot fi replicate doar anumite documente, selectate prin filtre JavaScript.

Conflictele n CouchDB reprezint o stare comun, nu una excepional, permind oricrui


numr de documente conflictuale s existe n DB. n fiecare instan se determin care versiune
este catigtoare i care sunt cele conflictuale. Cel ctigtor 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 main este independent i datele replicate n cluster-ul propriu coincid
cu cele de pe server. Asta nseamn c la cderea serverului DB poate fi restaurat total prin
juxtapunerea informaiilor 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 limitri : DB4O trebuie s reflecte toi membri din obiectul
exemplu, nu se pot efectua interogri avansate cu and, or etc, constrngerile nu pot fi aplicate
pentru valorile implicite, 0 pt numere, irul vid pentru iruri sau nul pentru tipul referin, trebuie
s poi crea obiecte fr s iniializezi cmpurile, deci nu se pot iniializa cmpurile la declarare.
Pentru a evita aceste constrngeri exista Native Queries NQ.
NQ este variant recomandat pentru interogri n DB4O. Permite rularea unei poriuni
de cod asupra instanelor unei clase.
SODA Query API este pentru interogri de nivel sczut permind acces direct la
nodurile grafului de interogare. Deoarece SODA folosete stringuri ca identificatori pentru
cmpuri, expresiile nu sunt verificate la momentul compilrii i de asemeni sunt dificil de scris.
SODA se folosete la generarea dinamic a interogrilor.
Tranzactii: Orice interaciune cu DB4O se desfoar n cadrul unei tranzacii. Aceasta
pornete la deschiderea containerului, iar la inchidere se face comit. Exist posibilitatea de a
anula ultima tranzacie prin metoda rollBack. Nivelul implicit al tranzaciilor este read
Committed, fiecare client avnd n container propria referin slab la obiectele deja cunoscute.
Pentru a actualiza valorile obiectelor cu cele rezultatte n urma comit-urilor altor clieni este
necesar un refresh al obiectelor de la server.
ntr-o reea se specific un port i se seteaz conturi pentru clieni. Acetia se
conecteaz introducnd 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
recepionat de server i procesat cu metoda processMessage();.
Evaluation este o modalitate de a transmite constrngeri definite de utilizator i de a
rula cod arbitrar ntr-o interogare SODA. API-ul Evaluation const din dou interfee evaluation
i candidate. Implementarile lui evaluation realizate de utilizator sunt injectate n interogare. n
timpul execuiei interogrii ele vor fi apelate de motorul DB4O cu o instan candidat pentru a
decide ce anume s includ n result-ul curent. Interfaa evaluation conine metoda evaluate care
primeste un argument de tip candidate. i va fi apelat de ctre DB4O pentru a verifica dac
obiectul ncapsulat n acest candidat trebuie inclus n rezultat. Interfaa candidate conine trei
metode: getObject(), include() i objectContainer().

O implementare a lui evaluation poate apela metoda getObject pentru a obine 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 instaniate n
vreme ce interogrile lucreaz cu baza de date. De aici rezult o penalizare de performan la
instanierea obiectului, timp pierdut dac obiectul nu este inclus n rezultat.
Interogrile uzuale pot sri peste ncapsulri accesnd direct membri privai dar
evaluation trebuie s utilizeze API-ul, deci membri privai pot fi obtinui doar prin intermediul
accesorilor.

GTM
GTM - este o platform de talie industrial pentru dezvoltarea tranzaciilor de nalt
performan asupra procesrii bazelor de date scabili la nivel enterprise, include toate
functionalitile necesare pentru implementarea aplicaiilor de procesare a tranzaciilor. Suport
tranzacii ACID, este mai rapid decat bazele de date relaionale, nu impune restricii asupra
schemei, este o suit complet de capabiliti de administrare a sistemului incluznd funcii cum
ar fi: hotBackup() H creeaz direct o copie a bazei de date din momentul nceperii operaiunii
fr a fi necesare fiierele de jurnalizare.
GTM include o baz de date robust de nalt performan multiparadigma i
independent de arhitectur. Modelele relaionale orientat obiect i ierarhic pot fi aplicate
acelorai date care sunt accesibile aplicaiilor client server prin C, C++, SQL si M. Stocarea
datelor se face ntr-o variabil fr tip, un tablou nestructurat de bytes.Relaiile pot fi descrise n
egal msur ca fiind ierarhice, tablouri multidimensionale sau memorie cu coninut asociativ.
La nivel programatic coninutul este accesat prin nume de variabile globale persistente. Modelele
relational orientat obiect i navigaional se mapeaz corect pe baze de date GTM. Se pot aplica
mai multe modele pe aceleai date i n acelai moment pentru acces concurent.

HBASE
Hbase este un server de baze de date de la Hadoop. Se folosete atunci cnd avem
nevoie de acces read-write aleator i n timp real asupra unei colecii mari de date. Scopul
proiectului este stocarea tabelelor foarte mari de miliarde de rnduri i milioane de coloane.
Hbase conine:
- clase de baz necesare pentru copierea task-urilor hadoopMapReduce n tabele Hbase.
- interogarea predicatelor pe partea de server
- optimizare pentru interogri 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 fiiere sau ganglia sau
jmx.

Dac ruleaz pe o singura main nu este necesar configurarea. Operarea distribuit


poate fi pseudo sau complet distribuit.
Modul pseudodistribuit reprezint modul distribuit rulnd pe o singura main.

CERCETRI NRUDITE:
Sisteme p2p. Primele sisteme p2p erau nestructurate, folosite doar pentru partajarea de
fiiere, iar cutarea n ele se fcea prin emiterea unui semnal broadcast de interogare a fiecrui
nod n parte n legtur cu o resurs. Au aprut apoi reelele p2p structurate, n care fiecare nod
putea ruta n mod eficient o interogare spre nodurile care dein data cerut.
Sisteme distribuite de fiiere i baze de date distribuite:
Fa de sistemele p2p care trebuie s suporte spaii de nume plane, sistemele de fiiere
distribuite suport spaii de nume ierarhice. Ficus i Coda replic fiierele pentru disponibilitate
sporit, cu preul consistenei. Conflictele se rezolv folosind proceduri specializate.
Farsite nu folosete nici un server central. Google File System folosete 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 relaionale ce permite lucrul off-line
i asigur eventuala consisten.
Neo4J este un model unic, stocnd obiectele i relaiile ca noduri i arce intr-un graf.
Pentru interogri care se potrivesc acestui model (date ierarhice), rspunsul poate fi de 1000 de
ori mai rapid dect n cazul altor baze de date.
Scalaris este singurul server de baze de date care ofer tranzacii distribuite pe chei
multiple.

CONCLUZII
NoSQL este un sistem de management al bazelor de date care nu ofer garanii ACID,
este ns rapid, portabil fr alte limite dect memoria i viteza procesorului ce ruleaz i
interacioneaz cu SO UNIX. Folosete paradigma operator flux. Exist un numr de operatori i
fiecare execut o funcie unic asupra datelor. Daca se lucreaza cu o cantitate mare de date i se
dorete rularea de interogri dinamice ad-hoc, se va folosi o baza de date relaional SQL.
Folosirea cheie-valoare nu are sens dect dac se dorete distribuirea muncii pe diferite maini
fr 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 numr mare de sisteme NoSQL disponibile astzi 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. Diferenele dintre aceste
dou proiecte se pot msura n facilitile oferite i arhitectur. Hbase este o clon apropiat a lui
BigTable de la Google iar Cassandra este un hibrid ntre BigTable i Dynamo.

Bibliografie:

Giuseppe DeCandia, Deniz Hastorun, Madan Jampani, Gunavardhan Kakulapati, Avinash


Lakshman, Alex Pilchin, Swaminathan Sivasubramanian, Peter Vosshall and Werner Vogels Dynamo: Amazons 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

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