Kuidas seletada oma vanaemale erinevust SQL-i ja NoSQL-i vahel

Kuidas seletada oma vanaemale erinevust SQL-i ja NoSQL-i vahel

Üks olulisemaid otsuseid, mille arendaja peab tegema, on, millist andmebaasi kasutada. Aastate jooksul on võimalused olnud piiratud erinevate relatsiooniliste andmebaasidega, mis toetavad struktureeritud päringute keelt (SQL). Nendeks on MS SQL Server, Oracle, MySQL, PostgreSQL, DB2 ja paljud teised.

Viimase 15 aasta jooksul on turule tulnud palju uusi andmebaase No-SQL lähenemise raames. Nendeks on võtme-väärtuse salvestused, nagu Redis ja Amazon DynamoDB, laiad veergu andmebaasid, nagu Cassandra ja HBase, dokumentide salvestused, nagu MongoDB ja Couchbase, samuti graafandmebaasid ja otsingumootorid, nagu Elasticsearch ja Solr.

Selles artiklis püüame aru saada SQL-ist ja NoSQL-ist, ilma nende funktsionaalsusesse süvenemata.
Pealegi, me veedame protsessis veidi lõbusalt aega.

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 et sa armastad meid kõiki ja ei taha unustada ühtegi meie nimest, sünnipäevadest, lemmikjäätise maitsest, riietuse suurusest, hobidest, abikaasa nimedest, lastest ja muudest üliolulistest faktidest. Kuid vaatame tõele näkku. Sul on 85 aastat ja vana hea mälu lihtsalt ei suuda sellega toime tulla.

Kuid õnneks, olles sinu kõige targem lapselaps, saan ma aidata. Seetõttu tulen ma sinu koju, võtan mõned paberilehed ja palun sul küpsetada küpsiseid enne, kui alustame.

Ühele paberile me koostame nimekirja pealkirjaga „Lapselapsed“. Iga lapselaps on üles kirjutatud teatud olulise teabega, sealhulgas ainulaadne number, mis tähistab, milline lapselaps ta on. Lisaks, korralikkuse huvides kirjutame nimega atribuute loendi ülesse, et me alati teaksime, millist teavet see nimekiri sisaldab.

id
nimi
sünnipäev
viimane külastus
riietuse suurus
lemmikjäätis
adopteeritud

1
Jimmy
09-22-1992
09-01-2019
L
mentoli šokolaad
false

2
Jessica
07-21-1992
02-22-2018
M
Rocky road
true

… jätkame nimekirja!

Laste nimekiri

Mõne aja pärast saad sa kõigest aru ja me oleme käesoleva nimekirjaga peaaegu valmis! Siiski pöördud sa minu poole ja ütled: „Me unustasime lisada koha abikaasade, hobide, lastelaste jaoks!” Kuid ei, me ei ole unustanud! See tuleb edasi ja vajab uut paberilehte.

Nii et tõstan ma välja veel ühe paberilehe ja sellel paneme nimekirja Abikaasad. Me lisame uuesti olulised atribuudid loendi algusesse ja hakkame ridade kaupa lisama.

id
grandchild_id
nimi
sünnipäev

1
2
John
06-01-1988

2
9
Fernanda
03-05-1985

…rohkem abikaasasid!

Abikaasade loend

Sel hetkel selgitan vanaemale, et kui ta tahab teada, kes on abielus kellega, peab ta lihtsalt sobitama id loendis lastelastega jot grandchild_id abikaasade loendis.

Pärast paarikümne küpsise söömist pean ma uinuma. "Kas sa saad jätkata, vanaema?" Ma lähen magama.

Tulnuksin tagasi paar tunni pärast. Sa oled vinge, vanaema! Kõik näeb suurepärane välja, välja arvatud loend hobi. Loendis on umbes 1000 hobit. Enamik neist korduvad; mis juhtus?

grandchild_id
hobby

1
jalgrattasõit

4
jalgrattasõit

3
jalgrattasõit

7
käivitatud

11
jalgrattasõit

…Jätkame!

Vabandust, ma unustasin täiesti öelda! Ühe loendi kasutamine võimaldab jälgida ainult hobi. Siis teises loendis peame jälgima lastelastega, kellel on see hobi. Me kavatseme nimetada seda "Ühine loend". Nähtavasti see sulle ei meeldi, ma hakkan muretsema ja naasen loendi režiimi.

id
hobby

1
jalgrattasõit

2
käivitatud

3
ujumine

…rohkem hobisid!

Hobide loend

Kuna meil on olemas meie hobide loend, loome meie teise loendi ja nimetame selle "Lastelaste hobid».

grandchild_id
hobby_id

4
1

3
1

7
2

…rohkem!

Ühine loend lastelaste hobidest

Pärast kogu seda tööd on vanaema nüüd saanud ägeda süsteemi, et jälgida kogu oma uskumatult suurte perede üle. Ja siis — et mind kauem kinni hoida — küsib ta maagilise küsimuse: "Kus sa õpid kõike seda tegema?"

Suhtelised andmebaasid

Suhteline andmebaas on formaalselt kirja pandud tabelite kogum (meie näites need on lehed), millele on võimalik ligi pääseda andmete või koguda neid mitmel viisil ilma tabelite ümberkorraldamiseta andmebaasid. On olemas palju erinevaid tüüpe suhtelistest andmebaasidest, kuid kahjuks ei ole paberliste loendite nimekiri üks neist.

Üks peamisi omadusi populaarsetes suhtelistes andmebaasides on SQL (Structured Query Language) päringukeel. Tänu sellele, kui vanaema viib oma mälusüsteemi arvutisse, saab ta kiiresti vastata küsimustele, nagu: "Kes ei külastanud mind eelmisel aastal, on abielus ja ei omasta mingeid hobisid?"

Üks populaarsemaid SQL andmebaaside haldamise süsteeme on MySQL avatud lähtekoodiga. See on välja töötatud peamiselt suhteliste andmebaaside haldamise süsteemina (RDBMS) veebitehnoloogiatel põhinevate tarkvararakenduste jaoks.

Mõned MySQLi peamised omadused:

  • See on üsna tuntud, laialdaselt kasutusel ja põhjalikult testitud.
  • On palju kvalifitseeritud arendajaid, kellel on kogemusi SQLi ja relatsiooniliste andmebaasidega.
  • Andmed on salvestatud erinevates tabelites, mis võimaldab hõlpsasti luua seoseid primaarvõtmete ja välisvõtmete (identifikaatorite) abil.
  • See on lihtne kasutada ja efektiivne, muutes selle ideaaliks nii suurtele kui ka väikestele ettevõtetele.
  • Allikas on saadaval GNU Üldise Avaliku Litsentsi tingimustes.

Nüüd unusta KÕIK.

Selgitame NoSQLi vanaemale

Vanaema, meil on suur pere. Meie peres on 150 lapselast! Paljud neist on abielus, neil on lapsi, nad teevad erinevaid asju ja nii edasi. Sinu vanuses on võimatu kõigi meie kohta kõike meeles pidada. Mida sa vajad, on mälu süsteem!

Õnneks, mina, ei soovides, et sa unustaksid mu sünnipäeva ja lemmikjäätise maitse, saan aidata. Seega jooksen lähimasse poodi, võtan vihiku ja tulen tagasi sinu juurde.

Esimene samm, mille ma teen, on kirjutada "Lapselapsed" suurte paksude tähtedega vihiku kaanele. Seejärel leian esimesele leheküljele ja hakkan kirjutama kõike, mida sa pead 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 games",
     "computers",
     "cooking"
  ],
  "spouse":null,
  "kids":[ 

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

Mina: "Näib, et kõik on valmis!"
Vanaema: "Aga oota, aga kuidas teiste lapselastega on?"
Mina: "Jah, täpselt. Siis eraldame igale lehe!"
Vanaema: "Kas pean kõigi jaoks kurssi hoidma sama teavet nagu sinu jaoks?"
Mina: "Ei, vaid kui sa tahad. Lase ma näitan."
Võttes vanaemalt pliiatsi, keeran lehte ja kirjutan kiiresti teavet minu kõige vähem lemmikust nõost.

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

Iga kord, kui vanaemal on vaja midagi meelde jätta mõne lapselapse kohta, peab ta lihtsalt minema sobivale lehele lapselaste märkmete vihikus. Kõik nende kohta käiv teave on salvestatud otse seal, nende lehe peal, mida ta saab kiiresti muuta ja värskendada.

Kui kõik on juba tehtud, küsib ta maagilist küsimust: «Kust sa õppisid seda kõike tegema?»

NoSQL andmebaasid

On olemas mitmeid NoSQL andmebaase (“mitte ainult SQL”). Meie näidetes oleme näidanud dokumendibaasi. NoSQL andmebaasid modelleerivad andmeid viisil, mis välistab tabelipõhised seosed, mida kasutatakse relatsioonilistes andmebaasides. Need andmebaasid said populaarseks 2000. aastate alguses ettevõtete seas, kes vajasid pilves andmebaaside klasterdamist oma ilmsete skaleerimisnõuete tõttu (näiteks Facebook). Sellistes rakendustes oli andmete järjepidevus oluliselt vähem tähtis kui jõudlus ja skaleeritavus.

Alguses kasutati NoSQL andmebaase sageli nišši andmehaldusülesannete jaoks. Eriti siis, kui oli tegemist veebirakenduste ja pilve rakendustega, töötlesid NoSQL andmebaasid ja jagasid suures mahus andmeid. NoSQL-iga töötavatele inseneridele meeldis ka andmeskeemi paindlikkus (või selle täielik puudumine), nii et uuendatavates rakendustes olid kiired muudatused võimalikud.

NoSQL peamised omadused:

  • Väga paindlik andmehaldussüsteem
  • Horisontaalne skaleerimine klastriteks
  • Võimalik järjepidevus püsimisel / levitamisel
  • Dokumendid, mida tuvastatakse ainulaadsete võtmete abil

Detailne 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 eristub skaleerimise lihtsuse poolest.
MySQL vajab rohkem haldamist.

MySQL kasutab SQL-i, mida rakendatakse paljude tüüpi andmebaasides.
NoSQL on disainipõhine andmebaas populaarsete rakendustega.

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

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

MySQL võib suurte andmete puhul põhjustada jõudlusprobleeme.
NoSQL tagab suurepärase jõudluse suurte andmete korral.

Mõtted 8base

Ettevõttes 8base, kus ma töötan, tagame iga projekti tööruumi seose andmebaasiga Aurora MySQL, mis on majutatud AWS-is. Kuigi NoSQL on mõistlik valik, kui teie rakenduse nõudmised eeldavad suurt jõudlust ja skaleeritavust, usume, et andmete range kooskõla, mida pakub andmebaasihaldussüsteem, on vajalik SaaS-rakenduste ja muu äritarkvara loomisel.

Startuppidele ja arendajatele, kes loovad selliseid ärirakendusi, mis vajavad aruandlust, tehingute terviklikkust ja selgelt määratletud andmemudeleid, on meie arust õige valik investeerida töötamisse seoste andmebaasidega.

Tutvuge Aurora, Serverless ja GraphQL arendamisega 8base.com kaudu. siin.

Allikas: habr.com

Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster