Kuidas selgitada oma vanaemale SQL-i ja NoSQL-i erinevust

Kuidas selgitada oma vanaemale SQL-i ja NoSQL-i erinevust

Üks tähtsamaid otsuseid, mille arendaja teeb, on see, millist andmebaasi kasutada. Paljude aastate jooksul olid valikud piiratud erinevate relatsiooniandmebaasi valikutega, mis toetasid struktureeritud päringukeelt (SQL). Nende hulka kuuluvad MS SQL Server, Oracle, MySQL, PostgreSQL, DB2 ja palju muud.

Viimase 15 aasta jooksul on No-SQL-i lähenemisviisi alusel turule tulnud palju uusi andmebaase. Nende hulka kuuluvad võtmeväärtuste poed, nagu Redis ja Amazon DynamoDB, laiad veergude andmebaasid, nagu Cassandra ja HBase, dokumendipoed, nagu MongoDB ja Couchbase, ning graafikute andmebaasid ja otsingumootorid, nagu Elasticsearch ja Solr.

Selles artiklis püüame mõista SQL-i ja NoSQL-i, ilma nende funktsionaalsust uurimata.
Lisaks lõbutseme tee peal.

SQL-i selgitamine vanaemale

Vanaema, kujuta ette, et ma pole su ainus lapselaps. Selle asemel armastasid ema ja isa teineteist nagu jänesed, neil oli 100 last, siis adopteerisid veel 50 last.

Niisiis, te armastate meid kõiki ega taha unustada ühtegi meie nime, sünnipäeva, lemmikjäätise maitseid, riiete suurusi, hobisid, abikaasade nimesid, järglaste nimesid ja muid üliolulisi fakte. Siiski, olgem ausad. Sa oled 85-aastane ja vana hea mälu lihtsalt ei saa sellega hakkama.

Õnneks saan aidata, kuna olen teie lapselastest kõige targem. Nii et ma tulen teie majja, võtan välja mõned paberilehed ja palun teil küpsetada mõned küpsised, enne kui alustame.

Ühele paberilehele koostame nimekirja nimega "Lapselapsed". iga lapselaps salvestatud mõne olulise teabega tema kohta, sealhulgas kordumatu numbriga, mis nüüd näitab, kuidas lapselaps ta on. Samuti kirjutame organiseerituse huvides nimekirja ülaossa välja nimelised atribuudid, et oleks alati teada, millist infot nimekiri sisaldab.

id
nimi
sünnipäev
viimane külastus
riiete suurus
lemmik jäätis
vastu

1
Jimmy
09-22-1992
09-01-2019
L
piparmündi šokolaad
vale

2
Jessica
07-21-1992
02-22-2018
M
kivine tee
tõsi

…jätkame nimekirja!

Lastelaste nimekiri

Mõne aja pärast mõtlete selle kõik välja ja oleme nimekirjaga peaaegu valmis! Kuid pöördute minu poole ja ütlete: "Unustasime lisada ruumi abikaasadele, hobidele, lastelastele!" Aga ei, me pole unustanud! See järgneb edasi ja nõuab uut paberilehte.

Nii et ma tõmban välja veel ühe paberilehe ja sellel kutsume nimekirja Abikaasad. Lisame jällegi meile olulised atribuudid nimekirja algusesse ja hakkame ridade kaupa lisama.

id
lapselapse_id
nimi
sünnipäev

1
2
John
06-01-1988

2
9
Fernanda
03-05-1985

…rohkem abikaasasid!

Abikaasade nimekiri

Sel etapil selgitan oma vanaemale, et kui ta tahab teada, kes kellega abielus on, siis tuleb tal ainult sobitada id loendis lapselapsed с lapselapse_id abikaasade nimekirjas.

Pärast paarikümmet küpsist pean ma magama. "Kas sa saad jätkata, vanaema?" Lähen uinakut tegema.

Ma tulen mõne tunni pärast tagasi. Sa oled lahe, vanaema! Kõik näeb hea välja, välja arvatud nimekiri hobi. Nimekirjas on umbes 1000 hobi. Enamik neist on korduvad; Mis on juhtunud?

lapselapse_id
harrastus

1
biking

4
biking

3
biking

7
jooksmine

11
biking

… jätkame!

Vabandust, unustasin täiesti öelda! Ühte loendit kasutades saate ainult jälgida hobi. Siis teises loendis peame jälgima lapselapsedkes seda teevad hobi. Me kutsume seda "Üldine nimekiri". Nähes, et see teile ei meeldi, muretsen ja lähen tagasi loendirežiimi.

id
harrastus

1
biking

2
jooksmine

3
ujumine

...rohkem hobisid!

Hobide nimekiri

Kui meil on oma hobide nimekiri, koostame teise nimekirja ja kutsume seda "Lastelaste hobid'.

lapselapse_id
hobi_id

4
1

3
1

7
2

…rohkem!

Lastelaste hobide üldnimekiri

Pärast kogu seda tööd on vanaemal nüüd lahe mälusüsteem, et kogu oma hämmastavalt suure pere üle arvet pidada. Ja siis - et mind kauem hoida - esitab ta maagilise küsimuse: "Kus sa õppisid seda kõike tegema?"

Relatsiooniandmebaasid

Relatsiooniandmebaas on formaalselt kirjeldatud tabelite komplekt (meie näites on need lehed), millele pääsete juurde Vastavalt või koguge neid mitmel viisil, ilma et peaksite tabeleid ümber korraldama Andmebaas. Relatsiooniandmebaase on palju erinevaid, kuid kahjuks pole paberil olev nimekiri üks neist.

Kõige populaarsemate relatsiooniandmebaaside tunnus on SQL (Structured Query Language) päringukeel. Tänu temale saab vanaema oma mälusüsteemi arvutisse ülekandmisel kiiresti vastused sellistele küsimustele nagu: "Kes mul eelmisel aastal ei käinud, on abielus ja tal pole hobisid?"

Üks populaarsemaid SQL-i andmebaasihaldussüsteeme on avatud lähtekoodiga MySQL. Seda rakendatakse peamiselt relatsioonilise andmebaasi haldussüsteemina (RDBMS) veebipõhiste tarkvararakenduste jaoks.

Mõned MySQL-i põhifunktsioonid:

  • See on üsna tuntud, laialdaselt kasutatav ja põhjalikult testitud.
  • On palju kogenud arendajaid, kellel on kogemusi SQL-i ja relatsiooniandmebaasidega.
  • Andmed salvestatakse erinevatesse tabelitesse, mis teeb seoste loomise lihtsaks primaarsete ja võõrvõtmete (identifikaatorite) abil.
  • Seda on lihtne kasutada ja tõhus, mistõttu on see ideaalne suurtele ja väikestele ettevõtetele.
  • Lähtekood on GNU üldise avaliku litsentsi tingimuste all.

Nüüd unusta KÕIK.

NoSQL-i selgitamine vanaemale

Vanaema, meil on tohutu pere. Tal on 150 lapselast! Paljud neist on abielus, neil on lapsed, neile meeldib midagi ja nii edasi. Teie vanuses on võimatu meist kõigist kõike meeles pidada. Vaja on mälusüsteemi!

Õnneks ma ei Soovin, et unustaksite mu sünnipäeva ja lemmikjäätise maitse, võin aidata. Jooksin siis lähimasse poodi, võtan märkmiku ja naasen teie majja.

Esimese sammuna kirjutan oma märkmiku kaanele suurte paksude tähtedega "Lapselapsed". Seejärel keeran esimesele lehele ja hakkan kirjutama kõike, mida minu kohta meeles pidada. Mõni minut hiljem näeb leht välja umbes selline.

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

Я: "Tundub, et kõik on valmis!"
Бабушка: "Oot, aga ülejäänud lapselapsed?"
Я: "Jah täpselt. Seejärel eraldage igaühe jaoks üks leht.
Бабушка: "Kas ma pean kõigi jaoks sama teabe üles kirjutama nagu teie jaoks?"
Я: "Ei, ainult siis, kui soovite. Las ma näitan."
Haaran vanaema pastaka, keeran lehte ja panen kiiresti kirja info oma kõige vähem lemmiku sugulase kohta.

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

Kui vanaemal on vaja midagi mõne oma lapselapse kohta meeles pidada, piisab, kui navigeerida oma lapselaste märkmikus õigele lehele. Kogu teave nende kohta salvestatakse otse nende lehele, mida ta saab kiiresti muuta ja värskendada.

Kui kõik on tehtud, esitab ta maagilise küsimuse: "Kus sa õppisid seda kõike tegema?"

NoSQL andmebaasid

On palju NoSQL andmebaasid ("mitte ainult SQL"). Oma näidetes oleme näidanud dokumentide andmebaas. NoSQL-i andmebaasid modelleerivad andmeid viisil, mis välistab relatsiooniandmebaasides kasutatavad tabelisuhted. Need andmebaasid muutusid populaarseks 2000. aastate alguses ettevõtete seas, kes vajasid pilvepõhist andmebaaside rühmitamist nende selgete skaleerimisnõuete tõttu (nagu Facebook). Sellistes rakendustes oli andmete järjepidevus palju vähem oluline kui jõudlus ja skaleeritavus.

Alguses kasutati NoSQL-i andmebaase sageli nišiandmete haldamiseks. Põhimõtteliselt, mis puudutab veebi- ja pilverakendusi, siis NoSQL-i andmebaasid töötlesid ja levitasid märkimisväärses koguses andmeid. NoSQL-i inseneridele meeldis ka paindlik andmeskeem (või selle puudumine), nii et värskendatud rakendustes olid võimalikud kiired muudatused.

NoSQL-i põhifunktsioonid:

  • Väga paindlik viis andmete salvestamiseks
  • Horisontaalne skaleerimine klastriteks
  • Võimalik järjestamine püsivuse/levi kohta
  • Unikaalsete võtmete abil tuvastatavad dokumendid

Üksikasjalik võrdlus

MySQL nõuab määratletud ja struktureeritud skeemi.
NoSQL võimaldab salvestada mis tahes andmeid "dokumenti".

MySQL-il on tohutu kogukond.
NoSQL-il on väike ja kiiresti kasvav kogukond.

NoSQL-i on lihtne skaleerida.
MySQL vajab rohkem hallatavust.

MySQL kasutab SQL-i, mida kasutatakse mitut tüüpi andmebaasides.
NoSQL on populaarsete rakendustega andmebaasipõhine disain.

MySQL kasutab standardset päringukeelt (SQL).
NoSQL ei kasuta standardset päringukeelt.

MySQL-il on palju suurepäraseid aruandlustööriistu.
NoSQL-il on mitu aruandlustööriista, mida on raske standardida.

MySQL võib näidata suurandmete jõudlusprobleeme.
NoSQL pakub suurepärast jõudlust suurandmete puhul.

Mõtted 8base

Ettevõte 8basekus ma töötan, pakume iga projekti jaoks tööruumi, kus on AWS-is hostitud Aurora MySQL relatsiooniandmebaas. Kuigi NoSQL on loogiline valik, kui teie rakendus nõuab suurt jõudlust ja mastaapsust, usume, et DBMS-i pakutav tugev andmete järjepidevus on SaaS-i rakenduste ja muu äritarkvara koostamisel hädavajalik.

Alustavatele ettevõtetele ja arendajatele, kes loovad ärirakendusi, mis nõuavad aruandlust, tehingute terviklikkust ja täpselt määratletud andmemudeleid, on relatsiooniandmebaasidesse investeerimine meie arvates õige valik.

Lisateavet Aurora, Serverlessi ja GraphQL-iga arendamise kohta leiate veebisaidilt 8base.com siin.

Allikas: www.habr.com

Lisa kommentaar