Tutorial NoSQL: Ce este, tipuri de baze de date NoSQL și exemplu
Ce este NoSQL?
NoSQL Baza de date este un sistem de management al datelor non-relațional, care nu necesită o schemă fixă. Evită îmbinările și este ușor de scalat. Scopul principal al utilizării unei baze de date NoSQL este pentru depozitele de date distribuite cu nevoi uriașe de stocare a datelor. NoSQL este utilizat pentru Big Data și aplicații web în timp real. De exemplu, companii precum Twitter, Facebook și Google colectează terabytes de date despre utilizatori în fiecare zi.
Baza de date NoSQL înseamnă „Nu numai SQL” sau „Nu SQL”. Deși un termen mai bun ar fi „NoREL”, NoSQL a prins. Carl Strozz a introdus conceptul NoSQL în 1998.
RDBMS tradițional folosește sintaxa SQL pentru a stoca și a prelua date pentru informații suplimentare. În schimb, un sistem de baze de date NoSQL cuprinde o gamă largă de tehnologii de baze de date care pot stoca date structurate, semi-structurate, nestructurate și polimorfe. Să înțelegem despre NoSQL cu o diagramă în acest tutorial de bază de date NoSQL:
De ce NoSQL?
Conceptul de baze de date NoSQL a devenit popular printre giganții Internet precum Google, Facebook, Amazon, etc. care se ocupă cu volume uriașe de date. Timpul de răspuns al sistemului devine lent atunci când utilizați RDBMS pentru volume masive de date.
Pentru a rezolva această problemă, ne-am putea „extinde” sistemele prin modernizarea hardware-ului nostru existent. Acest proces este costisitor.
Alternativa pentru această problemă este să distribuiți încărcarea bazei de date pe mai multe gazde ori de câte ori încărcarea crește. Această metodă este cunoscută sub numele de „scaling out”.
Baza de date NoSQL este non-relațională, așa că se extinde mai bine decât bazele de date relaționale, deoarece sunt concepute având în vedere aplicațiile web.
Scurt istoric al bazelor de date NoSQL
- 1998 - Carlo Strozzi folosește termenul NoSQL pentru baza sa de date relațională ușoară, open-source
- 2000- Baza de date grafice Neo4j este lansat
- 2004 - Google BigTable este lansat
- 2005- CouchDB este lansat
- 2007- Lucrarea de cercetare privind Amazon Dinamo este eliberat
- 2008- Facebooks surse deschise Cassandra proiect
- 2009- Termenul NoSQL a fost reintrodus
Caracteristicile NoSQL
Non-relațional
- Bazele de date NoSQL nu urmează niciodată model relațional
- Nu furnizați niciodată tabele cu înregistrări plate cu coloane fixe
- Lucrați cu agregate autonome sau BLOB
- Nu necesită mapare obiect-relațională și normalizare a datelor
- Fără caracteristici complexe precum limbaje de interogare, planificatori de interogări, îmbinări de integritate referențială, ACID
Fără schemă
- Bazele de date NoSQL sunt fie fără schemă, fie au scheme relaxate
- Nu necesită nici un fel de definiție a schemei datelor
- Oferă structuri eterogene de date în același domeniu
API simplu
- Oferă interfețe ușor de utilizat pentru stocarea și interogarea datelor furnizate
- API-urile permit metode de selecție și manipulare a datelor la nivel scăzut
- Protocoale bazate pe text utilizate în principal cu HTTP REST cu JSON
- În cea mai mare parte, nu a folosit un limbaj de interogare NoSQL bazat pe standard
- Baze de date activate pentru web care rulează ca servicii cu acces la internet
distribuit
- Mai multe baze de date NoSQL pot fi executate într-un mod distribuit
- Oferă capabilități de scalare automată și fail-over
- Adesea, conceptul ACID poate fi sacrificat pentru scalabilitate și debit
- În mare parte, fără replicare sincronă între nodurile distribuite Replicare multi-master asincronă, peer-to-peer, Replicare HDFS
- Asigurând doar o eventuală consistență
- Nimic împărtășit Architectură. Acest lucru permite mai puțină coordonare și o distribuție mai mare.
Tipuri de baze de date NoSQL
Baze de date NoSQL sunt în principal clasificate în patru tipuri: pereche cheie-valoare, orientată pe coloane, bazată pe grafic și orientată către document. Fiecare categorie are atributele și limitările sale unice. Niciuna dintre bazele de date specificate mai sus nu este mai bună pentru a rezolva toate problemele. Utilizatorii ar trebui să selecteze baza de date în funcție de nevoile lor de produs.
Tipuri de baze de date NoSQL:
- Bazat pe pereche cheie-valoare
- Grafic orientat pe coloane
- Pe baza de grafice
- Orientat pe documente
Pe baza perechii valori-cheie
Datele sunt stocate în perechi cheie/valoare. Este proiectat astfel încât să gestioneze o mulțime de date și încărcături grele.
Bazele de date de stocare perechi cheie-valoare stochează date ca un tabel hash în care fiecare cheie este unică, iar valoarea poate fi un JSON, BLOB (Binary Large Objects), șir etc.
De exemplu, o pereche cheie-valoare poate conține o cheie precum „Site web” asociată cu o valoare precum „Guru99”.
Este unul dintre cele mai simple exemple de baze de date NoSQL. Acest tip de bază de date NoSQL este folosit ca o colecție, dicționare, tablouri asociative etc. Depozitele de valori cheie ajută dezvoltatorul să stocheze date fără schemă. Ele funcționează cel mai bine pentru conținutul coșului de cumpărături.
Redis, Dynamo, Riak sunt câteva exemple NoSQL de baze de date ale magazinului cheie-valoare. Toate se bazează pe Amazonhârtia lui Dynamo.
Bazat pe coloane
Bazele de date orientate pe coloane funcționează pe coloane și se bazează pe hârtie BigTable de la Google. Fiecare coloană este tratată separat. Valorile bazelor de date cu o singură coloană sunt stocate contiguu.
Acestea oferă performanțe ridicate la interogări de agregare precum SUM, COUNT, AVG, MIN etc. deoarece datele sunt disponibile într-o coloană.
Bazele de date NoSQL bazate pe coloane sunt utilizate pe scară largă pentru a gestiona depozitele de date, business intelligence, CRM, cataloage carduri bibliotecă,
HBase, Cassandra, HBase, Hypertable sunt exemple de interogări NoSQL de baze de date bazate pe coloane.
Orientat pe document
Baza de date NoSQL orientată spre document stochează și preia datele ca o pereche de valori cheie, dar partea de valoare este stocată ca document. Documentul este stocat în formate JSON sau XML. Valoarea este înțeleasă de DB și poate fi interogată.
În această diagramă din stânga dumneavoastră puteți vedea că avem rânduri și coloane, iar în dreapta, avem o bază de date de documente care are o structură similară cu JSON. Acum, pentru baza de date relațională, trebuie să știți ce coloane aveți și așa mai departe. Cu toate acestea, pentru o bază de date de documente, aveți un depozit de date precum un obiect JSON. Nu trebuie să definiți care îl face flexibil.
Tipul de document este folosit mai ales pentru sistemele CMS, platforme de blogging, analiză în timp real și aplicații de comerț electronic. Nu ar trebui să fie utilizat pentru tranzacții complexe care necesită operațiuni multiple sau interogări împotriva structurilor agregate diferite.
Amazon SimpleDB, CouchDB, MongoDB, Riak, Lotus Notes, MongoDB, sunt populare Document originare sisteme DBMS.
Bazat pe grafic
O bază de date de tip grafic stochează entitățile, precum și relațiile dintre aceste entități. Entitatea este stocată ca un nod cu relația ca muchii. O muchie oferă o relație între noduri. Fiecare nod și margine are un identificator unic.
În comparație cu o bază de date relațională în care tabelele sunt slab conectate, o bază de date Graph este de natură multi-relațională. Relația de traversare este rapidă, deoarece acestea sunt deja capturate în DB și nu este nevoie să le calculați.
Baza de date de bază grafică utilizată în principal pentru rețele sociale, logistică, date spațiale.
Neo4J, Grafic infinit, OrientDB, FlockDB sunt câteva baze de date populare bazate pe grafice.
Instrumente de mecanism de interogare pentru NoSQL
Cel mai comun mecanism de recuperare a datelor este preluarea bazată pe REST a unei valori bazate pe cheia/ID-ul acesteia cu resursa GET
Baza de date Magazin de documente oferă interogări mai dificile, deoarece înțeleg valoarea într-o pereche cheie-valoare. De exemplu, CouchDB permite definirea vizualizărilor cu MapReduce
Ce este teorema CAP?
Teorema CAP este numită și teorema lui Brewer. Se precizează că este imposibil ca un depozit de date distribuit să ofere mai mult de două din trei garanții
- consecvență
- Disponibilitate
- Toleranța partiției
Coerența:
Datele ar trebui să rămână consistente chiar și după executarea unei operațiuni. Aceasta înseamnă că odată ce datele sunt scrise, orice cerere de citire viitoare ar trebui să conțină acele date. De exemplu, după actualizarea stării comenzii, toți clienții ar trebui să poată vedea aceleași date.
Disponibilitate:
Baza de date ar trebui să fie întotdeauna disponibilă și receptivă. Nu ar trebui să aibă timp de nefuncționare.
Toleranță de partiție:
Partition Tolerance înseamnă că sistemul ar trebui să continue să funcționeze chiar dacă comunicarea între servere nu este stabilă. De exemplu, serverele pot fi împărțite în mai multe grupuri care nu pot comunica între ele. Aici, dacă o parte a bazei de date nu este disponibilă, celelalte părți sunt întotdeauna neafectate.
Consecvență eventuală
Termenul „consecvență eventuală” înseamnă a avea copii ale datelor pe mai multe mașini pentru a obține disponibilitate și scalabilitate ridicate. Astfel, modificările aduse oricărui element de date de pe o mașină trebuie propagate către alte replici.
Replicarea datelor poate să nu fie instantanee, deoarece unele copii vor fi actualizate imediat, în timp ce altele la timp. Aceste copii pot fi reciproce, dar în timp, ele devin consistente. De aici, denumirea eventuală consistență.
BAZA: Basical Adisponibil, Sde multe ori, Econsistenta venutuala
- Practic, disponibil înseamnă că DB este disponibil tot timpul conform teoremei CAP
- Stare moale înseamnă chiar și fără o intrare; starea sistemului se poate schimba
- Consecvența eventuală înseamnă că sistemul va deveni consistent în timp
Avantajele NoSQL
- Poate fi folosit ca sursă de date primară sau analitică
- Capacitatea Big Data
- Fără un singur punct de eșec
- Replicare ușoară
- Nu este nevoie de un strat de cache separat
- Oferă performanță rapidă și scalabilitate orizontală.
- Poate gestiona date structurate, semi-structurate și nestructurate cu efect egal
- Programare orientată pe obiecte, ușor de utilizat și flexibilă
- Bazele de date NoSQL nu au nevoie de un server dedicat de înaltă performanță
- Suport limbi și platforme cheie pentru dezvoltatori
- Simplu de implementat decât utilizarea RDBMS
- Poate servi ca sursă principală de date pentru aplicațiile online.
- Gestionează datele mari care gestionează viteza, varietatea, volumul și complexitatea datelor
- Excelează la operațiunile cu baze de date distribuite și cu mai multe centre de date
- Elimină necesitatea unui anumit strat de cache pentru stocarea datelor
- Oferă un design flexibil de schemă care poate fi modificat cu ușurință fără timpi de nefuncționare sau întreruperi ale serviciului
Dezavantajele NoSQL
- Fără reguli de standardizare
- Capacități limitate de interogare
- RDBMS bazele de date și instrumentele sunt relativ mature
- Nu oferă capabilități tradiționale de bază de date, cum ar fi consistența atunci când mai multe tranzacții sunt efectuate simultan.
- Când volumul de date crește, este dificil să se mențină valori unice, deoarece cheile devin dificile
- Nu funcționează la fel de bine cu datele relaționale
- Curba de învățare este rigidă pentru dezvoltatorii noi
- Opțiuni open source, deci nu sunt atât de populare pentru întreprinderi.
Rezumat
- NoSQL este un DMS non-relațional, care nu necesită o schemă fixă, evită îmbinările și este ușor de scalat
- Conceptul de baze de date NoSQL a devenit popular printre giganții Internet precum Google, Facebook, Amazon, etc. care se ocupă cu volume uriașe de date
- În anul 1998, Carlo Strozzi a folosit termenul NoSQL pentru baza sa de date relațională ușoară, open-source
- Bazele de date NoSQL nu urmează niciodată modelul relațional, fie sunt fără schemă, fie au scheme relaxate
- Patru tipuri de baze de date NoSQL sunt 1). Pe baza perechii cheie-valoare 2). Graficul orientat pe coloane 3). Grafice bazate pe 4). Orientat pe documente
- NOSQL poate gestiona date structurate, semi-structurate și nestructurate cu efect egal
- Teorema CAP constă din trei cuvinte Consistență, Disponibilitate și Toleranță de partiție
- BASE înseamnă Basical Adisponibil, Sde multe ori, Econsistenta venutuala
- Termenul „consecvență eventuală” înseamnă a avea copii ale datelor pe mai multe mașini pentru a obține disponibilitate și scalabilitate ridicate
- NoSQL oferă capacități limitate de interogare