Nosql, baze de date: prezentare generală, exemple și aplicații

NoSQL sunt un depozit care nu urmează modelul și caracteristicile bazelor de date relaționale, nu au o schemă, nu sunt federate și nu garantează proprietatea ACID. Sistemul NO se scalează pe orizontală și utilizează o cantitate mare din memoria principală a calculatorului, rezolvând problema volumelor mari de informații.

Tipurile proprietare reprezintă o nouă metodologie de dezvoltare a bazelor de date NoSQL non-relaționale, implementate de marile companii pentru a satisface nevoile corporative, cum ar fi BigTable de la Google, care este considerat primul sistem NoSQL, și Amazon DynamoDB. Succesul acestor sisteme a deschis calea pentru o serie de sisteme de baze de date similare, open source și proprietare, dintre care cele mai populare sunt Hypertable, Cassandra, MongoDB, DynamoDB,

Evoluția NoSQL

Problema scalabilității SQL a fost recunoscută de companiile Web 2.0 cu nevoi uriașe, în creștere, de date și infrastructură, cum ar fi Google, Amazon și Facebook. Și-au găsit propriul lor rezolvarea problemelor, După ce a prezentat tehnologiile BigTable, DynamoDB și Cassandra. Interesul tot mai mare a condus la apariția unei serii de sisteme de gestionare a bazelor de date NoSQL (DBMS), cu accent pe performanță, fiabilitate și coerență. O serie de structuri de indexare existente au fost refolosite și îmbunătățite pentru a îmbunătăți performanța de căutare și citire.

Termenul a fost inventat de Calor Strozzi în 1998 și a fost resuscitat în 2009 de Eric Evans, colaborator al Rackspace, pentru a răspunde provocărilor companiilor bazate pe web cu volume mari de tranzacții și informații.

Termenul a fost inventat de Calor Strozzi

O diferență esențială între bazele de date NoSQL și bazele de date relaționale tradiționale este că primele sunt o formă de stocare nestructurată.

Stocare nestructurată

Deci NoSQL nu are o structură fixă a tabelelor ca un sistem relațional. Acest tabel oferă o scurtă comparație a caracteristicilor NoSQL și SQL.

Caracteristici Scurtă comparație

Rețineți că tabelul prezintă o comparație la nivelul bazei de date, nu la nivelul RDBMS, care implementează ambele modele. Aceste sisteme oferă propriile metode brevetate pentru a depăși unele dintre problemele și deficiențele ambelor sisteme, ceea ce îmbunătățește considerabil performanța și fiabilitatea.

Tipuri de magazine de informații

NoSQL Key Value utilizează un tabel hash

Tipul de bază de date NoSQL Key-Value utilizează un tabel hash în care o cheie unică indică un element. Ele pot fi organizate în grupuri logice, necesitând unicitate în cadrul acestora. Acest lucru permite utilizarea de chei identice în grupuri logice diferite. Unele implementări de baze de date oferă mecanisme de cache care îmbunătățesc considerabil performanța acestora.

Toate, ceea ce este necesar de a lucra cu elemente stocate într-o bază de date este un element cheie. Datele sunt stocate în ca șir JSON sau BLOB (obiect binar mare). Unul dintre cea mai mare Dezavantajul acestei forme este lipsa de consistență la nivelul bazei de date. Acest lucru poate fi adăugat în timpul dezvoltării bazei de date NoSQL de către programatori cu propriul cod, dar necesită, de asemenea, mai mult efort din cauza complexității implementării și a timpului. Cea mai cunoscută bază de date NoSQL, construită pe un magazin de valori cheie, este Amazon DynamoDB.

Magazinele de documente sunt similare cu magazinele de tip cheie-valoare, deoarece nu conțin nicio schemă și se bazează pe un model de valori. În consecință, ambele tipuri au aceleași argumente pro și contra. Ambele nu au consistență la nivelul bazei de date, ceea ce împiedică aplicațiile să ofere funcționalități mai robuste. Cu toate acestea, există câteva diferențe esențiale între cele două. În depozitele de documente, valorile (documentele) asigură codificarea datelor stocate. Aceste codificări pot fi XML, JSON sau BSON (cod binar JSON). Cea mai populară aplicație de baze de date care utilizează un depozit de documente este MongoDB.

O bază de date cu coloane stochează datele în coloane, mai degrabă decât în rânduri, așa cum fac majoritatea sistemelor de gestionare a bazelor de date relaționale. Magazinul de coloane este format din unul sau mai multe familii de coloane, care grupează logic anumite coloane din baza de date. O cheie este utilizată pentru a identifica și specifica numărul de coloane cu atributul spațiu cheie. Fiecare coloană conține tuple de nume și valori, ordonate și separate prin virgule.

Magazinele cu coloane au acces rapid de citire/scriere la datele stocate. În el, coloanele unui rând corespund unei coloane și sunt stocate ca o singură înregistrare pe disc. Acest lucru permite un acces mai rapid în timpul operațiunilor de citire/scriere. Cele mai populare baze de date care utilizează stocul de coloane al bazelor de date NoSQL, exemple: Google BigTable, HBase și Cassandra.

NoSQL Graph Bd utilizează o structură grafică orientată pentru a reprezenta datele. Un graf este alcătuit din muchii și noduri.

Cum funcționează bazele de date

Tipuri de magazine de informații

NoSQL funcționează ca un fișier care stochează toate datele, vă permite să lucrați cu cantități mari de informații și să le organizați astfel încât utilizatorii să le poată accesa oricând și oriunde au nevoie de ele. În prezent există diferite tipuri de NoSQL, fiecare funcționează diferit, majoritatea sunt scrise în C ++. Se poate spune că bazele de date NoSQL își centrează funcțiile pe

  1. Scalabilitate orizontală cu posibilitatea de a crește dimensiunea sa, de a mări spațiul de stocare în baza de date fără a sacrifica pentru funcționare.
  2. Tehnologia cloud. Majoritatea bazelor de date NoSQL își bazează stocarea în cloud pentru a elibera mai mult spațiu. De asemenea, au noduri pentru replicarea informațiilor.
  3. Utilizarea eficientă a resurselor. Companiile se află în prezent într-un proces de tranziție tehnologică, astfel încât este aproape imperativ ca acestea să aibă o bază de date care să le permită să implementeze noi instrumente tehnologice. Datele NoSQL funcționează exact în acest scop - modelul flexibil permite adaptarea rapidă la noi instrumente.
  4. Regim de funcționare liberă. NoSQL nu au un sistem rigid, astfel încât programatorii au libertatea de a modifica datele în funcție de necesități. Acest lucru înseamnă că, dacă trebuie să modificați definiția unui câmp sau a unui tip de date, nu este nicio problemă, spre deosebire de bazele de date SQL, unde modificările de acest tip sunt foarte dificile.
  5. Viteza de răspuns. Viteza într-o bază de date se măsoară prin latență, care este timpul de răspuns, NoSQL sunt preocupate de reducerea latenței cât mai mult posibil.
  6. Utilizarea indicilor. SQL și NoSQL au nevoie de indici deoarece nu se pot face interogări în milioane de înregistrări decât dacă a fost configurat un indice. În NoSQL, indexurile sunt generate sub forma unui B-Tree, adică nodurile sunt echilibrate și, prin urmare, viteza de căutare este crescută.

Sisteme de management

Tabelul următor oferă o scurtă comparație între diferitele sisteme de gestionare a bazelor de date NoSQL.

Sisteme de management

MongoDB are o schemă de stocare flexibilă - acest lucru înseamnă că obiectele stocate nu trebuie să aibă aceeași structură sau câmpuri. De asemenea, are unele caracteristici de optimizare care distribuie colecțiile de date între ele, ceea ce duce la o performanță generală mai bună și la un sistem mai echilibrat. Alte sisteme NoSQL-urile, cum ar fi Apache CouchDB, sunt de asemenea baze de date de tip document store și împart multe caracteristici cu MongoDB, cu excepția faptului că baza de date poate fi accesată prin intermediul unui API RESTful.

REST este un stil arhitectural care constă într-un set coordonat de constrângeri arhitecturale aplicate componentelor, conectorilor și elementelor de date de pe internet. Se bazează pe un protocol de comunicare cu memorie cache "client - server" fără persistență, cum ar fi protocolul HTTP. Aplicațiile RESTful utilizează cereri HTTP pentru a publica, citi și șterge date. În ceea ce privește baza de date cu coloane, Hypertable este o bază de date NoSQL scrisă în C++ și se bazează pe Google BigTable. Hypertable suportă alocarea de stocare bazată pe noduri pentru o scalabilitate maximă, la fel ca MongoDB și CouchDB.

Sistem hibrid Cassandra

Sistem hibrid Cassandra

Una dintre cele mai utilizate baze de date NoSQL este Cassandra, dezvoltată de Facebook. Cassandra a urmărit să creeze un SGBD care să nu aibă un singur punct de eșec și să ofere o disponibilitate maximă. Cassandra este în primul rând o bază de date cu stocare columnară. În unele studii, acesta a fost denumit un sistem hibrid bazat pe Google BigTable, care este o bază de date cu stocare columnară, și Amazon DynamoDB, care este de tip cheie-valoare. Cheile din Cassandra indică un set de familii de coloane care se bazează pe sistemul de fișiere distribuite Google BigTable și pe caracteristicile de accesibilitate Dynamo (tabel hash distribuit).

Caracteristicile cheie ale Cassandra includ:

  1. Nu există un singur punct de eșec. Trebuie să ruleze pe un cluster de noduri, mai degrabă decât pe o singură mașină. Acest lucru nu înseamnă că datele de pe fiecare cluster sunt aceleași. Atunci când apare o defecțiune pe un nod, datele nu sunt disponibile pe acel nod. Cu toate acestea, alte noduri și date vor fi în continuare disponibile.
  2. Hashing distribuit este o schemă care asigură funcționalitatea tabelei hash în așa fel încât adăugarea sau eliminarea unui singur slot nu modifică semnificativ corespondența cheilor cu sloturile. Acest lucru vă permite să echilibrați încărcarea serverelor sau nodurilor în funcție de capacitatea lor și să minimizați timpii morți.
  3. Interfață client relativ ușor de utilizat. Folosește Apache Thrift pentru interfața sa de client, care oferă un client RPC în mai multe limbi, dar majoritatea dezvoltatorilor preferă alternative open source bazate pe Apple Thrift, cum ar fi Hector.
  4. Replicarea datelor. În esență, oglindește datele pentru alte noduri din cluster. Replicarea poate fi aleatorie sau definită pentru o protecție maximă a datelor, de exemplu, prin plasarea unui nod într-un alt centru de date.
  5. Politica de separare decide unde și pe ce nod se plasează cheia. Acesta poate fi un proces aleatoriu sau ordonat. Cu ambele tipuri de politici de partiționare, Cassandra poate găsi un echilibru între sarcină și performanța optimizată a interogărilor.
  6. Consecvență. Replicarea face dificilă coerența. Acest lucru se datorează faptului că toate nodurile trebuie să fie actualizate în orice moment cu cele mai recente valori sau în momentul în care este inițiată operațiunea de citire.
  7. Acțiune de citire/scriere. Clientul trimite o cerere către un singur nod. Nodul, în conformitate cu politica de replicare, stochează datele într-un cluster. Fiecare nod modifică mai întâi datele din jurnalul de confirmare și actualizează structura tabelului, ambele modificări fiind efectuate în mod sincron. Cererea de citire este trimisă către un singur nod care conține date în conformitate cu o politică de separare/alocare.

Structuri de indexare

Structuri de indexare

Indexarea este procesul de corelare a unei chei cu locația înregistrării de date corespunzătoare în SGBD. Există mai multe structuri de indexare utilizate în bazele de date NoSQL. B-Tree este unul dintre cele mai frecvente Structuri de indexare DBMS. Permite nodurilor interne să aibă un număr variabil de noduri copil într-un interval predefinit.

O diferență majoră față de alte structuri arborescente, cum ar fi AVL, este că B-Tree vă permite să aveți un număr variabil de noduri copil, ceea ce înseamnă mai puțină echilibrare a arborelui, dar mai multă pierdere de spațiu. B+Tree este una dintre cele mai populare variante de B-Tree. Această îmbunătățire (spre deosebire de B-Tree) necesită ca toate cheile să se afle într-o frunză.

Structura de date T-Trees a fost dezvoltată prin combinarea funcțiilor AVL-Trees și B-Trees. Arborii AVL sunt de tip căutare binară autoechilibrată, în timp ce arborii B sunt dezechilibrați și fiecare nod poate avea un număr diferit de copii.

Într-un arbore T, structura este foarte asemănătoare cu cea a arborelui AVL și a arborelui B. Fiecare nod stochează mai mult de un tuple {valoare cheie, pointer}. În plus, căutarea binară este utilizată în combinație cu noduri și tupluri multiple pentru a oferi o memorie și o performanță mai bune.

Un arbore în T are trei tipuri de noduri: cu noduri copil din dreapta și din stânga, un nod final fără noduri copil și un nod jumătate de frunză cu un singur nod copil. Se consideră că T-Trees are o performanță generală mai bună.

Greșeli comune de implementare a bazei de date

Există trei greșeli comune, pe care le fac organizațiile atunci când vine vorba de NoSQL:

  1. NoSQL este mai mult decât scalabilitate, nu puteți echivala NoSQL cu o scară web. Progenitorii bazelor de date non-relaționale moderne au fost companii precum Google și Amazon, care s-au concentrat pe rezolvarea problemelor de scalabilitate în mediul web.
  2. Dezvoltatorii trebuie să evolueze. Într-un proiect web de top, o echipă de integrare prost selectată a creat o problemă uriașă și a fost nevoie de timp și de milioane de dolari pentru a o rezolva.
  3. Distribuție complicată. Nimic nu poate înlocui cunoștințele și experiența, nici în ceea ce privește punerea în aplicare, nici în ceea ce privește administrarea. Se întâmplă ca o interogare care rulează rapid pe o mașină de dezvoltare locală să nu se extindă orizontal pe sute de mașini. O aplicație modernă are o arhitectură distribuită și mulți utilizatori în același timp, care au nevoie de răspunsuri rapide.

Beneficiile NoSQL

Bazele de date NoSQL și SQL sunt în competiție, dar, potrivit multor experți, primele au mai multe avantaje decât bazele de date relaționale tradiționale:

  1. să aibă o structură mai simplă și mai flexibilă.
  2. Fără schemă.
  3. Se bazează pe perechi "cheie-valoare".
  4. Unele tipuri includ stocare pentru coloane, documente, valori cheie, diagrame, obiecte, XML și alte moduri de date.
  5. Fiecare valoare din baza de date are, de obicei, o cheie. Unele magazine permit dezvoltatorilor să stocheze obiecte serializate, nu doar simple valori de tip șir de caractere.
  6. NoSQL cu sursă deschisă nu necesită taxe de licență costisitoare și pot funcționa pe hardware ieftin, ceea ce face ca implementarea lor să fie rentabilă.
  7. Atunci când se lucrează cu NoSQL, indiferent dacă sunt open source sau proprietare, extensiile sunt mai ușoare și mai ieftine, decât atunci când se lucrează cu cu baze de date relaționale. Se realizează prin scalarea orizontală și distribuirea sarcinii între toate nodurile, mai degrabă decât prin scalarea verticală realizată de obicei pe sistemele de baze de date relaționale, înlocuind gazda principală cu una mai puternică.

Dezavantajele unui sistem No-system

Bazele de date NoSQL funcționează în moduri diferite, totul depinde de documentele pe care le stochează, dar putem spune că sunt un instrument important în companiile moderne, deoarece stochează informațiile necesare despre utilizatori și tranzacții.

Ei nu sunt perfecți, așa că nu sunt întotdeauna alegerea corectă pentru programatori. С pe de o parte, Majoritatea nu suportă caracteristicile de fiabilitate pe care sistemele de baze de date relaționale le suportau inițial. Aceste caracteristici de fiabilitate pot fi rezumate la atomicitate, consecvență, izolare și durabilitate. Acest lucru înseamnă că NoSQL-urile care nu suportă aceste caracteristici, oferă tranzacționare de consistență pentru performanță și scalabilitate.

Pentru a susține caracteristicile de fiabilitate și coerență, dezvoltatorii trebuie să implementeze propriul cod proprietar, ceea ce crește complexitatea sistemului. Acest lucru limitează numărul de aplicații care se pot baza pe NoSQL pentru tranzacții sigure și fiabile, cum ar fi sistemele bancare.

Aplicații de baze de date NoSQL

Aplicații de baze de date NoSQL

Universitarii, inginerii, arhitecții de software, proiectanții de aplicații și programatorii au nevoie de o cunoaștere mai aprofundată a structurilor de date, care nu era necesară anterior pentru bazele de date relaționale. Liderii pieței sunt Hadoop și MongoDB, urmați de "Cassandra", "Redis", CouchDB și "Riacom". Studiile actuale arată că există două produse NOSQL care domină inginerii de sistem, arhitecții software, dezvoltatorii printre o duzină de tehnologii similare se numără MongoDB și Hadoop.

Piața arată că marile companii folosesc noi metodologii de dezvoltare a bazelor de date NoSQL și le integrează în produsele lor (Oracle, IBM). Piața bazelor de date se transformă încet-încet într-un standard cu PasS, Redis și MongoDB, Edlich. Produse precum Neo4j, MongoDb și CouchDb au fost ținta sprijinului și investițiilor de capital de risc.

Articole pe această temă