NoSQL
În calcul , NoSQL (numit uneori „ nu doar SQL ”) este o clasă largă de sisteme de gestionare a bazelor de date care diferă de modelul clasic RDBMS ( Sistem de management al bazelor de date relaționale ) în moduri importante, cel mai remarcat că nu folosesc SQL ca principal . limbajul de interogare . Datele stocate nu necesită structuri fixe, cum ar fi tabelele , nu acceptă de obicei operațiuni JOIN , nu garantează pe deplin ACID (atomicitate, consistență, izolare și durabilitate) și, de obicei, se scalează bine.orizontal . Sistemele NoSQL sunt uneori numite „nu doar SQL” pentru a sublinia faptul că pot suporta și limbaje de interogare asemănătoare SQL.
Cercetătorii academicieni se referă în general la acest tip de baze de date ca stocare structurată , un termen care include și bazele de date relaționale clasice. Bazele de date NoSQL sunt adesea clasificate în funcție de modul în care stochează datele și includ categorii precum cheie-valoare , implementări BigTable , baze de date de documente și baze de date orientate pe grafice .
Sistemele de baze de date NoSQL au crescut odată cu rețelele sociale majore, cum ar fi Google, Amazon, Twitter și Facebook. Au trebuit să facă față unor provocări legate de prelucrarea datelor pe care SGBDR tradițional nu le-a rezolvat { vezi articolul }. Odată cu creșterea web-ului în timp real, a apărut nevoia de a furniza informații procesate din volume mari de date care aveau structuri orizontale mai mult sau mai puțin similare. Aceste companii și-au dat seama că performanța și proprietățile sale în timp real erau mai importante decât consecvența, în care bazele de date relaționale tradiționale au petrecut mult timp de procesare [ citare necesară ] .
În acest sens, bazele de date NoSQL sunt adesea foarte optimizate pentru operațiuni de preluare și adăugare și, de obicei, nu oferă mult mai mult decât funcționalitatea de stocare a înregistrărilor (de exemplu stocarea cheie-valoare ). Pierderea flexibilității în timpul rulării, în comparație cu sistemele SQL clasice, este compensată de câștiguri semnificative în scalabilitate și performanță atunci când se lucrează cu anumite modele de date. [ necesită citare ]
Istoria termenului
Carlo Strozzi a folosit termenul NoSQL în 1998 pentru a se referi la baza sa de date. Era o bază de date ușoară, open-source, care nu oferea o interfață SQL, dar urma modelul relațional [ 1 ] (Strozzi sugerează că, deoarece mișcarea actuală NoSQL „se desprinde complet de modelul relațional, prin urmare, a fost numit „NoREL”, sau ceva.") [ 2 ]
Eric Evans, un angajat al Rackspace , a reintrodus termenul NoSQL atunci când Johan Oskarsson de la Last.fm a vrut să găzduiască un eveniment pentru a discuta despre bazele de date distribuite open source. Numele a încercat să colecteze numărul tot mai mare de baze de date non-relaționale și distribuite care nu garantau ACID , un atribut cheie în SGBDR clasic.
Arhitectură
Bazele de date relaționale moderne au arătat, de obicei, o eficiență slabă în anumite aplicații cu consum mare de date, inclusiv indexarea unui număr mare de documente, redarea paginilor pe site-uri cu trafic ridicat și site-uri media de streaming. Implementările tipice RGBDR au fost reglate fie pentru un număr mic, dar frecvent de citiri și scrieri, fie pentru un set mare de tranzacții care au puține accese de scriere. Pe de altă parte, NoSQL poate servi o cantitate mare de sarcină de citire și scriere.
Implementările NoSQL utilizate în lumea reală includ marcajele verzi de 3TB ale Digg (menite să marcheze poveștile votate pozitiv de alții pe rețeaua de socializare; deși au durat mai puțin de 3 luni și au fost abandonate); cei 6 TB din baza de date „ENSEMBLE” a Comisiei Europene utilizate în modelele de comparație și calitate a aerului și cei 50 TB de căutare în căsuța de e-mail Facebook.
Arhitecturile NoSQL oferă adesea puține garanții de consistență, cum ar fi consistența tranzacțională sau a evenimentelor limitată la elemente de date individuale. Unele sisteme, totuși, oferă toate garanțiile sistemelor ACID în unele cazuri prin adăugarea unui strat intermediar (cum ar fi AppScale sau CloudTPS). Există două sisteme care au fost implementate care oferă izolarea instantanee pentru stocarea coloanelor: sistemul Percolator de la Google (bazat pe sistemul BigTable) și sistemul tranzacțional Hbase dezvoltat de Universitatea din Waterloo. Aceste sisteme dezvoltate independent folosesc concepte similare pentru a realiza tranzacții ACID distribuite pe mai multe rânduri, cu garanții de izolare a instantaneelor pentru sistemul de stocare subiacent din acel rând, fără suprasolicitare suplimentară de gestionare a datelor, implementare a sistemului middleware sau întreținere introdusă de stratul middleware.
Destul de multe sisteme NoSQL folosesc o arhitectură distribuită, păstrând datele redundant pe mai multe servere, folosind adesea un tabel hash distribuit. În acest fel, sistemul se poate scala cu adevărat prin adăugarea mai multor servere, iar eșecul unui server poate fi tolerat.
Unii susținători NoSQL promovează interfețe simple, cum ar fi matricele asociative sau perechile cheie-valoare. Alte sisteme, cum ar fi bazele de date native XML, promovează suportul pentru standardul Xquery. Sistemele mai noi, cum ar fi CloudTPS, acceptă, de asemenea, legarea de interogări.
Avantaje
- Aceste sisteme răspund nevoilor de scalabilitate orizontală ale tot mai multor companii. [ 3 ]
- Ei pot gestiona cantități uriașe de date.
- Ele nu creează blocaje.
- Scalare simplă.
- Diferite baze de date NoSQL pentru diferite proiecte.
- Ele rulează pe grupuri de mașini ieftine.
Dezavantaje
- Bazele de date NoSQL, fiind open source, au un suport diferit de suportul oferit de companiile comerciale pentru produsele lor. Acest lucru poate avea unele avantaje și, de asemenea, unele dezavantaje.
- Este posibil ca unele produse să nu fie suficient de mature pentru unele companii - În ciuda implementărilor lor în unele companii mari, bazele de date NoSQL se confruntă în continuare cu o problemă majoră de credibilitate cu multe companii. Criticii subliniază lipsa de maturitate a NoSQL și potențialele probleme de instabilitate, invocând în același timp maturitatea, funcționalitatea și stabilitatea RDBMS. Totuși, în dezvoltarea de sisteme, având la dispoziție codul sursă, acesta poate fi ajustat și adaptat nevoilor specifice fiecărei companii.
- Limitări de Business Intelligence.- Există una sau două probleme legate de capabilitățile BI ale bazelor de date NoSQL. Pot aceste baze de date să ofere genul de data mining riguros pe care îl folosesc companiile cu RDBMS? Câte cunoștințe de programare sunt necesare pentru a face interogări și analize ad-hoc? Răspunsurile nu sunt tocmai pozitive. Bazele de date NoSQL nu au multe cârlige pentru utilizarea instrumentelor BI generale, în timp ce cea mai simplă interogare și analiză ad-hoc necesită abilități de programare destul de bune. Cu toate acestea, soluții sunt disponibile. Quest Software, de exemplu, a creat Toad for Cloud Databases, care oferă capabilități de interogare ad-hoc pentru unele baze de date NoSQL.
- Lipsa de experiență.- Noutatea NoSQL înseamnă că nu există un număr mare de dezvoltatori și administratori care cunosc tehnologia - ceea ce face dificil pentru companii să găsească oameni cu cunoștințele tehnice adecvate. Dimpotrivă, lumea SGBDR are mii de oameni cu înaltă calificare.
- Probleme de compatibilitate.- Spre deosebire de bazele de date relaționale, care împărtășesc anumite standarde, bazele de date NoSQL au puține standarde în comun. Fiecare bază de date NoSQL are propriul său API, interfețele de interogare sunt unice și au particularități. Această lipsă de standarde înseamnă că este imposibil să treci pur și simplu de la un furnizor la altul, în cazul în care nu ești mulțumit de serviciu.
Sisteme
Tabel de comparație DBMS NoSQL
| Nume | Descriere |
|---|---|
| Cassandra | Bază de date creată de Apache de tip cheie-valoare. Are propriul limbaj pentru a efectua interogări CQL (Cassandra Query Language). Cassandra este o aplicație Java , astfel încât poate rula pe orice platformă care are JVM . Este multiplatformă . |
| Redis | Baza de date creată de Salvatore Sanfilippo și Pieter Noordhuis și este susținută de VMWare . Aceasta este o bază de date cheie-valoare. Poate fi imaginat ca o matrice gigantică în memorie pentru a stoca date, date care pot fi șiruri de caractere, hashuri, seturi de date sau liste. Are avantajul că operațiunile sale sunt atomice și persistente. Cu toate acestea, Redis nu acceptă interogări, ci doar inserați și obțineți date, în plus față de operațiunile comune pe seturi (diferență, unire și inserare). Creat în ANSI C , prin urmare este compatibil și funcționează fără probleme pe Unix , Linux și derivatele sale, Solaris , sisteme OS/X , totuși nu există suport oficial pentru platformele Windows . |
| MongoDB | Bază de date creată de MongoDB Inc. (anterior 10gen) de tip orientat document, cu o schemă liberă, adică fiecare intrare poate avea o schemă de date diferită care nu are nimic de-a face cu restul înregistrărilor stocate. Este destul de rapid când vine vorba de executarea operațiunilor sale, deoarece gestionează date binare. În scurt timp, MongoDB a devenit una dintre bazele de date NoSQL preferate pentru dezvoltatori. Este scris în limbajul C++ . Pentru stocarea informațiilor, folosește propriul sistem de documente cunoscut sub numele de BSON , care este o evoluție a formatului JSON dar cu particularitatea că poate stoca date reprezentate în formă binară. Este disponibil pentru sistemele de operare Windows , Linux , OS/X și Solaris . |
| CouchDB | Sistem creat de Apache și scris în limbajul Erlang care funcționează pe majoritatea sistemelor POSIX (multiplatforme), inclusiv GNU/Linux și [[macOS|OS/X], precum și sistemele Windows . Cele mai importante caracteristici includ utilizarea API-ului HTTP RESTful ca interfață și JavaScript ca limbaj de interacțiune principal. Fișierele JSON sunt folosite pentru stocarea datelor . Permite crearea de vizualizări, care sunt mecanismul care permite combinarea documentelor pentru a returna valori din mai multe documente, adică CouchDB permite efectuarea operațiunilor tipice SQL JOIN . |
Baze de date documentare
- CouchDB , de la Apache CouchD
- MongoDB , de la MongoDB Inc.
- RavenDB , de la Hibernating Rhinos
- BaseX
- djondb
- exista
- SimpleDB de la Amazon
- IBM Lotus Domino
- terrastore
Baze de date în grafic
- neo4j
- DEX/Sparksee
- AllegroGraph
- OrientDB
- InfiniteGraph
- Sună GraphDB
- InfoGri
- HyperGraphDB
Baze de date cheie/valoare
- Cassandra , din Apache
- BigTable , de la Google
- Dinamo lui Amazon
- Proiectul Voldemort, de la LinkedIn
- Riak
- Redis
- Oracle NoSQL
Baze de date cu mai multe valori
- Rocket D3 DBMS
- Rocket mvBase DBMS
- Universul Rocket U2
- Rocket U2 United
- OpenQM
- InterSystems Cache
- realitate
- jbase
- OpenInsight
- Motor de stocare extensibil
Baze de date orientate pe obiecte
- ObjectDB
- Baza de date de obiecte Zope
- ZooDB
- db4o
- Piatra pretioasa S
- Obiectivitate/DB
- realm.io
Baze de date tabelare
baze de date cu matrice
- SciDB, din Paradigm4
Referințe
- ^ Lith, Adam; Mattson, Jacob (2010). „Investigarea soluțiilor de stocare pentru date mari: o comparație a soluțiilor de stocare a datelor bine performante și scalabile pentru extragerea în timp real și inserarea în loturi de date” (PDF) . Göteborg: Departamentul de Informatică și Inginerie, Universitatea de Tehnologie Chalmers. p. 15 . Recuperat la 12 mai 2011 . „Carlo Strozzi a folosit pentru prima dată termenul NoSQL în 1998 ca nume pentru baza de date relațională open source care nu oferea o interfață SQL[...]”.
- ↑ „Sistemul de management al bazelor de date relaționale NoSQL: Pagina de pornire” . Strozzi.it. 2 octombrie 2007 . Consultat la 29 martie 2010 .
- ↑ Twitter plănuiește migrarea de la MySQL la Cassandra DB Arhivat 05-03-2010 la Wayback Machine în bardot
Link- uri externe
- Blog NoSQL.es
- NoSQL, dincolo de modelul relațional din bara punto
- nosql-discussion Google Group.
- nosql-databases.org „Ghidul tău suprem pentru universul non-relațional!”
- Eric Lay. (2009, 1 iulie). Nu la SQL? Mișcarea anti-bază de date câștigă abur
- Provocarea bazelor de date NoSQL
- Tipuri de sisteme de gestionare a bazelor de date NoSQL