Ako vysvetliť rozdiel medzi SQL a NoSQL vašej babičke

Ako vysvetliť rozdiel medzi SQL a NoSQL vašej babičke

Jedným z najdôležitejších rozhodnutí vývojárov je, ktorú databázu použiť. Po mnoho rokov boli možnosti obmedzené na rôzne možnosti relačných databáz, ktoré podporovali štruktúrovaný dotazovací jazyk (SQL). Patria sem MS SQL Server, Oracle, MySQL, PostgreSQL, DB2 a mnoho ďalších.

Za posledných 15 rokov sa na trhu objavilo mnoho nových No-SQL databáz. Patria sem obchody kľúč-hodnota ako Redis a Amazon DynamoDB, široké stĺpcové databázy ako Cassandra a HBase, obchody s dokumentmi ako MongoDB a Couchbase a databázy grafov a vyhľadávače ako Elasticsearch a Solr.

V tomto článku sa pokúsime porozumieť SQL a NoSQL bez toho, aby sme sa dostali do ich funkčnosti.
Navyše sa pri tom trochu pobavíme.

Vysvetlenie SQL babke

Babička, predstav si, že nie som tvoje jediné vnúča. Namiesto toho sa mama a otec milovali ako králiky, mali 100 detí a potom si adoptovali 50 ďalších.

Takže nás všetkých milujete a nechcete zabudnúť na žiadne z našich mien, narodenín, obľúbených príchutí zmrzliny, veľkosti oblečenia, koníčkov, mien manželov, potomkov a ďalších super dôležitých faktov. Povedzme si však na rovinu. Máš 85 rokov a stará dobrá pamäť to jednoducho nezvláda.

Našťastie, keďže som najmúdrejší z vašich vnúčat, môžem vám pomôcť. Takže prídem k vám domov, vyberiem niekoľko listov papiera a požiadam vás, aby ste si upiekli koláčiky, kým začneme.

Na jeden list papiera vytvoríme zoznam s názvom „Vnuci" Každý vnuk zaznamenané s niektorými základnými informáciami o ňom vrátane jedinečného čísla, ktoré teraz bude označovať ktoré vnuk on je. Taktiež z dôvodu organizácie vypisujeme pomenované atribúty na začiatok zoznamu, aby sme vždy vedeli, aké informácie zoznam obsahuje.

id
názov
narodeniny
posledná návšteva
veľkosť oblečenia
obľúbená zmrzlina
prijatý

1
pakľúče
09-22-1992
09-01-2019
L
Mätová čokoláda
nepravdivý

2
Jessica
07-21-1992
02-22-2018
M
kamenistá cesta
pravdivý

...pokračujte v zozname!

Zoznam vnúčat

Po chvíli na to všetko prídete a zoznam máme takmer hotový! Vy sa však ku mne otočíte a poviete: "Zabudli sme pridať priestor pre manželov, koníčky, vnúčatá!" Ale nie, nezabudli sme! Toto nasleduje ďalej a vyžaduje si nový list papiera.

Vytiahnem teda ďalší papier a na ňom voláme zoznam manželia. Pre nás dôležité atribúty opäť pridáme na začiatok zoznamu a začneme pridávať v riadkoch.

id
vnuk_id
názov
narodeniny

1
2
Ján
06-01-1988

2
9
Fernanda
03-05-1985

...viac manželov!

Zoznam manželov

V tejto fáze vysvetľujem babke, že ak chce vedieť, kto je za koho vydatá, tak potrebuje len porovnávať id v zozname vnúčatá с vnuk_id v zozname manželov.

Po pár desiatkach koláčikov si potrebujem zdriemnuť. "Môžeš pokračovať, babka?" Odchádzam si zdriemnuť.

Vrátim sa o pár hodín. Si super, babka! Všetko vyzerá skvele okrem zoznamu hobby. Na zozname je asi 1000 koníčkov. Väčšina z nich sa opakuje; Čo sa stalo?

vnuk_id
hobby

1
cyklistika

4
cyklistika

3
cyklistika

7
bezat

11
cyklistika

...pokračujme!

Prepáčte, úplne som zabudol povedať! Pomocou jedného zoznamu môžete sledovať iba hobby. Potom v inom zozname musíme sledovať vnúčatáktorí to robia hobby. Ideme to volať "Spoločný zoznam". Keď vidím, že sa vám to nepáči, začínam sa báť a vraciam sa späť do režimu zoznamu.

id
hobby

1
cyklistika

2
bezat

3
plávanie

...ďalšie koníčky!

Zoznam koníčkov

Keď máme náš zoznam koníčkov, vytvoríme náš druhý zoznam a nazveme ho „Záľuby vnúčat".

vnuk_id
hobby_id

4
1

3
1

7
2

…viac!

Všeobecný zoznam záľub vnúčat

Po všetkej tejto práci má teraz babička skvelý pamäťový systém na sledovanie svojej úžasne veľkej rodiny. A potom - aby ma udržala dlhšie - položí čarovnú otázku: "Kde si sa to všetko naučil?"

Relačné databázy

Relačná databáza je súbor formálne popísaných tabuliek (v našom príklade sú to listy), z ktorých máte prístup Podľa alebo ich zbierajte rôznymi spôsobmi bez toho, aby ste museli reorganizovať tabuľky Databáza. Existuje mnoho rôznych typov relačných databáz, ale zoznam na papieri bohužiaľ medzi ne nepatrí.

Charakteristickým znakom najpopulárnejších relačných databáz je dopytovací jazyk SQL (Structured Query Language). Vďaka nej, ak si babička preniesla pamäťový systém do počítača, mohla rýchlo dostať odpoveď na otázky typu: „Kto ma minulý rok nenavštívil, je ženatý a nemá žiadne koníčky?

Jedným z najpopulárnejších systémov správy databáz SQL je open source MySQL. Je implementovaný predovšetkým ako systém správy relačných databáz (RDBMS) pre webové softvérové ​​aplikácie.

Niektoré kľúčové vlastnosti MySQL:

  • Je pomerne známy, široko používaný a dôkladne testovaný.
  • Existuje veľa kvalifikovaných vývojárov, ktorí majú skúsenosti s prácou s SQL a relačnými databázami.
  • Dáta sú uložené v rôznych tabuľkách, čo uľahčuje vytváranie vzťahov pomocou primárnych a cudzích kľúčov (identifikátorov).
  • Je ľahko použiteľný a efektívny, vďaka čomu je ideálny pre veľké aj malé podniky.
  • Zdrojový kód je v súlade s podmienkami GNU General Public License.

Teraz na to zabudni ALL.

Vysvetlenie NoSQL babke

Babička, máme veľkú rodinu. Je v nej 150 vnúčat! Mnohí z nich sú ženatí, majú deti, majú o niečo záujem a podobne. Vo vašom veku je nemožné zapamätať si všetko o nás všetkých. Čo potrebujete, je systém zapamätania!

Našťastie ja nie Chcem, aby ste zabudli na moje narodeniny a obľúbenú príchuť zmrzliny, môžem vám pomôcť. Bežím teda do najbližšieho obchodu, beriem zápisník a vraciam sa k vám domov.

Prvým krokom, ktorý urobím, je napísať „Vnúčatá“ veľkými tučnými písmenami na obálku môjho zápisníka. Potom sa otočím na prvú stranu a začnem písať všetko, čo si o mne potrebujete zapamätať. Po niekoľkých minútach stránka vyzerá asi takto.

{ 
  "_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!"
}

Я: "Zdá sa, že je všetko pripravené!"
babička: "Počkaj, čo ostatné vnúčatá?"
Я: "Áno presne. Potom každému pridelíme stránku.“
babička: "Budem musieť pre každého zapisovať rovnaké informácie ako pre vás?"
Я: „Nie, iba ak chceš. Ukážem ti."
Beriem babkino pero, obraciam list a rýchlo zapisujem informácie o mojom najmenej obľúbenom bratrancovi.

{ 
  "_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"
}

Kedykoľvek si babka potrebuje spomenúť na niečo o niektorom zo svojich vnúčat, stačí jej prejsť na správnu stranu v zošite svojich vnúčat. Všetky informácie o nich budú uložené priamo na ich stránke, ktorú môže rýchlo meniť a aktualizovať.

Keď je všetko hotové, položí čarovnú otázku: "Kde si sa to všetko naučil?"

NoSQL databázy

Existuje veľa NoSQL databázy („nielen SQL“). V našich príkladoch sme ukázali databázy dokumentov. Databázy NoSQL modelujú údaje spôsobmi, ktoré eliminujú vzťahy medzi tabuľkami používané v relačných databázach. Tieto databázy sa stali populárnymi na začiatku 2000-tych rokov medzi spoločnosťami, ktoré vyžadovali klastrovanie databáz založených na cloude kvôli ich čistým požiadavkám na škálovanie (napr. Facebook). V takýchto aplikáciách bola konzistencia údajov oveľa menej dôležitá ako výkon a škálovateľnosť.

Na začiatku sa databázy NoSQL často používali na úlohy správy špecifických údajov. V podstate, pokiaľ ide o webové a cloudové aplikácie, databázy NoSQL spracovávali a distribuovali značné množstvo údajov. Inžinierom NoSQL sa tiež páčila flexibilita dátovej schémy (alebo jej nedostatok), takže v rozšíriteľných aplikáciách boli možné rýchle zmeny.

Kľúčové vlastnosti NoSQL:

  • Veľmi flexibilný spôsob ukladania údajov
  • Horizontálne škálovanie na klastre
  • Možná postupnosť pretrvávania/šírenia
  • Dokumenty, ktoré sú identifikované pomocou jedinečných kľúčov

Podrobné porovnanie

MySQL vyžaduje definovanú a štruktúrovanú schému.
NoSQL vám umožňuje ukladať akékoľvek údaje do „dokumentu“.

MySQL podporuje obrovská komunita.
NoSQL má malú a rýchlo rastúcu komunitu.

NoSQL sa dá ľahko škálovať.
MySQL potrebuje viac spravovateľnosti.

MySQL používa SQL, ktorý sa používa v mnohých typoch databáz.
NoSQL je navrhnutá databáza s populárnymi implementáciami.

MySQL používa štandardný dotazovací jazyk (SQL).
NoSQL nepoužíva štandardný dotazovací jazyk.

MySQL má veľa skvelých nástrojov na vytváranie prehľadov.
NoSQL má niekoľko nástrojov na vytváranie prehľadov, ktoré je ťažké štandardizovať.

MySQL môže mať problémy s výkonom pre veľké dáta.
NoSQL poskytuje vynikajúci výkon pri veľkých dátach.

Myšlienky 8základ

Vo firme 8základ, kde pracujem, poháňame pracovný priestor každého projektu pomocou relačnej databázy Aurora MySQL hosťovanej na AWS. Zatiaľ čo NoSQL je logickou voľbou, keď požiadavky vašej aplikácie vyžadujú vysoký výkon a škálovateľnosť, veríme, že silná konzistentnosť údajov poskytovaná DBMS je nevyhnutná pri vytváraní aplikácií SaaS a iného podnikového softvéru.

Pre začínajúcich podnikateľov a vývojárov, ktorí budujú podnikové aplikácie, ktoré vyžadujú reporting, transakčnú integritu a dobre definované dátové modely, je investícia do relačných databáz podľa nášho názoru správnou voľbou.

Získajte viac informácií o vývoji s Aurora, Serverless a GraphQL s 8base.com tu.

Zdroj: hab.com

Pridať komentár