Sådan forklarer du din bedstemor forskellen mellem SQL og NoSQL

Sådan forklarer du din bedstemor forskellen mellem SQL og NoSQL

En af de vigtigste beslutninger, en udvikler træffer, er, hvilken database der skal bruges. I mange år var mulighederne begrænset til de forskellige relationelle databasemuligheder, der understøttede Structured Query Language (SQL). Disse omfatter MS SQL Server, Oracle, MySQL, PostgreSQL, DB2 og mange flere.

I løbet af de sidste 15 år er der kommet mange nye databaser på markedet under No-SQL tilgangen. Disse omfatter nøgleværdibutikker som Redis og Amazon DynamoDB, brede kolonnedatabaser som Cassandra og HBase, dokumentbutikker som MongoDB og Couchbase og grafdatabaser og søgemaskiner som Elasticsearch og Solr.

I denne artikel vil vi forsøge at forstå SQL og NoSQL uden at komme ind på deres funktionalitet.
Derudover vil vi have det sjovt undervejs.

Forklarer SQL til bedstemor

Bedstemor, forestil dig, at jeg ikke er dit eneste barnebarn. I stedet elskede mor og far hinanden som kaniner, de fik 100 børn, så adopterede de 50 mere.

Så du elsker os alle og ønsker ikke at glemme nogen af ​​vores navne, fødselsdage, yndlingsis-smag, tøjstørrelser, hobbyer, ægtefællers navne, afkomsnavne og andre super vigtige fakta. Lad os dog se det i øjnene. Du er 85 år gammel, og den gode gamle hukommelse kan bare ikke klare det.

Heldigvis kan jeg hjælpe, fordi jeg er den klogeste af dine børnebørn. Så jeg kommer hjem til dig, jeg tager nogle ark papir frem, og jeg beder dig bage nogle småkager, før vi starter.

På et ark papir laver vi en liste, der hedder "Børnebørn". Hver sønnesøn registreret med nogle væsentlige oplysninger om ham, herunder et unikt nummer, der nu vil indikere hvordan sønnesøn han er. Af hensyn til organisationen udskriver vi også navngivne attributter øverst på listen, så vi altid ved, hvilke oplysninger listen indeholder.

id
navn
fødselsdag
sidste besøg
tøj størrelse
yndlingsis
vedtaget

1
Jimmy
09-22-1992
09-01-2019
L
Mint chokolade
falsk

2
jessica
07-21-1992
02-22-2018
M
Stenet vej
sand

…vi fortsætter listen!

Liste over børnebørn

Efter et stykke tid forstår du alt, og vi er næsten færdige med listen! Men du vender dig til mig og siger: "Vi har glemt at tilføje plads til ægtefæller, hobbyer, børnebørn!" Men nej, det har vi ikke glemt! Dette følger videre og kræver et nyt ark papir.

Så jeg trækker endnu et ark papir frem og på det kalder vi listen Ægtefæller. Vi tilføjer igen de attributter, der er vigtige for os, til toppen af ​​listen og begynder at tilføje i rækker.

id
grandchild_id
navn
fødselsdag

1
2
John
06-01-1988

2
9
Fernanda
03-05-1985

… flere ægtefæller!

Liste over ægtefæller

På dette tidspunkt forklarer jeg min bedstemor, at hvis hun vil vide, hvem der er gift med hvem, så skal hun kun matche id på listen børnebørn с grandchild_id på listen over ægtefæller.

Efter et par dusin småkager skal jeg tage en lur. "Kan du fortsætte, bedstemor?" Jeg tager afsted for at tage en lur.

Jeg vender tilbage om et par timer. Du er sej, bedstemor! Alt ser godt ud bortset fra listen hobby. Der er omkring 1000 hobbyer på listen. De fleste af dem er gentagne; Hvad er der sket?

grandchild_id
hobby

1
cykling

4
cykling

3
cykling

7
kører

11
cykling

… vi fortsætter!

Undskyld, jeg glemte helt at sige! Ved at bruge én liste kan du kun spore hobby. Så i en anden liste skal vi spore børnebørnhvem gør dette hobby. Vi vil kalde det "Fælles liste". Da jeg ser, at du ikke kan lide det, bliver jeg bekymret og går tilbage til listetilstand.

id
hobby

1
cykling

2
kører

3
svømning

…flere hobbyer!

Liste over hobbyer

Når vi har vores hobbyliste, opretter vi vores anden liste og kalder den "Børnebørns hobbyer'.

grandchild_id
hobby_id

4
1

3
1

7
2

…mere!

Generel liste over børnebørns hobbyer

Efter alt dette arbejde har bedstemor nu et sejt hukommelsessystem til at holde styr på hele hendes utroligt store familie. Og så - for at holde mig længere - stiller hun det magiske spørgsmål: "Hvor har du lært at gøre alt det her?"

Relationelle databaser

En relationsdatabase er et sæt af formelt beskrevne tabeller (i vores eksempel er disse ark), hvorfra du kan få adgang Ifølge eller samle dem på forskellige måder uden at skulle omorganisere bordene Database. Der findes mange forskellige typer relationsdatabaser, men en liste på et stykke papir er desværre ikke en af ​​dem.

Kendetegnet for de mest populære relationelle databaser er SQL (Structured Query Language) forespørgselssprog. Takket være ham, hvis bedstemor overfører sit hukommelsessystem til en computer, kan hun hurtigt få svar på spørgsmål som: "Hvem besøgte mig ikke sidste år, er gift og har ingen hobbyer?"

Et af de mest populære SQL-databasestyringssystemer er open source MySQL. Det implementeres primært som et relationelt databasestyringssystem (RDBMS) til webbaserede softwareapplikationer.

Nogle nøglefunktioner i MySQL:

  • Det er ret velkendt, meget brugt og meget testet.
  • Der er mange dygtige udviklere, som har erfaring med SQL og relationelle databaser.
  • Dataene er lagret i forskellige tabeller, hvilket gør det nemt at etablere relationer ved hjælp af primære og fremmede nøgler (identifikatorer).
  • Den er nem at bruge og effektiv, hvilket gør den ideel til store og små virksomheder.
  • Kildekoden er under betingelserne i GNU General Public License.

Glem nu ALLE.

Forklarer NoSQL til bedstemor

Bedstemor, vi har en kæmpe familie. Hun har 150 børnebørn! Mange af dem er gift, har børn, er glade for noget og så videre. I din alder er det umuligt at huske alt om os alle. Det du har brug for er et hukommelsessystem!

Heldigvis har jeg nej Jeg vil gerne have, at du glemmer min fødselsdag og yndlingssmag af is, jeg kan hjælpe. Så jeg løber til den nærmeste butik, tager en notesbog og vender tilbage til dit hus.

Det første skridt, jeg tager, er at skrive "Børnebørn" med store fede bogstaver på omslaget af min notesbog. Så bladrer jeg til den første side og begynder at skrive alt, hvad du skal huske om mig. Et par minutter senere ser siden nogenlunde sådan ud.

{ 
  "_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 ud til at alt er klar!"
bedstemor: "Vent, hvad med resten af ​​børnebørnene?"
Я: "Ja præcis. Tildel derefter en side til hver."
bedstemor: "Bliver jeg nødt til at skrive alle de samme oplysninger ned for alle, som jeg gjorde for dig?"
Я: “Nej, kun hvis du vil. Lad mig vise."
Jeg griber min bedstemors pen, bladrer rundt på siden og noterer hurtigt oplysninger om min mindst yndlingskusine ned.

{ 
  "_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 bedstemor skal huske noget om et af sine børnebørn, behøver hun kun at navigere til den rigtige side i sine børnebørns notesbog. Alle oplysninger om dem vil blive gemt lige der på deres side, som hun hurtigt kan ændre og opdatere.

Når alt er gjort, stiller hun det magiske spørgsmål: "Hvor har du lært at gøre alt dette?"

NoSQL databaser

Der er mange NoSQL databaser ("ikke kun SQL"). I vores eksempler har vi vist dokumentdatabase. NoSQL-databaser modellerer data på måder, der udelukker de tabelrelationer, der bruges i relationelle databaser. Disse databaser blev populære i begyndelsen af ​​2000'erne hos virksomheder, der havde brug for cloud-baseret databaseklyngning på grund af deres eksplicitte skaleringskrav (som Facebook). I sådanne applikationer var datakonsistens meget mindre vigtig end ydeevne og skalerbarhed.

I begyndelsen blev NoSQL-databaser ofte brugt til nichedatahåndteringsopgaver. Dybest set, når det kom til web- og cloud-applikationer, behandlede og distribuerede NoSQL-databaser betydelige mængder data. NoSQL-ingeniører kunne også lide det fleksible dataskema (eller mangel på det), så hurtige ændringer var mulige i applikationer, der blev opdateret.

Nøglefunktioner i NoSQL:

  • Meget fleksibel måde at gemme data på
  • Horisontal skalering til klynger
  • Mulig sekventering pr persistens/spredning
  • Dokumenter, der identificeres ved hjælp af unikke nøgler

Detaljeret sammenligning

MySQL kræver et defineret og struktureret skema.
NoSQL giver dig mulighed for at gemme alle data i et "dokument".

MySQL har et stort fællesskab.
NoSQL har et lille og hurtigt voksende fællesskab.

NoSQL er let at skalere.
MySQL har brug for mere håndterbarhed.

MySQL bruger SQL, som bruges i mange typer databaser.
NoSQL er et databasebaseret design med populære implementeringer.

MySQL bruger et standard forespørgselssprog (SQL).
NoSQL bruger ikke et standard forespørgselssprog.

MySQL har mange gode rapporteringsværktøjer.
NoSQL har flere rapporteringsværktøjer, som er svære at standardisere.

MySQL kan vise ydeevneproblemer for big data.
NoSQL giver fremragende ydeevne på big data.

Tanker 8 base

Virksomheden 8 basehvor jeg arbejder, giver vi et arbejdsområde til hvert projekt med en Aurora MySQL relationsdatabase hostet på AWS. Selvom NoSQL er et logisk valg, når din applikation kræver høj ydeevne og skalerbarhed, mener vi, at den stærke datakonsistens, som et DBMS giver, er afgørende, når du bygger SaaS-applikationer og anden forretningssoftware.

For startups og udviklere, der bygger forretningsapplikationer, der kræver rapportering, transaktionsintegritet og veldefinerede datamodeller, er investering i relationelle databaser efter vores mening det rigtige valg.

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

Kilde: www.habr.com

Tilføj en kommentar