Kuinka selittää isoäidillesi ero SQL:n ja NoSQL:n välillä

Kuinka selittää isoäidillesi ero SQL:n ja NoSQL:n välillä

Yksi kehittäjän tärkeimmistä päätöksistä on käyttää tietokantaa. Monien vuosien ajan vaihtoehdot rajoittuivat erilaisiin relaatiotietokantavaihtoehtoihin, jotka tukivat SQL (Structured Query Language) -kieltä. Näitä ovat MS SQL Server, Oracle, MySQL, PostgreSQL, DB2 ja monet muut.

Viimeisten 15 vuoden aikana markkinoille on tullut monia uusia tietokantoja No-SQL-lähestymistavan mukaisesti. Näitä ovat avainarvokaupat, kuten Redis ja Amazon DynamoDB, laajat saraketietokannat, kuten Cassandra ja HBase, asiakirjakaupat, kuten MongoDB ja Couchbase, sekä kaaviotietokannat ja hakukoneet, kuten Elasticsearch ja Solr.

Tässä artikkelissa yritämme ymmärtää SQL:ää ja NoSQL:ää perehtymättä niiden toimintoihin.
Lisäksi meillä on hauskaa matkan varrella.

SQL:n selittäminen mummille

Isoäiti, kuvittele, etten ole ainoa pojanpoikasi. Sen sijaan äiti ja isä rakastivat toisiaan kuin kaneja, heillä oli 100 lasta, sitten he adoptoivat 50 lisää.

Rakastat siis meitä kaikkia etkä halua unohtaa nimiä, syntymäpäiviä, suosikkijäätelön makuja, vaatekokoja, harrastuksia, puolisoiden nimiä, jälkeläisten nimiä ja muita erittäin tärkeitä faktoja. Katsotaan kuitenkin asia. Olet 85-vuotias ja vanha hyvä muisti ei vain kestä sitä.

Onneksi voin auttaa, koska olen älykkäin lapsenlapsistasi. Joten tulen kotiisi, otan muutaman paperiarkin ja pyydän sinua leipomaan keksejä ennen kuin aloitamme.

Yhdelle paperiarkille teemme luettelon nimeltä "lastenlapset". Joka pojanpoika tallennettu joitakin tärkeitä tietoja hänestä, mukaan lukien yksilöllinen numero, joka nyt osoittaa kuinka pojanpoika hän on. Lisäksi järjestelyn vuoksi kirjoitamme listan alkuun nimetyt attribuutit, jotta tiedämme aina mitä tietoa lista sisältää.

id
nimi
syntymäpäivä
viimeinen vierailu
vaatteiden koko
suosikki jäätelö
hyväksytty

1
Sorkkarauta
09-22-1992
09-01-2019
L
Minttusuklaa
väärä

2
Jessica
07-21-1992
02-22-2018
M
Kivinen tie
totta

…jatkamme listaa!

Luettelo lastenlapsista

Hetken kuluttua ymmärrät kaiken ja olemme melkein valmiit luettelon kanssa! Käännyt kuitenkin puoleeni ja sanot: ”Unohdimme lisätä tilaa puolisoille, harrastuksille, lastenlapsille!” Mutta ei, emme ole unohtaneet! Tämä jatkuu ja vaatii uuden paperiarkin.

Joten vedän esiin toisen paperiarkin ja kutsumme siihen luettelon Puolisot. Lisäämme jälleen meille tärkeät attribuutit luettelon alkuun ja aloitamme lisäämisen riveinä.

id
lapsenlapsen_tunnus
nimi
syntymäpäivä

1
2
Johannes
06-01-1988

2
9
Fernanda
03-05-1985

…lisää puolisoita!

Luettelo puolisoista

Tässä vaiheessa selitän isoäidilleni, että jos hän haluaa tietää, kuka on naimisissa kenen kanssa, hänen tarvitsee vain sopia id luettelossa lapsenlapset с lapsenlapsen_tunnus puolisoiden luettelossa.

Parin tusinan keksin jälkeen minun täytyy ottaa päiväunet. "Voitko jatkaa, isoäiti?" Lähden nukkumaan päiväunet.

Palaan muutaman tunnin kuluttua. Olet siisti, isoäiti! Kaikki näyttää hyvältä paitsi luettelo harraste. Listalla on noin 1000 harrastusta. Useimmat niistä ovat toistuvia; Mitä on tapahtunut?

lapsenlapsen_tunnus
harraste

1
pyöräily

4
pyöräily

3
pyöräily

7
juoksu

11
pyöräily

…me jatkamme!

Anteeksi, unohdin sanoa kokonaan! Yhdellä listalla voit vain seurata harraste. Sitten toisessa luettelossa meidän on jäljitettävä lapsenlapsetjotka tekevät tätä harraste. Aiomme kutsua sitä "Yleinen lista". Näen, että et pidä siitä, aloin huolestua ja palaan luettelotilaan.

id
harraste

1
pyöräily

2
juoksu

3
uinti

…lisää harrastuksia!

Lista harrastuksista

Kun meillä on harrastuslistamme, luomme toisen listamme ja kutsumme sitä "Lapsenlasten harrastukset'.

lapsenlapsen_tunnus
harrastuksen_tunnus

4
1

3
1

7
2

…lisää!

Yleinen lista lastenlasten harrastuksista

Kaiken tämän työn jälkeen isoäidillä on nyt siisti muistijärjestelmä, jolla voi seurata koko hämmästyttävän suurta perhettään. Ja sitten - pitääkseen minut pidempään - hän kysyy maagisen kysymyksen: "Missä opit tekemään tämän kaiken?"

Relaatiotietokannat

Relaatiotietokanta on joukko muodollisesti kuvattuja taulukoita (esimerkissämme nämä ovat taulukoita), joista pääset käsiksi Mukaan tai kerätä niitä eri tavoin ilman, että sinun tarvitsee järjestää taulukoita uudelleen Tietokanta. Relaatiotietokantoja on monia erilaisia, mutta valitettavasti paperilla oleva luettelo ei ole yksi niistä.

Suosituimpien relaatiotietokantojen erottuva piirre on kyselykieli SQL (Structured Query Language). Sen ansiosta, jos mummo siirsi muistijärjestelmänsä tietokoneelle, hän sai nopeasti vastauksen kysymyksiin, kuten: "Kuka ei käynyt luonani viime vuonna, on naimisissa eikä hänellä ole harrastuksia?"

Yksi suosituimmista SQL-tietokannan hallintajärjestelmistä on avoimen lähdekoodin MySQL. Se toteutetaan ensisijaisesti relaatiotietokannan hallintajärjestelmänä (RDBMS) web-pohjaisille ohjelmistosovelluksille.

Jotkut MySQL:n tärkeimmät ominaisuudet:

  • Se on melko hyvin tunnettu, laajalti käytetty ja laajasti testattu.
  • On monia taitavia kehittäjiä, joilla on kokemusta SQL:stä ja relaatiotietokannoista.
  • Tiedot tallennetaan erilaisiin taulukoihin, mikä helpottaa suhteiden muodostamista ensisijaisten ja vierasavaimien (tunnisteiden) avulla.
  • Se on helppokäyttöinen ja tehokas, joten se on ihanteellinen suurille ja pienille yrityksille.
  • Lähdekoodi on GNU General Public License -lisenssin ehtojen alainen.

Nyt unohda KAIKKI.

NoSQL:n selittäminen isoäidille

Isoäiti, meillä on valtava perhe. Hänellä on 150 lastenlasta! Monet heistä ovat naimisissa, heillä on lapsia, rakastavat jotain ja niin edelleen. Sinun iässäsi on mahdotonta muistaa kaikkea meistä kaikista. Tarvitset muistijärjestelmän!

Onneksi minä ei Haluan sinun unohtavan syntymäpäiväni ja suosikkijäätelön makuni, voin auttaa. Joten juoksen lähimpään kauppaan, otan muistikirjan ja palaan kotiisi.

Ensimmäinen askel, jonka otan, on kirjoittaa "Lastenlapset" isoilla lihavoiduilla kirjaimilla vihkoni kanteen. Sitten selan ensimmäiselle sivulle ja alan kirjoittaa kaikkea, mitä sinun tarvitsee muistaa minusta. Muutamaa minuuttia myöhemmin sivu näyttää suunnilleen tältä.

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

Я: "Näyttää siltä, ​​että kaikki on valmista!"
isoäiti: "Odota, entä loput lastenlapset?"
Я: "Kyllä täsmälleen. Varaa sitten kullekin yksi sivu."
isoäiti: "Pitäisikö minun kirjoittaa kaikki samat tiedot kaikille, kuten tein sinulle?"
Я: "Ei, vain jos haluat. Anna minun näyttää."
Tartun isoäitini kynään, kääntelen sivua ja kirjoitan nopeasti muistiin tietoja vähiten suosikki serkkustani.

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

Aina kun isoäidin tarvitsee muistaa jotain lapsenlapsistaan, hänen tarvitsee vain mennä oikealle sivulle lastenlastensa muistikirjassa. Kaikki tiedot heistä tallennetaan heidän sivulleen, jota hän voi nopeasti muuttaa ja päivittää.

Kun kaikki on tehty, hän kysyy maagisen kysymyksen: "Missä opit tekemään tämän kaiken?"

NoSQL-tietokannat

On olemassa monia NoSQL-tietokannat ("ei vain SQL"). Esimerkeissämme olemme osoittaneet asiakirjatietokanta. NoSQL-tietokannat mallintavat tietoja tavoilla, jotka sulkevat pois relaatiotietokannoissa käytetyt taulukkosuhteet. Näistä tietokannoista tuli suosittuja 2000-luvun alussa yritysten keskuudessa, jotka tarvitsivat pilvipohjaista tietokantaklusterointia nimenomaisten skaalausvaatimustensa vuoksi (kuten Facebook). Tällaisissa sovelluksissa tietojen johdonmukaisuus oli paljon vähemmän tärkeä kuin suorituskyky ja skaalautuvuus.

Alussa NoSQL-tietokantoja käytettiin usein niche-tiedonhallintatehtäviin. Pohjimmiltaan web- ja pilvisovellusten osalta NoSQL-tietokannat käsittelivät ja jakoivat merkittäviä tietomääriä. NoSQL-insinöörit pitivät myös joustavasta tietoskeemasta (tai sen puutteesta), joten päivitetyissä sovelluksissa oli mahdollista tehdä nopeat muutokset.

NoSQL:n tärkeimmät ominaisuudet:

  • Erittäin joustava tapa tallentaa tietoja
  • Vaakasuora skaalaus klusteriin
  • Mahdollinen sekvensointi persistenssin/levityksen mukaan
  • Asiakirjat, jotka tunnistetaan yksilöllisillä avaimilla

Yksityiskohtainen vertailu

MySQL vaatii määritellyn ja jäsennellyn skeeman.
NoSQL:n avulla voit tallentaa mitä tahansa dataa "asiakirjaan".

MySQL:llä on valtava yhteisö.
NoSQL:llä on pieni ja nopeasti kasvava yhteisö.

NoSQL on helppo skaalata.
MySQL tarvitsee enemmän hallittavuutta.

MySQL käyttää SQL:ää, jota käytetään monenlaisissa tietokantoissa.
NoSQL on tietokantapohjainen suunnittelu, jossa on suosittuja toteutuksia.

MySQL käyttää tavallista kyselykieltä (SQL).
NoSQL ei käytä tavallista kyselykieltä.

MySQL:llä on monia upeita raportointityökaluja.
NoSQL:llä on useita raportointityökaluja, joita on vaikea standardoida.

MySQL voi näyttää suorituskykyongelmia big datalle.
NoSQL tarjoaa erinomaisen suorituskyvyn big datassa.

Ajatuksia 8base

Yhtiö 8basemissä työskentelen, tarjoamme jokaiselle projektille työtilan Aurora MySQL -relaatiotietokannan kanssa, jota isännöi AWS. Vaikka NoSQL on looginen valinta, kun sovelluksesi vaatii korkeaa suorituskykyä ja skaalautuvuutta, uskomme, että DBMS:n tarjoama vahva tietojen johdonmukaisuus on välttämätöntä SaaS-sovelluksia ja muita yritysohjelmistoja rakennettaessa.

Aloittelijoille ja kehittäjille, jotka rakentavat liiketoimintasovelluksia, jotka vaativat raportoinnin, tapahtumien eheyden ja hyvin määriteltyjä tietomalleja, relaatiotietokantoihin sijoittaminen on mielestämme oikea valinta.

Lisätietoja kehittämisestä Auroran, Serverlessin ja GraphQL:n kanssa osoitteessa 8base.com täällä.

Lähde: will.com

Lisää kommentti