Hvordan forklare bestemoren din forskjellen mellom SQL og NoSQL

Hvordan forklare bestemoren din forskjellen mellom SQL og NoSQL

En av de viktigste avgjørelsene en utvikler tar er hvilken database som skal brukes. I mange år var alternativene begrenset til de forskjellige relasjonsdatabasealternativene som støttet Structured Query Language (SQL). Disse inkluderer MS SQL Server, Oracle, MySQL, PostgreSQL, DB2 og mange flere.

I løpet av de siste 15 årene har mange nye databaser kommet inn på markedet under No-SQL-tilnærmingen. Disse inkluderer nøkkelverdibutikker som Redis og Amazon DynamoDB, brede kolonnedatabaser som Cassandra og HBase, dokumentbutikker som MongoDB og Couchbase, og grafdatabaser og søkemotorer som Elasticsearch og Solr.

I denne artikkelen vil vi prøve å forstå SQL og NoSQL uten å komme inn på funksjonaliteten deres.
I tillegg kommer vi til å ha det gøy underveis.

Forklarer SQL til bestemor

Bestemor, tenk at jeg ikke er ditt eneste barnebarn. I stedet elsket mamma og pappa hverandre som kaniner, de fikk 100 barn, så adopterte de 50 til.

Så, du elsker oss alle og vil ikke glemme noen av navnene våre, bursdager, favorittissmaker, klesstørrelser, hobbyer, ektefellenavn, avkomsnavn og andre superviktige fakta. La oss imidlertid innse det. Du er 85 år gammel og det gode gamle minnet takler det bare ikke.

Heldigvis, som den smarteste av barnebarna dine, kan jeg hjelpe. Så jeg kommer hjem til deg, jeg tar frem noen ark og ber deg bake noen småkaker før vi begynner.

På ett ark lager vi en liste som heter "Barnebarn". Hver barnebarn registrert med betydelig informasjon om ham, inkludert et unikt nummer som nå vil indikere hvordan barnebarn han er. For organiseringens skyld skriver vi også ut navngitte attributter øverst på listen slik at vi alltid vet hvilken informasjon listen inneholder.

id
navn
bursdag
siste besøk
klesstørrelse
favoritt iskrem
vedtatt

1
Jimmy
09-22-1992
09-01-2019
L
Myntesjokolade
falsk

2
Jessica
07-21-1992
02-22-2018
M
humpete vei
sant

…vi fortsetter listen!

Liste over barnebarn

Etter en stund forstår du alt og vi er nesten ferdige med listen! Men du vender deg til meg og sier: "Vi glemte å legge til plass til ektefeller, hobbyer, barnebarn!" Men nei, vi har ikke glemt det! Dette følger videre og krever et nytt ark.

Så jeg trekker frem et annet ark og på det ringer vi listen Ektefeller. Vi legger igjen attributtene som er viktige for oss øverst på listen og begynner å legge til i rader.

id
grandchild_id
navn
bursdag

1
2
John
06-01-1988

2
9
Fernanda
03-05-1985

…flere ektefeller!

Liste over ektefeller

På dette stadiet forklarer jeg bestemoren min at hvis hun vil vite hvem som er gift med hvem, så trenger hun bare å matche id i listen barnebarn с grandchild_id i listen over ektefeller.

Etter et par dusin informasjonskapsler, må jeg ta en lur. "Kan du fortsette, bestemor?" Jeg drar for å ta en lur.

Jeg kommer tilbake om noen timer. Du er kul, bestemor! Alt ser bra ut bortsett fra listen Hobby. Det er rundt 1000 hobbyer på listen. De fleste av dem er repeterende; Hva har skjedd?

grandchild_id
hobby

1
sykling

4
sykling

3
sykling

7
rennende

11
sykling

…vi fortsetter!

Beklager, jeg glemte helt å si det! Ved å bruke én liste kan du bare spore Hobby. Så i en annen liste må vi spore barnebarnsom gjør dette Hobby. Vi skal kalle det "Felles liste". Da jeg ser at du ikke liker det, blir jeg bekymret og går tilbake til listemodus.

id
hobby

1
sykling

2
rennende

3
svømming

…flere hobbyer!

Liste over hobbyer

Når vi har vår hobbyliste, lager vi vår andre liste og kaller den "Barnebarns hobbyer'.

grandchild_id
hobby_id

4
1

3
1

7
2

…mer!

Generell liste over barnebarns hobbyer

Etter alt dette arbeidet har bestemor nå et kult minnesystem for å holde styr på hele den utrolig store familien hennes. Og så - for å holde meg lenger - stiller hun det magiske spørsmålet: "Hvor har du lært å gjøre alt dette?"

Relasjonelle databaser

En relasjonsdatabase er et sett med formelt beskrevne tabeller (i vårt eksempel er dette ark) som du kan få tilgang til Ifølge eller samle dem på ulike måter uten å måtte omorganisere bordene Database. Det finnes mange forskjellige typer relasjonsdatabaser, men en liste på et stykke papir er dessverre ikke en av dem.

Kjennetegnet til de mest populære relasjonsdatabasene er spørrespråket SQL (Structured Query Language). Takket være ham, hvis bestemor overfører minnesystemet til en datamaskin, kan hun raskt få svar på spørsmål som: "Hvem besøkte meg ikke i fjor, er gift og har ingen hobbyer?"

Et av de mest populære SQL-databasestyringssystemene er åpen kildekode MySQL. Det implementeres først og fremst som et relasjonsdatabasestyringssystem (RDBMS) for nettbaserte programvareapplikasjoner.

Noen nøkkelfunksjoner i MySQL:

  • Det er ganske kjent, mye brukt og omfattende testet.
  • Det er mange dyktige utviklere som har erfaring med SQL og relasjonsdatabaser.
  • Dataene er lagret i ulike tabeller, noe som gjør det enkelt å etablere relasjoner ved hjelp av primær- og fremmednøkler (identifikatorer).
  • Den er enkel å bruke og effektiv, noe som gjør den ideell for store og små bedrifter.
  • Kildekoden er under vilkårene i GNU General Public License.

Glem nå ALLE.

Forklarer NoSQL til bestemor

Bestemor, vi har en stor familie. Hun har 150 barnebarn! Mange av dem er gift, har barn, er glad i noe og så videre. I din alder er det umulig å huske alt om oss alle. Det du trenger er et minnesystem!

Heldigvis har jeg no Jeg vil at du skal glemme bursdagen min og favorittsmaken av iskrem, jeg kan hjelpe. Så jeg løper til nærmeste butikk, tar en notatbok og går tilbake til huset ditt.

Det første skrittet jeg tar er å skrive «Barnebarn» med store, fete bokstaver på omslaget til notatboken min. Så blar jeg til første side og begynner å skrive alt du trenger å huske om meg. Noen minutter senere ser siden omtrent slik ut.

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

Я: "Det ser ut til at alt er klart!"
bestemor: "Vent, hva med resten av barnebarna?"
Я: "Ja nøyaktig. Tildel deretter én side for hver.»
bestemor: "Må jeg skrive ned all den samme informasjonen for alle, som jeg gjorde for deg?"
Я: «Nei, bare hvis du vil. La meg vise."
Jeg tar tak i min bestemors penn, blar på siden og noterer raskt ned informasjon om min minst favoritt fetter.

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

Når en bestemor trenger å huske noe om et av barnebarna hennes, trenger hun bare å navigere til riktig side i barnebarnas notatbok. All informasjon om dem vil bli lagret der på siden deres, som hun raskt kan endre og oppdatere.

Når alt er gjort, stiller hun det magiske spørsmålet: "Hvor lærte du å gjøre alt dette?"

NoSQL-databaser

Det er mange NoSQL-databaser ("ikke bare SQL"). I våre eksempler har vi vist dokumentdatabase. NoSQL-databaser modellerer data på måter som ekskluderer tabellrelasjonene som brukes i relasjonsdatabaser. Disse databasene ble populære på begynnelsen av 2000-tallet med selskaper som trengte skybasert databaseklynging på grunn av deres eksplisitte skaleringskrav (som Facebook). I slike applikasjoner var datakonsistens mye mindre viktig enn ytelse og skalerbarhet.

I begynnelsen ble NoSQL-databaser ofte brukt til nisjedatahåndteringsoppgaver. I utgangspunktet, når det kom til nett- og skyapplikasjoner, behandlet og distribuerte NoSQL-databaser betydelige mengder data. NoSQL-ingeniører likte også det fleksible dataskjemaet (eller mangelen på det), slik at raske endringer var mulig i applikasjoner som ble oppdatert.

Nøkkelfunksjoner i NoSQL:

  • Veldig fleksibel måte å lagre data på
  • Horisontal skalering til klynger
  • Mulig sekvensering per persistens/spredning
  • Dokumenter som identifiseres ved hjelp av unike nøkler

Detaljert sammenligning

MySQL krever et definert og strukturert skjema.
NoSQL lar deg lagre alle data i et "dokument".

MySQL har et stort fellesskap.
NoSQL har et lite og raskt voksende fellesskap.

NoSQL er lett å skalere.
MySQL trenger mer administrasjon.

MySQL bruker SQL, som brukes i mange typer databaser.
NoSQL er en databasebasert design med populære implementeringer.

MySQL bruker et standard spørringsspråk (SQL).
NoSQL bruker ikke et standard spørringsspråk.

MySQL har mange flotte rapporteringsverktøy.
NoSQL har flere rapporteringsverktøy som er vanskelige å standardisere.

MySQL kan vise ytelsesproblemer for big data.
NoSQL gir utmerket ytelse på big data.

Tanker 8base

Selskapet 8 baseder jeg jobber, tilbyr vi et arbeidsområde for hvert prosjekt med en Aurora MySQL relasjonsdatabase hostet på AWS. Selv om NoSQL er et logisk valg når applikasjonen din krever høy ytelse og skalerbarhet, tror vi at den sterke datakonsistensen som tilbys av et DBMS er avgjørende når du bygger SaaS-applikasjoner og annen forretningsprogramvare.

For startups og utviklere som bygger forretningsapplikasjoner som krever rapportering, transaksjonsintegritet og veldefinerte datamodeller, er investering i relasjonsdatabaser, etter vår mening, det riktige valget.

Lær mer om utvikling med Aurora, Serverless og GraphQL på 8base.com her.

Kilde: www.habr.com

Legg til en kommentar