Cum să-i explic bunicii mele diferența dintre SQL și NoSQL

Cum să-i explic bunicii mele diferența dintre SQL și NoSQL

Una dintre cele mai importante decizii pe care le ia un dezvoltator este ce bază de date să folosească. De-a lungul multor ani, opțiunile au fost limitate la diferite variante de baze de date relaționale care suportau limbajul interogărilor structurate (SQL). Acestea includ MS SQL Server, Oracle, MySQL, PostgreSQL, DB2 și multe altele.

În ultimii 15 ani, pe piață au apărut multe baze de date noi în cadrul abordării No-SQL. Acestea includ stocări de tip key-value, cum ar fi Redis și Amazon DynamoDB, baze de date cu coloane largi, cum ar fi Cassandra și HBase, stocări de documente, cum ar fi MongoDB și Couchbase, precum și baze de date graf și motoare de căutare, cum ar fi Elasticsearch și Solr.

În acest articol, vom încerca să înțelegem SQL și NoSQL, fără a intra în detaliile funcționalității lor.
În plus, ne vom distra puțin în proces.

Explicăm SQL bunicii

Bunico, imaginează-ți că nu sunt singurul tău nepoțel. În schimb, mama și tata s-au iubit ca iepurii, au avut 100 de copii, apoi au adoptat încă 50.

Deci, tu iubești pe toți și nu vrei să uiți niciunul dintre numele noastre, zilele de naștere, preferințele de înghețată, dimensiunile hainelor, hobby-urile, numele soțiilor, numele copiilor și alte fapte super importante. Cu toate acestea, să ne uităm la adevăr. Ai 85 de ani și memoria bunicii tale pur și simplu nu mai poate face față.

Din fericire, eu, fiind cel mai deștept dintre nepoți, pot ajuta. Așa că vin la tine acasă, scot câteva foi de hârtie și te rog să faci niște fursecuri înainte să începem.

Pe o foaie de hârtie, facem o listă numită „Nepoti”. Fiecare nepot este înregistrat cu niște informații esențiale despre el, inclusiv un număr unic, care acum va indica ce tip de nepot este el. În plus, pentru a fi organizați, notăm atributele numite în partea de sus a listei, astfel încât să știm mereu ce informații conține această listă.

id
name
data nașterii
ultima vizită
dimensiune îmbrăcăminte
înghețata preferată
adoptat

1
Jimmy
09-22-1992
09-01-2019
L
mentă cu ciocolată
false

2
Jessica
07-21-1992
02-22-2018
M
drum de stâncă
true

…continuăm lista!

Lista nepoților

După un timp, te descurci cu toate și suntem aproape gata cu lista! Cu toate acestea, te întorci spre mine și spui: „Am uitat să adăugăm loc pentru soții, hobby-uri, nepoți!” Dar nu, nu am uitat! Asta urmează și necesită o altă foaie de hârtie.

Așa că scot o altă foaie de hârtie, iar pe ea numim lista Soții. Adăugăm din nou atributele care sunt importante pentru noi la începutul listei și începem să le adăugăm în rânduri.

id
grandchild_id
name
data nașterii

1
2
John
06-01-1988

2
9
Fernanda
03-05-1985

…mai multe soții!

Lista soțiilor

În această etapă, îi explic bunicii că dacă vrea să știe cine este căsătorit cu cine, trebuie doar să asocieze id în listă nepoții de grandchild_id din lista soțiilor.

După câteva zeci de cookie-uri, am nevoie de o siestă. „Poți continua, bunico?” Plec să mă odihnesc.

Mă întorc după câteva ore. Și ești grozavă, bunico! Totul arată minunat, cu excepția listei hobby-uri. În lista sunt cam 1000 de hobby-uri. Cele mai multe se repetă; ce s-a întâmplat?

grandchild_id
hobby

1
bicicletă

4
bicicletă

3
bicicletă

7
funcționează

11
bicicletă

…să continuăm!

Scuză-mă, am uitat complet să spun! Folosind o singură listă, putem urmări doar hobby-uri. Apoi, într-o altă listă, trebuie să urmărim nepoții, cei care se ocupă cu aceasta hobby-uri. O să-i spunem „Lista comună”. Văzând că nu-ți place asta, încep să mă îngrijorez și revin în modul de listare.

id
hobby

1
bicicletă

2
funcționează

3
înot

…mai multe hobby-uri!

Lista hobby-urilor

De îndată ce avem lista noastră de hobby-uri, creăm a doua noastră listă și o numim „Hobby-uri de nepoți».

grandchild_id
hobby_id

4
1

3
1

7
2

…mai multe!

Lista comună a hobby-urilor nepoților

După toată această muncă, bunica are acum un sistem cool de memorare pentru a urmări întreaga ei și uimitor de mare familie. Apoi - pentru a mă ține mai mult timp - ea pune întrebarea magică: „De unde ai învățat să faci toate acestea?”

Baze de date relaționale

O bază de date relațională este un set de tabele formal descrise (în exemplul nostru, acestea sunt foile), din care se poate accesa informațiile sau le poate aduna în diferite moduri fără a fi nevoie să reorganizeze tabelele. bază de date. Există multe tipuri diferite de baze de date relaționale, dar din păcate lista pe hârtie nu este una dintre ele.

O caracteristică distinctivă a celor mai populare baze de date relaționale este limbajul de interogare SQL (Structured Query Language). Datorită acestuia, dacă bunica își va muta sistemul de memorare pe computer, va putea obține rapid răspunsuri la întrebări precum: „Cine nu m-a vizitat anul trecut, este căsătorit și nu are hobby-uri?”

Una dintre cele mai populare sisteme de gestionare a bazelor de date SQL este MySQL, cu sursă deschisă. Aceasta este implementată în principal ca un sistem de gestionare a bazelor de date relaționale (RDBMS) pentru aplicații software bazate pe tehnologii web.

Câteva caracteristici cheie ale MySQL:

  • Este destul de cunoscut, utilizat pe scară largă și testat riguros.
  • Există mulți dezvoltatori calificați cu experiență în SQL și baze de date relaționale.
  • Datele sunt stocate în diferite tabele, ceea ce permite o legătură ușoară prin utilizarea cheilor primare și externe (identificatori).
  • Este ușor de folosit și eficient, ceea ce îl face ideal pentru companii mari și mici.
  • Codul sursă este disponibil sub licența GNU General Public License.

Acum uită TOT.

Explicăm NoSQL bunicii

Bunică, avem o familie uriașă. Avem 150 de nepoți! Mulți dintre ei sunt căsătoriți, au copii, au diverse hobby-uri și așa mai departe. La vârsta ta, e imposibil să-ți aduci aminte totul despre noi. Ceea ce îți trebuie este un sistem de memorare!

Din fericire, eu, nu dorind să uiți ziua mea de naștere și aroma ta preferată de înghețată, pot ajuta. Așa că mă grăbesc către cel mai apropiat magazin, iau un caiet și mă întorc acasă la tine.

Primul pas pe care îl fac este să scriu „Nepoti” cu litere mari pe coperta caietului. Apoi răsfoiesc prima pagină și încep să scriu tot ce trebuie să îți amintești despre mine. După câteva minute, pagina arată cam așa.

{ 
  "_id":"dkdigiye82gd87gd99dg87gd",
  "name":"Cody",
  "birthday":"09-12-2006",
  "last_visit":"09-02-2019",
  "clothing_size":"XL",
  "favorite_ice_cream":"Fudge caramel",
  "adopted":false,
  "hobbies":[ 
     "videoclipuri",
     "computere",
     "gătit"
  ],
  "spouse":null,
  "kids":[ 

  ],
  "favorite_picture":"file://scrapbook-103/christmas-2010.jpg",
  "misc_notes":"Preferă tortul de înghețată de ziua lui în loc de tortul de ciocolată!"
}

Eu: “Se pare că totul este pregătit!”
Bunică: “Așteaptă, dar ce se întâmplă cu ceilalți nepoți?”
Eu: “Da, exact. Atunci avem nevoie de câte o pagină pentru fiecare.”
Bunică: “Va trebui să scriu aceleași informații pentru toți, ca și pentru tine?”
Eu: “Nu, doar dacă vrei. Lasă-mă să-ți arăt.”
Luând de la bunică un pix, răsfoiesc pagina și scriu rapid informațiile despre verișorul meu cel mai puțin preferat.

{ 
  "_id":"dh97dhs9b39397ss001",
  "name":"Tanner",
  "birthday":"09-12-2008",
  "clothing_size":"S",
  "friend_count":0,
  "favorite_picture":null,
  "remember":"Născut în aceeași zi cu Cody, dar nu la fel de important"
}

De fiecare dată când bunicii îi trebuie să își amintească ceva despre unul dintre nepoți, trebuie doar să acceseze pagina corespunzătoare din caietul nepoților. Toate informațiile despre ei vor fi stocate acolo, pe pagina lor, pe care o pot modifica rapid și actualiza.

Când totul este deja făcut, ea pune întrebarea magică: „Unde ai învățat să faci toate astea?”

Baze de date NoSQL

Există multe baze de date NoSQL („nu doar SQL”). În exemplele noastre, am arătat o bază de date de documente. Bazele de date NoSQL modelează datele în moduri care exclud relațiile tabelare utilizate în bazele de date relaționale. Aceste baze de date au devenit populare la începutul anilor 2000 printre companiile care aveau nevoie de clusterizare în cloud din cauza cerințelor lor evidente de scalabilitate (de exemplu, Facebook). În astfel de aplicații, coerența datelor a fost mult mai puțin importantă decât performanța și scalabilitatea.

La început, bazele de date NoSQL erau folosite adesea pentru sarcini de gestionare a datelor de nișă. În principal, când era vorba despre aplicații web și cloud, bazele de date NoSQL gestionau și distribuite volume semnificative de date. Inginerilor care lucrau cu NoSQL le plăcea, de asemenea, schema flexibilă a datelor (sau lipsa acesteia), astfel că erau posibile modificări rapide în aplicațiile actualizate.

Caracteristicile cheie ale NoSQL:

  • O modalitate de stocare a datelor foarte flexibilă
  • Scalarea orizontală la clustere
  • Posibilitatea de consitență pe persistență / distribuție
  • Documente care sunt identificate folosind chei unice

Comparație detaliată

MySQL necesită o schemă specifică și structurată.
NoSQL permite stocarea oricăror date într-un „document”.

MySQL suportă o comunitate imensă.
NoSQL are o comunitate mică și în rapidă creștere.

NoSQL se distinge prin ușurința scalării.
MySQL necesită o gestionare mai mare.

MySQL utilizează SQL, care este aplicat în multe tipuri de baze de date.
NoSQL este o bază de date bazată pe design cu implementări populare.

MySQL folosește un limbaj standard de interogare (SQL).
NoSQL nu folosește un limbaj standard de interogare.

MySQL are multe instrumente excelente de raportare.
NoSQL are câteva instrumente de raportare care sunt dificile de standardizat.

MySQL poate genera probleme de performanță pentru mari volume de date.
NoSQL oferă performanțe excelente pentru mari volume de date.

Gânduri 8base

În compania 8base, în care lucrez, asigurăm zona de lucru a fiecărui proiect cu o bază de date relațională Aurora MySQL, care este găzduită pe AWS. Deși NoSQL este o alegere logică atunci când cerințele aplicației tale necesită performanță ridicată și scalabilitate, considerăm că consistența strictă a datelor, asigurată de SGBD, este necesară în dezvoltarea aplicațiilor SaaS și a altor software-uri pentru afaceri.

Pentru startup-uri și dezvoltatori care creează astfel de aplicații de afaceri care necesită raportare, integritatea tranzacțiilor și modele de date bine definite, a investi în lucrul cu baze de date relaționale este, în opinia noastră, alegerea corectă.

Află mai multe despre dezvoltarea cu Aurora, Serverless și GraphQL folosind 8base.com aici.

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster