Sql sau nosql

SQL sau NoSQL - asta e întrebarea +8

  • 27.03.17 11:15 •
  • ru_vds •
  • # 324936
  • Habrahabr •
  • Traducere •
  • 23 •
  • 17100

- la fel ca Forbes, doar mai bine.

Știm cu toții că în lumea tehnologiilor de baze de date există două domenii principale: SQL și NoSQL, baze de date relaționale și non-relaționale. Diferențele dintre ele sunt modul în care sunt proiectate, tipurile de date care sunt suportate, modul în care sunt stocate informațiile.







Bazele de date relaționale stochează date structurate, care de obicei reprezintă obiecte din lumea reală. De exemplu, ar putea fi informații despre o persoană sau despre conținutul unui coș pentru bunuri dintr-un magazin, grupate în tabele, formatul căruia este specificat în stadiul de proiectare a depozitării.

Bazele de date non-relaționale sunt aranjate diferit. De exemplu, bazele de date bazate pe documente stochează informații sub formă de structuri de date ierarhice. Poate fi vorba de obiecte cu un set arbitrar de atribute. Faptul că într-o bază de date relațională va fi rupt în mai multe tabele interconectate, într-o bază de date non-relațională poate fi stocată ca entitate integrală.

Aranjamentul intern al diferitelor sisteme de gestionare a bazelor de date afectează caracteristicile de lucru cu ele. De exemplu, bazele de date non-relaționale sunt mai bine scalabile.

Sql sau nosql

Ce tehnologie să alegeți? Răspunsul la această întrebare depinde de caracteristicile proiectului în cauză.

Despre alegerea bazelor de date SQL


Nu există baze de date care să se potrivească tuturor. Acesta este motivul pentru care multe companii folosesc atât baze de date relaționale cât și non-relaționale pentru rezolvarea diferitelor probleme. Deși bazele de date NoSQL au devenit populare din cauza vitezei și a scalabilității bune, în anumite situații pot fi preferate arhive SQL structurate. Iată două motive care pot servi drept scuză pentru alegerea unei baze de date SQL:

  1. Necesitatea ca baza de date să satisfacă cerințele ACID (Atomicitate, Consistență, Izolare, Durabilitate - atomicitate, consistență, izolare, durabilitate). Aceasta reduce probabilitatea unui comportament neașteptat al sistemului și asigură integritatea bazei de date. Acest lucru se realizează printr-un mod greu de determinare a modului în care tranzacțiile interacționează cu baza de date. Acest lucru este diferit de abordarea utilizată în bazele de date NoSQL, care se concentrează pe flexibilitate și viteză, mai degrabă decât 100% integritatea datelor.
  • Datele cu care lucrați sunt structurate, iar structura nu este supusă unor schimbări frecvente. Dacă organizația dvs. nu se află în stadiul de creștere exponențială, probabil că nu există niciun motiv convingător de a utiliza baza de date, care vă permite să vă ocupați în mod liber de tipurile de date și vizează procesarea unor cantități uriașe de informații.

  • Despre selectarea bazelor de date NoSQL


    Dacă bănuiți că baza de date poate fi o strangulare a unui proiect bazat pe lucrul cu volume mari de informații, este necesar să se uite spre NoSQL-baze de date, care permit ceea ce poate baze de date relaționale nu.







    Iată caracteristicile care au cauzat popularitatea bazelor de date NoSQL, cum ar fi MongoDB, CouchDB, Cassandra, HBase:

    1. Depozitarea de volume mari de informații nestructurate. Baza de date NoSQL nu impune restricții asupra tipurilor de date stocate. În plus, dacă este necesar, puteți adăuga noi tipuri de date în timpul procesului.
  • Folosind computing și stocare în cloud. Depozitarea în cloud este o soluție excelentă, dar ele necesită ca datele să poată fi partajate cu ușurință între mai multe servere pentru a oferi o scalare. Folosind, pentru testare și dezvoltare, hardware-ul local și apoi mutarea sistemului în cloud, unde funcționează - exact așa sunt pentru bazele de date NoSQL.
  • Dezvoltare rapidă. Dacă dezvoltați un sistem folosind metode agile, utilizarea unei baze de date relaționale poate încetini munca dumneavoastră. Bazele de date NoSQL nu necesită aceeași cantitate de acțiuni pregătitoare care sunt de obicei necesare pentru bazele de date relaționale.

  • În secțiunea următoare, luați în considerare unele diferențe între tehnologiile SQL și NoSQL. Anume, să aruncăm o privire la un exemplu simplu care arată diferența fundamentală dintre cele două abordări ale organizării bazei de date, atunci vom vorbi despre scalabilitatea și indexarea datelor. Și, în final, să examinăm un exemplu al unui sistem CRM mare, care are nevoie de performanță ridicată a depozitului de date.

    SQL și NoSQL


    Să începem cu câteva concepte-cheie ale bazelor de date relaționale și non-relaționale. Mai jos este o bază de date care conține informații despre relația dintre oameni. Varianta a este o structură incomprehensibilă, construită sub forma unui grafic, caracteristic soluțiilor NoSQL. Varianta b arată modul în care aceleași date pot fi reprezentate într-o formă structurată, tipică pentru SQL.

    Sql sau nosql

    Două opțiuni pentru reprezentarea datelor

    Schema înseamnă că două documente din structura de date NoSQL nu ar trebui să aibă aceleași câmpuri și pot stoca date de diferite tipuri. De exemplu, aici este o serie de obiecte ale căror seturi de câmpuri nu se potrivesc.


    Cu abordarea relațională, datele trebuie stocate într-o structură pre-proiectată, din care aceste date pot fi apoi preluate. De exemplu, folosind declarația JOIN la extragerea din două tabele:


    Ca un exemplu mai avansat, pentru a demonstra preferat atunci când SQL NoSQL, ia în considerare o aplicație particulară a bazelor de date algoritmi NoSQL-compresie. Problema este că, în unele NoSQL-baze de date (de exemplu, couchdb și HBase) au în mod constant pentru a forma o așa-numită sstables - tabel șir de caractere în format cheie-valoare, sortate după cheie. În astfel de tabele, care sunt salvate pe disc, datele cad din tabelele stocate în memorie, atunci când sunt depășite și în alte situații. Cu utilizarea grele de crearea unei tabele de baze de date, în timp, conduce la faptul că dispozitivul de stocare a datelor subsistemului de intrare-ieșire devine o strangulare pentru operațiuni de citire. Ca rezultat, citirea în baza de date NoSQL este mai lentă decât scrierea, ceea ce anulează unul dintre principalele avantaje ale bazelor de date non-relaționale. Doar pentru a reduce acest efect, sistemele NoSQL folosesc în fundal algoritmi de compresie a datelor, încercând să combine mai multe tabele într-unul singur. Dar în sine această operație este foarte intensă din punct de vedere al resurselor, sistemul funcționează sub sarcină sporită.

    scalabilitate


    Una dintre principalele diferențe în tehnologiile luate în considerare este că bazele de date NoSQL sunt mai ușor de scalabil. De exemplu, MongoDB are built-in suport pentru replicare și umbrire (divizare orizontală a datelor) pentru a oferi scalabilitate. Deși scalarea este, de asemenea, acceptată în bazele de date SQL, acest lucru necesită mult mai multe resurse umane și hardware.

    Tip depozit de date

    Întrebarea a fost pusă incorect de la început. La fel ca și linia de jos:
    Iată semnele de proiecte pentru care bazele de date SQL sunt ideale:
    Baza de date ar trebui selectată nu pentru proiect, ci pentru sarcini. Oricum, într-un proiect pot fi utilizate atât bazele de date relaționale cât și așa-numitul NoSQL.

    chiar problema lui NoSQL a venit pe ordinea de zi când memoria a devenit disponibilă în gigaocteți
    Sunteți confuz ...

    Cum veți lucra cu datele dacă nu știți ce este acolo
    Prin dvs., lucrul cu baza de date NoSQL la nivelul aplicației trimite și primește o linie?

    În caz contrar, nu puteți explica "avantajul" NoSQL - "lipsa unei structuri de date rigide". Acesta este modul în care veți lucra cu datele dacă nu știți ce este acolo?

    Și de ce ar trebui ca depozitul de date să funcționeze cu date? Afacerea lui este de a primi, de a stoca și de a da. În acest scop, circuitul nu este necesar în special, cu excepția optimizărilor.







    Trimiteți-le prietenilor: