Kako svoji babici razložiti razliko med SQL in NoSQL

Kako svoji babici razložiti razliko med SQL in NoSQL

Ena najpomembnejših odločitev, ki jih sprejme razvijalec, je, katero bazo podatkov bo uporabil. Dolga leta so bile možnosti omejene na različne možnosti relacijske baze podatkov, ki so podpirale jezik strukturiranih poizvedb (SQL). Sem spadajo MS SQL Server, Oracle, MySQL, PostgreSQL, DB2 in mnogi drugi.

V zadnjih 15 letih je na trg vstopilo veliko novih baz podatkov v okviru pristopa No-SQL. Sem spadajo shrambe ključev in vrednosti, kot sta Redis in Amazon DynamoDB, zbirke podatkov s širokimi stolpci, kot sta Cassandra in HBase, shrambe dokumentov, kot sta MongoDB in Couchbase, ter zbirke podatkov z grafi in iskalniki, kot sta Elasticsearch in Solr.

V tem članku bomo poskušali razumeti SQL in NoSQL, ne da bi se spuščali v njuno funkcionalnost.
Poleg tega se bomo na poti še zabavali.

Babici razlagam SQL

Babica, predstavljaj si, da nisem tvoj edini vnuk. Namesto tega sta se mama in oče imela rada kot zajca, imela sta 100 otrok, nato sta jih posvojila še 50.

Torej, vse nas imate radi in ne želite pozabiti nobenega od naših imen, rojstnih dni, najljubših okusov sladoleda, velikosti oblačil, hobijev, imen zakoncev, imen potomcev in drugih zelo pomembnih dejstev. Vendar, priznajmo si. Star si 85 let in dobri stari spomin tega preprosto ne prenese.

Na srečo, ker sem najpametnejši od vaših vnukov, lahko pomagam. Torej pridem k vam domov, vzamem nekaj listov papirja in vas prosim, da spečete nekaj piškotov, preden začnemo.

Na enem listu papirja naredimo seznam z imenom "Vnuki". vsak vnuk zabeležen z nekaj pomembnimi informacijami o njem, vključno z edinstveno številko, ki bo zdaj pokazala, kako vnuk on je. Prav tako zaradi organizacije na vrh seznama izpišemo poimenovane atribute, da vedno vemo, katere informacije vsebuje seznam.

id
Ime
rojstni dan
zadnji obisk
velikost oblačil
najljubši sladoled
sprejet

1
Jimmy
09-22-1992
09-01-2019
L
metina čokolada
false

2
Jessica
07-21-1992
02-22-2018
M
Kamnita cesta
Res

…nadaljujemo seznam!

Seznam vnukov

Čez nekaj časa razumete vse in skoraj smo končali s seznamom! Vendar se obrnete name in rečete: "Pozabili smo dodati prostor za zakonce, hobije, vnuke!" Ampak ne, nismo pozabili! To sledi naprej in zahteva nov list papirja.

Zato potegnem ven še en list papirja in na njem pokličemo seznam Zakonca. Ponovno dodamo za nas pomembne atribute na vrh seznama in začnemo dodajati po vrsticah.

id
vnuk_id
Ime
rojstni dan

1
2
John
06-01-1988

2
9
Fernanda
03-05-1985

… več zakoncev!

Seznam zakoncev

Na tej stopnji svoji babici razložim, da če hoče vedeti, kdo je s kom poročen, se mora samo ujemati id na seznamu vnuki с vnuk_id v seznamu zakoncev.

Po nekaj ducatih piškotov moram zadremati. "Ali lahko nadaljuješ, babica?" Grem malo zadremat.

Vrnem se čez nekaj ur. Kul si, babica! Vse je videti super, razen seznama hobi. Na seznamu je okoli 1000 hobijev. Večina se jih ponavlja; Kaj se je zgodilo?

vnuk_id
hobi

1
kolesarjenje

4
kolesarjenje

3
kolesarjenje

7
tek

11
kolesarjenje

…nadaljujemo!

Oprosti, popolnoma sem pozabil povedati! Z uporabo enega seznama lahko samo sledite hobi. Nato na drugem seznamu, ki ga moramo izslediti vnukiki to delajo hobi. Poklicali ga bomo "Skupni seznam". Ko vidim, da ti ni všeč, postanem zaskrbljen in se vrnem v način seznama.

id
hobi

1
kolesarjenje

2
tek

3
plavanje

…več hobijev!

Seznam hobijev

Ko imamo svoj seznam hobijev, ustvarimo naš drugi seznam in ga imenujemo "Hobiji vnukov".

vnuk_id
hobby_id

4
1

3
1

7
2

… več!

Splošni seznam hobijev vnukov

Po vsem tem delu ima babica zdaj kul pomnilniški sistem, s katerim lahko spremlja svojo celotno neverjetno veliko družino. In potem - da bi me zadržala dlje - mi postavi čarobno vprašanje: "Kje si se vsega tega naučil?"

Relacijske baze podatkov

Relacijska zbirka podatkov je niz formalno opisanih tabel (v našem primeru so to listi), iz katerih lahko dostopate Glede na ali jih zbirajte na različne načine, ne da bi morali reorganizirati tabele Zbirka podatkov. Obstaja veliko različnih vrst relacijskih baz podatkov, a seznam na listu papirja žal ni ena izmed njih.

Zaščitni znak najbolj priljubljenih relacijskih baz podatkov je jezik poizvedb SQL (Structured Query Language). Zahvaljujoč njemu lahko babica, če svoj pomnilniški sistem prenese v računalnik, hitro dobi odgovore na vprašanja, kot so: "Kdo me lani ni obiskal, je poročen in nima hobijev?"

Eden najbolj priljubljenih sistemov za upravljanje baz podatkov SQL je odprtokodni MySQL. Implementiran je predvsem kot sistem za upravljanje relacijskih baz podatkov (RDBMS) za spletne programske aplikacije.

Nekatere ključne funkcije MySQL:

  • Je dokaj dobro znan, pogosto uporabljen in obsežno preizkušen.
  • Obstaja veliko usposobljenih razvijalcev, ki imajo izkušnje s SQL in relacijskimi bazami podatkov.
  • Podatki so shranjeni v različnih tabelah, kar omogoča enostavno vzpostavljanje odnosov s primarnimi in tujimi ključi (identifikatorji).
  • Je enostaven za uporabo in učinkovit, zaradi česar je idealen za velika in mala podjetja.
  • Izvorna koda je pod pogoji splošne javne licence GNU.

Zdaj pozabi VSE.

Razlaga NoSQL babici

Babica, imamo ogromno družino. Ima 150 vnukov! Veliko jih je poročenih, imajo otroke, jim je kaj všeč in podobno. Pri tvojih letih si je nemogoče zapomniti vse o vseh nas. Kar potrebujete, je pomnilniški sistem!

Na srečo, jaz ne želim, da pozabiš na moj rojstni dan in najljubši okus sladoleda, lahko pomagam. Zato tečem do najbližje trgovine, vzamem zvezek in se vrnem k tebi domov.

Prvi korak, ki ga naredim, je, da na naslovnico svojega zvezka z velikimi krepkimi črkami napišem "Vnuki". Nato obrnem na prvo stran in začnem pisati vse, kar si moraš zapomniti o meni. Nekaj ​​minut kasneje je stran videti nekako takole.

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

Я: "Zdi se, da je vse pripravljeno!"
Бабушка: "Počakaj, kaj pa ostali vnuki?"
Я: "Ja točno. Nato vsakemu dodelite eno stran.«
Бабушка: "Ali bom moral za vse zapisati iste podatke, kot sem jih za vas?"
Я: »Ne, samo če hočeš. Naj pokažem."
Zgrabim babičino pero, obrnem stran in na hitro zapišem podatke o svojem najmanj priljubljenem bratrancu.

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

Kadarkoli se mora babica spomniti nečesa o enem od svojih vnukov, se mora le pomakniti na pravo stran v vnukovem zvezku. Vse informacije o njih bodo shranjene kar na njihovi strani, ki jih bo lahko hitro spremenila in posodobila.

Ko je vse narejeno, postavi čarobno vprašanje: "Kje si se vsega tega naučil?"

Baze podatkov NoSQL

Obstaja veliko Baze podatkov NoSQL (»ne samo SQL«). Na naših primerih smo pokazali baza dokumentov. Baze podatkov NoSQL modelirajo podatke na načine, ki izključujejo relacije tabel, ki se uporabljajo v relacijskih bazah podatkov. Te zbirke podatkov so postale priljubljene v zgodnjih 2000-ih pri podjetjih, ki so potrebovala združevanje baz podatkov v oblaku zaradi izrecnih zahtev glede skaliranja (kot je Facebook). V takih aplikacijah je bila doslednost podatkov veliko manj pomembna kot zmogljivost in razširljivost.

Na začetku so se baze podatkov NoSQL pogosto uporabljale za nišne naloge upravljanja podatkov. V bistvu, ko je šlo za spletne in oblačne aplikacije, so baze podatkov NoSQL obdelale in razdelile znatne količine podatkov. Inženirjem NoSQL je bila všeč tudi prilagodljiva podatkovna shema (ali pomanjkanje le-te), tako da so bile možne hitre spremembe v aplikacijah, ki so bile posodobljene.

Ključne lastnosti NoSQL:

  • Zelo prilagodljiv način shranjevanja podatkov
  • Horizontalno skaliranje v grozde
  • Možno zaporedje glede na obstojnost/širjenje
  • Dokumenti, ki so identificirani z edinstvenimi ključi

Podrobna primerjava

MySQL zahteva definirano in strukturirano shemo.
NoSQL vam omogoča shranjevanje poljubnih podatkov v "dokument".

MySQL ima ogromno skupnost.
NoSQL ima majhno in hitro rastočo skupnost.

NoSQL je enostavno prilagoditi.
MySQL potrebuje več vodljivosti.

MySQL uporablja SQL, ki se uporablja v mnogih vrstah baz podatkov.
NoSQL je zasnovana na bazi podatkov s priljubljenimi izvedbami.

MySQL uporablja standardni jezik poizvedb (SQL).
NoSQL ne uporablja standardnega jezika poizvedb.

MySQL ima veliko odličnih orodij za poročanje.
NoSQL ima več orodij za poročanje, ki jih je težko standardizirati.

MySQL lahko prikaže težave z zmogljivostjo velikih podatkov.
NoSQL zagotavlja odlično zmogljivost pri velikih podatkih.

Misli 8base

Podjetje 8bazakjer delam, nudimo delovni prostor za vsak projekt z relacijsko zbirko podatkov Aurora MySQL, ki gostuje na AWS. Medtem ko je NoSQL logična izbira, ko vaša aplikacija zahteva visoko zmogljivost in razširljivost, menimo, da je močna konsistentnost podatkov, ki jo zagotavlja DBMS, bistvena pri gradnji aplikacij SaaS in druge poslovne programske opreme.

Za startupe in razvijalce, ki gradijo poslovne aplikacije, ki zahtevajo poročanje, celovitost transakcij in natančno definirane podatkovne modele, je po našem mnenju naložba v relacijske baze podatkov prava izbira.

Izvedite več o razvoju z Auroro, Serverless in GraphQL na 8base.com tukaj.

Vir: www.habr.com

Dodaj komentar