Cum să îi explici bunicii tale diferența dintre SQL și NoSQL

Cum să îi explici bunicii tale 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ă. Timp de mulți ani, opțiunile au fost limitate la diferite opțiuni de baze de date relaționale care acceptau Structured Query Language (SQL). Acestea includ MS SQL Server, Oracle, MySQL, PostgreSQL, DB2 și multe altele.

În ultimii 15 ani, multe noi baze de date No-SQL au apărut pe piață. Acestea includ magazine cheie-valoare, cum ar fi Redis și Amazon DynamoDB, baze de date cu coloane largi precum Cassandra și HBase, magazine de documente precum MongoDB și Couchbase și baze de date grafice și motoare de căutare precum Elasticsearch și Solr.

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

Explicând SQL bunicii

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

Deci, ne iubești pe toți și nu vrei să uiți niciunul dintre numele noastre, zilele de naștere, aromele de înghețată preferate, mărimile îmbrăcămintei, hobby-urile, numele soților, numele urmașilor și alte fapte super importante. Cu toate acestea, să recunoaștem. Ai 85 de ani și o memorie bună pur și simplu nu poate face față.

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

Pe o coală de hârtie facem o listă numită „nepoţi" Fiecare nepot înregistrate cu câteva informații esențiale despre acesta, inclusiv un număr unic care va indica acum care nepotul el este. De asemenea, de dragul organizării, scriem atributele numite în partea de sus a listei, astfel încât să știm întotdeauna ce informații conține lista.

id
nume
zi de naştere
ultima vizită
mărimea hainelor
inghetata preferata
adoptată

1
Jimmy
09-22-1992
09-01-2019
L
Ciocolata cu menta
fals

2
Jessica
07-21-1992
02-22-2018
M
drum pietros
adevărat

...continuați lista!

Lista nepoților

După un timp vă dați seama de toate și aproape am terminat cu lista! Cu toate acestea, te întorci la mine și spui: „Am uitat să adăugăm spațiu pentru soți, hobby-uri, nepoți!” Dar nu, nu am uitat! Aceasta urmează mai departe și necesită o nouă foaie de hârtie.

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

id
nepotul_id
nume
zi de naştere

1
2
Ioan
06-01-1988

2
9
fernanda
03-05-1985

...mai multi soti!

Lista soților

În această etapă, îi explic bunicii că, dacă vrea să știe cine este căsătorit cu cine, atunci trebuie doar să compare id În listă nepoţii с nepotul_id în lista soţilor.

După câteva zeci de prăjituri, am nevoie de un pui de somn. „Poți să continui, bunico?” Plec să trag un pui de somn.

Mă întorc în câteva ore. Ești tare, bunico! Totul arată grozav, cu excepția listei hobby. Există aproximativ 1000 de hobby-uri pe listă. Cele mai multe dintre ele sunt repetitive; Ce s-a întâmplat?

nepotul_id
pasiune

1
ciclism

4
ciclism

3
ciclism

7
funcţionare

11
ciclism

...Hai sa continuăm!

Îmi pare rău, am uitat complet să spun! Folosind o singură listă, puteți doar urmări hobby. Apoi, într-o altă listă, trebuie să urmărim nepoţiicare fac asta hobby. O să-l numim „Lista comună”. Văzând că nu-ți place, încep să-mi fac griji și revin la modul listă.

id
pasiune

1
ciclism

2
funcţionare

3
de înot

...mai multe hobby-uri!

Lista de hobby-uri

Odată ce avem lista noastră de hobby, creăm a doua noastră listă și o numim "Hobby-urile nepoților".

nepotul_id
hobby_id

4
1

3
1

7
2

…Mai mult!

Lista generală a hobby-urilor nepoților

După toată această muncă, bunica are acum un sistem de memorie cool pentru a ține evidența familiei ei uimitor de mare. Și apoi - ca să mă țină mai mult - ea pune întrebarea magică: „Unde ai învățat să faci toate astea?”

Baze de date relaționale

O bază de date relațională este un set de tabele descrise formal (în exemplul nostru, acestea sunt foi) din care puteți accesa În conformitate cu sau colectați-le în moduri diferite fără a fi nevoie să reorganizați mesele Bază de date. Există multe tipuri diferite de baze de date relaționale, dar, din păcate, o listă pe o bucată de 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ă acesteia, dacă bunica și-a transferat sistemul de memorie pe computer, ar putea primi rapid un răspuns la întrebări precum: „Cine nu m-a vizitat anul trecut, este căsătorit și nu are hobby-uri?”

Unul dintre cele mai populare sisteme de gestionare a bazelor de date SQL este open source MySQL. Este implementat în primul rând ca un sistem de management al bazelor de date relaționale (RDBMS) pentru aplicații software bazate pe web.

Câteva caracteristici cheie ale MySQL:

  • Este destul de cunoscut, utilizat pe scară largă și testat temeinic.
  • Există mulți dezvoltatori calificați care au experiență de lucru cu SQL și baze de date relaționale.
  • Datele sunt stocate în diferite tabele, ceea ce facilitează stabilirea relațiilor folosind chei primare și străine (identificatori).
  • Este ușor de utilizat și eficient, ceea ce îl face ideal pentru întreprinderile mari și mici.
  • Codul sursă este conform termenilor licenței publice generale GNU.

Acum uita ALL.

Explicând NoSQL bunicii

Bunico, avem o familie mare. Sunt 150 de nepoți în el! Mulți dintre ei sunt căsătoriți, au copii, sunt interesați de ceva și așa mai departe. La vârsta ta este imposibil să-ți amintești totul despre noi toți. Ceea ce ai nevoie este un sistem de memorare!

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

Primul pas pe care îl fac este să scriu „Nepoții” cu litere mari aldine pe coperta caietului meu. Apoi mă întorc la 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":[ 
     "video games",
     "computers",
     "cooking"
  ],
  "spouse":null,
  "kids":[ 

  ],
  "favorite_picture":"file://scrapbook-103/christmas-2010.jpg",
  "misc_notes":"Prefers ice-cream cake on birthday instead of chocolate cake!"
}

Я: „Se pare că totul este gata!”
bunică: „Stai, ce zici de ceilalți nepoți?”
Я: „Da exact. Apoi alocăm câte o pagină pentru fiecare.”
bunică: „Va trebui să notez aceleași informații pentru toți, așa cum am făcut-o pentru tine?”
Я: „Nu, doar dacă vrei. Lasa-ma sa arat."
Luând pixul bunicii, întorc pagina și notez rapid informații despre vărul meu cel mai puțin preferat.

{ 
  "_id":"dh97dhs9b39397ss001",
  "name":"Tanner",
  "birthday":"09-12-2008",
  "clothing_size":"S",
  "friend_count":0,
  "favorite_picture":null,
  "remember":"Born on same day as Cody but not as important"
}

Ori de câte ori bunica trebuie să-și amintească ceva despre unul dintre nepoții ei, trebuie doar să meargă la pagina potrivită din caietul nepoților ei. Toate informațiile despre ei vor fi stocate chiar acolo pe pagina lor, pe care o poate schimba și actualiza rapid.

Când totul este gata, 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 baza de date de documente. Bazele de date NoSQL modelează datele în moduri care elimină relațiile de tabel utilizate în bazele de date relaționale. Aceste baze de date au devenit populare la începutul anilor 2000 în rândul companiilor care necesitau gruparea bazelor de date bazată pe cloud datorită cerințelor lor de scalare (de exemplu, Facebook). În astfel de aplicații, consistența datelor a fost mult mai puțin importantă decât performanța și scalabilitatea.

La început, bazele de date NoSQL erau adesea folosite pentru sarcini de gestionare a datelor de nișă. Practic, când era vorba de aplicații web și cloud, bazele de date NoSQL procesau și distribuiau cantități semnificative de date. Inginerilor NoSQL le-a plăcut, de asemenea, flexibilitatea schemei de date (sau lipsa acesteia), astfel încât au fost posibile schimbări rapide în aplicațiile actualizabile.

Caracteristicile cheie ale NoSQL:

  • O modalitate foarte flexibilă de stocare a datelor
  • Scalare orizontală la clustere
  • Secvență posibilă pentru persistență/propagare
  • Documente care sunt identificate folosind chei unice

Comparație detaliată

MySQL necesită o schemă definită și structurată.
NoSQL vă permite să stocați orice date într-un „document”.

MySQL este susținut de o comunitate imensă.
NoSQL are o comunitate mică și în creștere rapidă.

NoSQL este ușor de scalat.
MySQL are nevoie de mai multă manevrabilitate.

MySQL folosește SQL, care este folosit în multe tipuri de baze de date.
NoSQL este o bază de date prin proiectare cu implementări populare.

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

MySQL are multe instrumente excelente de raportare.
NoSQL are mai multe instrumente de raportare care sunt greu de standardizat.

MySQL poate avea probleme de performanță pentru date mari.
NoSQL oferă performanțe excelente pe date mari.

Gânduri 8bază

Compania 8baza, unde lucrez, alimentăm spațiul de lucru al fiecărui proiect cu o bază de date relațională Aurora MySQL găzduită pe AWS. În timp ce NoSQL este o alegere logică atunci când cerințele aplicației dvs. necesită performanță și scalabilitate ridicate, credem că consecvența puternică a datelor oferită de un DBMS este esențială atunci când construiți aplicații SaaS și alte software de afaceri.

Pentru startup-urile și dezvoltatorii care construiesc aplicații de afaceri care necesită raportare, integritate a tranzacțiilor și modele de date bine definite, investiția în baze de date relaționale este, în opinia noastră, alegerea potrivită.

Aflați mai multe despre dezvoltarea cu Aurora, Serverless și GraphQL cu 8base.com aici.

Sursa: www.habr.com

Adauga un comentariu