Kuidas selgitada oma vanaisale SQL-i ja NoSQL-i vahet

Kuidas selgitada oma vanaisale SQL-i ja NoSQL-i vahet

Üks tähtsamaid otsuseid, mida arendaja teeb, on see, millist andmebaasi kasutada. Aastate jooksul on valikud olnud piiratud mitmesuguste relatsiooniliste andmebaasidega, mis toetavad struktureeritud päringute keelt (SQL). Nende seas on MS SQL Server, Oracle, MySQL, PostgreSQL, DB2 ja paljud teised.

Viimase 15 aasta jooksul on turule ilmunud palju uusi andmebaase No-SQL lähenemise raames. Nende hulka kuuluvad võtme-väärtuse hoidlad, nagu Redis ja Amazon DynamoDB, laiemad veergude andmebaasid, nagu Cassandra ja HBase, dokumentide hoidlad, nagu MongoDB ja Couchbase, ning graafikaandmebaasid ja otsimootorid, nagu Elasticsearch ja Solr.

Selles artiklis püüame mõista SQL-i ja NoSQL-i, süvenemata nende funktsionaalsusesse.
Lisaks veedame protsessis natuke nalja.

Selgitame vanaemale SQL-i

Vanaema, kujuta ette, et ma ei ole sinu ainus lapselaps. Selle asemel armastasid ema ja isa üksteist nagu küülikud, neil oli 100 last, seejärel adopteerisid nad veel 50.

Nii, sa armastad meid kõiki ja ei soovi unustada ühtegi meie nimedest, sünnipäevadest, lemmikjäätise maitsest, riietuse suurustest, hobidest, abikaasade nimedest, laste nimedest ja teistest ülimalt olulistest faktidest. Kuid vaatame tõele otse näkku. Sa oled 85-aastane ja vana hea mälu lihtsalt ei suuda enam hakkama saada.

Õnneks, olles su targim lapselaps, saan ma aidata. Seega tulen ma sinu juurde, võtan mõned paberilehed ja palun sul küpsetada küpsiseid enne, kui me alustada saame.

Ühel paberilehel koostame nimekirja nimega „Lapselapsed“. Iga lapselaps on üles kirjutatud koos mõningate oluliste andmetega tema kohta, sealhulgas unikaalne number, mis tähistab nüüd, millisest lapselapsed ta on. Lisaks, et kõik oleks organiseeritud, kirjutame nimega atribuudid nimekirja ülemisse ossa, et me teaksime alati, millist teavet see nimekiri sisaldab.

id
name
sünnipäev
viimane külastus
riietuse suurus
lemmikjäätis
lapsendatud

1
Jimmy
09-22-1992
09-01-2019
L
Mündi šokolaad
false

2
Jessica
07-21-1992
02-22-2018
M
Kivimite tee
true

…jätkame nimekirja!

Laste nimekiri

Mõne aja pärast saad sa kõik selgeks ja me oleme peaaegu nimekirja lõpetanud! Kuid sa pöördud minu poole ja ütled: „Me unustasime lisada abikaasade, hobide, lastelaste koht!” Aga ei, me ei unustanud! See tuleb edasi ja vajab uut paberilehte.

Nii et ma võtan välja veel ühe paberilehe, ja sellel nimetame nimekirja Abikaasad. Lisame taas nimekirja algusesse meie jaoks olulised atribuudid ja hakkame ridade kaupa lisama.

id
grandchild_id
name
sünnipäev

1
2
John
06-01-1988

2
9
Fernanda
03-05-1985

…rohkem abikaasasid!

Abikaasade nimekiri

Selles etapis selgitan vanaemale, et kui ta tahab teada, kes kellega on abielus, peab ta lihtsalt võrdlema id nimekirjas lastelastega koos grandchild_id abikaasade nimekirjas.

Paarikümne küpsise pärast peaksin silma ära puhkama. „Kas sa saad jätkata, vanaema?” Ma lähen, et puhkama jääda.

Tulenen paar tund tagasi. Ja sa oled lahe, vanaema! Kõik näeb suurepärane välja, välja arvatud nimekiri hobidest. Nimekirjas on umbes 1000 hobi. Enamik neist kordub; mis juhtus?

grandchild_id
hobby

1
jalgrattasõit

4
jalgrattasõit

3
jalgrattasõit

7
jooks

11
jalgrattasõit

…jätkame!

Vabandust, unustasin täiesti öelda! Ühe nimekirjaga saab jälgida ainult hobidest. Siis teises nimekirjas tuleb meil jälgida lastelastega, kes sellega tegelevad hobidest. Kavatseme seda „Üksik loetelu“. Näha, et see sulle ei meeldi, hakkan muretsema ja naasen loendisse.

id
hobby

1
jalgrattasõit

2
jooks

3
ujumine

…rohkem hobisid!

Hobide loetelu

Kui meil on oma hobide loetelu, loome oma teise loetelu ja nimetame selle „lastelaste hobid».

grandchild_id
hobby_id

4
1

3
1

7
2

…rohkem!

Üksik loetelu lastelaste hobidest

Pärast kogu seda tööd on vanaemal nüüd suurepärane meelespeaside süsteem, et jälgida kogu tema uskumatult suurt peret. Ja siis — et mind kauem kinni hoida — küsib ta maagilist küsimust: „Kust sa seda kõike õppisid?“

Seotud andmebaasid

Seotud andmebaas on hulk formaalselt kirjeldatud tabeleid (meie näites need on lehed), millele saab juurde pääseda andmetele või koguda neid erineval viisil, ilma et oleks vaja tabeleid ümber korraldada andmebaasid. On palju erinevaid seotud andmebaase, kuid kahjuks ei ole paberile kirjutatud nimekiri üks neist.

Kõige populaarsemate relatsiooniliste andmebaaside peamine omadus on SQL (Structured Query Language) päringute keel. Selle abil saab kiiresti vastuseid sellistele küsimustele nagu: "Kes ei külastanud mind eelmisel aastal, on abielus ja ei oma mingeid hobi?"

Üks populaarsemaid SQL andmebaashaldussüsteeme on avatud lähtekoodiga MySQL. See on loodud peamiselt relatsiooniliste andmebaaside (RDBMS) haldamiseks veepõhistes rakendustes.

Mõned MySQLi peamised omadused:

  • See on üsna tuntud, laialdaselt kasutatav ja põhjalikult katsetatud.
  • On palju kvalifitseeritud arendajaid, kellel on kogemusi SQL ja relatsiooniliste andmebaasidega.
  • Andmeid hoitakse erinevates tabelites, mis võimaldab hõlpsalt luua seoseid, kasutades esmaseid ja väliseid võtmeid (identifikaatoreid).
  • See on lihtne kasutada ja efektiivne, mistõttu sobib see ideaalselt suurtele ja väikestele ettevõtetele.
  • Allikas on saadaval GNU Avo Üldine litsents.

Nüüd unusta KÕIK.

Selgitame vanaemale NoSQL

Vanaema, meil on suur perekond. Meie seas on 150 lapselast! Paljud neist on abielus, neil on lapsed, nad tegelevad millegagi ja muud sarnast. Sinu vanuses on võimatu meid kõiki meeles pidada. Sul on vaja meenutamise süsteemi!

Õnneks saan mina, ei kellele ei meenu sinu sünnipäev ega lemmikjäätise maitse, aidata. Nii et jooksen lähimasse poodi, ostan märkmiku ja tulen tagasi sinu koju.

Esimene samm, mida ma teen, on kirjutada "Lapselapsed" suurte ja paksude tähtedega märkmiku kaanele. Seejärel lehitseme esimesele lehele ja hakkan kirjutama kõike, mida sa peaksid minu kohta meeles pidama. Mõne minuti pärast näeb leht välja umbes nii.

{ 
  "_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 game'id",
     "arvutid",
     "kokandus"
  ],
  "spouse":null,
  "kids":[ 

  ],
  "favorite_picture":"file://scrapbook-103/christmas-2010.jpg",
  "misc_notes":"Eelistab sünnipäeval jäätisekooki šokolaadikuki asemel!"
}

Mina: “Tundub, et kõik on valmis!”
Vanaema: “Oota, aga kuidas teiste lapselastega?”
Mina: “Jah, täpselt. Siis teeme igaühe kohta ühe lehe.”
Vanaema: “Kas ma pean kõigi jaoks sama informatsiooni kirja panema, nagu ma sinu jaoks tegin?”
Mina: “Ei, ainult kui sa tahad. Las ma näitan.”
Vanaema pliiatsi ära võttes, lehitsema lehte ja kiiruga kirja panema informatsiooni minu kõige vähem lemmikust nõo kohta.

{ 
  "_id":"dh97dhs9b39397ss001",
  "name":"Tanner",
  "birthday":"09-12-2008",
  "clothing_size":"S",
  "friend_count":0,
  "favorite_picture":null,
  "remember":"Sündinud samal päeval kui Cody, kuid mitte nii oluline"
}

Iga kord, kui vanama peab midagi meenutama ühe lastelapse kohta, peab ta lihtsalt minema loodud lehele lastelaste märkmikus. Kõik info nende kohta hoitakse seal, nende lehel, mida ta saab kiiresti muuta ja uuendada.

Kui kõik on tehtud, küsib ta maagilise küsimuse: „Kust sa õppisid seda kõike tegema?”

NoSQL andmebaasid

On mitmeid NoSQL andmebaase (“ei ole ainult SQL”). Meie näidetes oleme näidanud dokumentide andmebaasi. NoSQL andmebaasid modelleerivad andmeid viisil, mis välistab tabelipõhised suhted, mida kasutatakse relatsioonilistes andmebaasides. Need andmebaasid said populaarsuseks 2000. aastate alguses ettevõtete seas, kes vajasid pilvklasterdamise andmebaase nende väljendatud skaleerimisnõuete tõttu (näiteks Facebook). Sellistes rakendustes oli andmete järjepidevus palju vähem oluline kui jõudlus ja skaleeritavus.

Alguses kasutati NoSQL andmebaase sageli nishipõhiste andmehalduse ülesannete täitmiseks. Eelkõige, kui asi puudutas veebivõrku ja pilverakendusi, töötlesid ja jagasid NoSQL andmebaasid suuri andmemahtusid. NoSQL-i insenerid hindasid ka andmeskeemi paindlikkust (või selle täielikku puudumist), mistõttu oli võimalik kiireid muudatusi värskendatavates rakendustes.

NoSQL-i peamised omadused:

  • Väga paindlik andmete salvestamise viis
  • Horisontaalne skaleerimine klastritesse
  • Võimalik järjepidevus püsivuse / jaotamise osas
  • Dokumendid, mida tuvastatakse ainulaadsete võtmete abil

Üksikasjalik võrdlus

MySQL vajab kindlat ja struktureeritud skeemi.
NoSQL võimaldab salvestada igasuguseid andmeid «dokumendis».

MySQL-l on suur kogukond.
NoSQL-l on väike ja kiiresti kasvav kogukond.

NoSQL paistab silma lihtsa skaleeritavuse poolest.
MySQL vajab suuremat haldamist.

MySQL kasutab SQL-i, mida rakendatakse paljudes andmebaasitüüpides.
NoSQL on kujunduspõhine andmebaas, millel on populaarsed rakendused.

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

MySQL-l on palju suurepäraseid aruandlusvahendeid.
NoSQL-l on mitmeid aruandlusvahendeid, mida on raske standardiseerida.

MySQL võib suurte andmete puhul tootlikkuse probleeme põhjustada.
NoSQL tagab suurepärase tootlikkuse suurtes andmetes.

Mõtted 8base

Ettevõttes 8base, kus ma töötan, tagame iga projekti töökeskkonna koos AWS-is majutatud Aurora MySQL relationaaldatabaasiga. Kuigi NoSQL on mõistlik valik, kui teie rakenduse nõudmised nõuavad kõrget jõudlust ja skaleeritavust, usume, et andmete range järjepidevus, mida pakub RDBMS, on SaaS-rakenduste ja muu ärianalüüsi tarkvara arendamisel hädavajalik.

Alustavate ettevõtete ja arendajate jaoks, kes loovad selliseid ärrakendusi, mis vajavad aruandlust, tehingute terviklikkust ja selgelt määratletud andmemudeleid, on investorite jaoks suunamine relationaaldatabaasidega töötamise suunas meie arvates õige otsus.

Tutvuge rohkem arendamisega, kasutades Aurora, Serverless ja GraphQL koos 8base.com-iga siit.

Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster