Miscarea NoSQL
No SQL este o miscare ce promoveaza o clasa de baze de date nerelationale ce intrerupe lunga istorie a bazeloer de date relationale. Bazele de date sar putea sa nu aibe nevoie intotdeuna de scheme fixe si de obicei evita operatiile de "join" si scalabilitate orizontala. Academicieni si lucrarile lor se refera la aceste baze de date ca stocare structurata. (Wikipedia)
No SQL insemna noua generatie de baze de date ce au urmatoarele puncte:
- - nu sunt relationale
- - distribuite
- - open surce
- - scalabile orizontal
Intentia initiala a fost de a moderniza bazele de date la nivel de web. Termenul de NoSQL a fost folosit pentru prima data in 1998 ca nume pentru baze de date open source ce nu au interfata SQL. Miscarea NoSQL a fost infiintata la inceputul anului 2009 si are o crestere foarte rapida. Pentru NoSQL se aplica si urmatoarele caracteristici: schema- libera, suport usor de replicare, API simplu, eventual consistent BASE (nu ACID) si altele. NoSQL inseamna "nu numai sql". (nosql-database.org)
Apache Cassandra
Cassandra a fost dezvolat de Facebook pana in 2008 si acum este dezvoltat de Apache si colaboratori de la alte companii.
Cassandra:
- - este orientata cheie/valoare
- - durabilitate prin "Commit Log" similar cu "WAL
- - eventul consistent peste noduri
- - focalizat pe valabilitate si "Partition Tolerance"
- - comunica prin "Thrift" protocol, interogari prin "Map- Reduce"
Apache CouchDB
CouchDB este o baza de date document orientata care poate fi interogata si indexata in moda "MapReduce" folosind JavaScript. CouchDB ofera de asemeni replicare incrementala cu detectare de conflict bi-directionala si rezolutie.
CouchDB:
- - majoritatea includ "BBC" si "Engine Yard"
- - rerine documente pe baza de cheie / valoare
- - durabilitate prin utilizarea de "append - only"
- - MVCC
- - focalizat pe valabilitate si "Partition Tolerance"
- - comunica prin "JSON" via "HTTP REST"
- - interogare de document sau functii JavaScript ("Map - Reduce")
MangoDB
MandDB face legatura intre socarea pe baza de cheie/ valoare (care sunt rapide si foarte scalabile) si sisteme traditionale RDBMS(care furnizeaza interogari bogate si functionalitate profunda)
MangoDB (de la "humongous") este scalabil, performanta inalta, open source, baza de date document orientata si scrisa in C++
MangoDB:
- - implementarile majore includ "Sourceforge", "Foursquare", "Bit.ly" si "Gthub"
- - rerine documente pe baza de cheie / valoare
- - nu are durabilitate fara replicare
- - focalizat pe consistenta si "Partition Tolerance"
- - date salvate in BSON (Binary JSON)
- - propriul protocol de cominicare
Am prezentat pe scurt doar 3 din proiectele bazate pe tehnologia NoSQL.
Proiecte bazate pe NoSQL si folosite in practica:
- BigTable folosit de catre Google
- HBase folosit de catre Adobe, Twitter
- Hypertable folosit de catre Zvents, Baidu, Rediff
- Cassandra folosit de catre Facebook, Digg, Twitter
- Dynamo folosit de catre Amazon
- Voldemort folosit de catre Linkedin
- MangoDB folosit de catre Sourceforge
- Redis folosit de catre Vmware, Github, Engineyard
- MemcacheDB folosit de catre Sina
- TokyoTyrant folosit de catre Mixi
Date de pe mynosql.
NoSql a aparut din necesitatea scalarii unor sisteme pentru care bazele de date relationale nu fac fata operatiilor de actualizare si join desi ruland pe sisteme hardware optimizate pentru acest lucru.
Facebook a fost printre primele ce sa confruntat cu aceasta problema, de a implementa un sistem pentru sute de milioane de utilizatori ce sunt slab conectati intre ei, si acaror date trebuie sa fie disponibile in orice moment.
Un utilizator are in medie 100 de prieteni ce pot realiza peste 300 de milioane de postari zilnice, 3000 de operatii de scriere pe secunda, 7GB de date noi in fiecare zi si 5TB de date mutate intre 50-60 de servere. (Miscarea "NoSQL" in contextul Web-ului social/semantic)
Exemple din lumea reala includ Digg 3 TB, pentru ecusoane verzi, Facebook 50 TB pentru cautare inbox si eBay de 2PB datele globale. (Wikipedia)
Datorita marimii si a cresterii continue a retelelor sociale problema performantei devine un factor foarte important. Spre exemlu Cassandra poate stoca pana la 50GB pe disc in doar 0.12ms mai rapid de 2500 de ori decat MySQL
In concluzie NoSQL a aparut din necesitate de performanta, de inbunatarire a scalabilitatii si costurilor hardware. Ca urmare cele mai mari retele sociale au adoptat deja NoSQL.
by Terente Ionut Alexandru