Hoe u aan uw grootmoeder het verschil tussen SQL en NoSQL kunt uitleggen

Hoe u aan uw grootmoeder het verschil tussen SQL en NoSQL kunt uitleggen

Een van de belangrijkste beslissingen die een ontwikkelaar neemt, is welke database hij moet gebruiken. Jarenlang waren de opties beperkt tot de verschillende relationele databaseopties die de Structured Query Language (SQL) ondersteunden. Deze omvatten MS SQL Server, Oracle, MySQL, PostgreSQL, DB2 en nog veel meer.

De afgelopen vijftien jaar zijn er veel nieuwe databases op de markt gekomen onder de No-SQL-aanpak. Deze omvatten sleutelwaardewinkels zoals Redis en Amazon DynamoDB, databases met brede kolommen zoals Cassandra en HBase, documentwinkels zoals MongoDB en Couchbase, en grafiekdatabases en zoekmachines zoals Elasticsearch en Solr.

In dit artikel zullen we proberen SQL en NoSQL te begrijpen zonder in te gaan op hun functionaliteit.
Bovendien zullen we onderweg wat plezier beleven.

SQL uitleggen aan oma

Oma, stel u voor dat ik niet uw enige kleinzoon ben. In plaats daarvan hielden mama en papa van elkaar als konijnen, ze kregen 100 kinderen en adopteerden er daarna nog eens 50.

Dus je houdt van ons allemaal en wilt onze namen, verjaardagen, favoriete ijssmaken, kledingmaten, hobby's, namen van echtgenoten, namen van nakomelingen en andere superbelangrijke feiten niet vergeten. Maar laten we eerlijk zijn. Je bent 85 jaar oud en de goede oude herinnering kan het gewoon niet aan.

Gelukkig kan ik, als slimste van uw kleinkinderen, helpen. Dus ik kom naar je huis, ik haal er wat vellen papier uit en ik vraag je om wat koekjes te bakken voordat we beginnen.

Op één vel papier maken we een lijst met de naam "kleinkinderen". Elk kleinzoon opgenomen met belangrijke informatie over hem, waaronder een uniek nummer dat nu aangeeft hoe kleinzoon hij is. Omwille van de organisatie schrijven we de benoemde attributen bovenaan de lijst, zodat we altijd weten welke informatie de lijst bevat.

id
naam
verjaardag
laatste bezoek
kledingmaat
favoriete ijsje
aangenomen

1
Jimmy
09-22-1992
09-01-2019
L
Munt chocolade
vals

2
Jessica
07-21-1992
02-22-2018
M
rotsachtige weg
waar

…we vervolgen de lijst!

Lijst van kleinkinderen

Na een tijdje begrijp je alles en zijn we bijna klaar met de lijst! Je wendt je echter tot mij en zegt: "We zijn vergeten ruimte toe te voegen voor echtgenoten, hobby's en kleinkinderen!" Maar nee, we zijn het niet vergeten! Dit volgt verder en vereist een nieuw vel papier.

Dus ik haal er nog een vel papier uit en daarop roepen we de lijst op echtgenoten. We voegen opnieuw de attributen die voor ons belangrijk zijn toe aan de bovenkant van de lijst en beginnen met het toevoegen in rijen.

id
kleinkind_id
naam
verjaardag

1
2
John
06-01-1988

2
9
Fernanda
03-05-1985

…meer echtgenoten!

Lijst van echtgenoten

In dit stadium leg ik mijn grootmoeder uit dat als ze wil weten wie met wie getrouwd is, ze alleen maar hoeft te matchen id in de lijst kleinkinderen с kleinkind_id in de lijst van echtgenoten.

Na een paar dozijn koekjes moet ik een dutje doen. "Kunt u doorgaan, oma?" Ik ga even een dutje doen.

Ik kom over een paar uur terug. Je bent cool, oma! Alles ziet er geweldig uit, behalve de lijst хобби. Er staan ​​ongeveer 1000 hobby's op de lijst. De meeste ervan zijn repetitief; Wat is er gebeurd?

kleinkind_id
hobby

1
fietsen

4
fietsen

3
fietsen

7
lopend

11
fietsen

…we vervolgen!

Sorry, ik was het helemaal vergeten te zeggen! Met één lijst kunt u alleen volgen хобби. Dan moeten we in een andere lijst traceren kleinkinderenwie doen dit хобби. We gaan het bellen "Gemeenschappelijke lijst". Als ik zie dat je het niet leuk vindt, maak ik me zorgen en ga ik terug naar de lijstmodus.

id
hobby

1
fietsen

2
lopend

3
zwemmen

…meer hobby’s!

Lijst met hobby's

Zodra we onze hobbylijst hebben, maken we onze tweede lijst en noemen deze "Hobby's van kleinkinderen.

kleinkind_id
hobby_id

4
1

3
1

7
2

…meer!

Algemene lijst met hobby's van kleinkinderen

Na al dit werk heeft oma nu een cool geheugensysteem waarmee ze haar hele verbazingwekkend grote gezin kan bijhouden. En dan stelt ze - om me langer vast te houden - de magische vraag: "Waar heb je dit allemaal geleerd?"

relationele databases

Een relationele database is een reeks formeel beschreven tabellen (in ons voorbeeld zijn dit bladen) waartoe u toegang hebt Volgens of verzamel ze op verschillende manieren zonder dat u de tafels opnieuw hoeft in te delen Database. Er zijn veel verschillende soorten relationele databases, maar helaas hoort een lijst op een vel papier daar niet bij.

Het kenmerk van de meest populaire relationele databases is de querytaal SQL (Structured Query Language). Dankzij hem kan ze, als oma haar geheugensysteem naar een computer overzet, snel antwoorden krijgen op vragen als: "Wie is vorig jaar niet bij mij op bezoek geweest, is getrouwd en heeft geen hobby's?"

Een van de meest populaire SQL-databasebeheersystemen is het open source MySQL. Het wordt voornamelijk geïmplementeerd als een relationeel databasebeheersysteem (RDBMS) voor webgebaseerde softwaretoepassingen.

Enkele belangrijke kenmerken van MySQL:

  • Het is redelijk bekend, veel gebruikt en uitvoerig getest.
  • Er zijn veel ervaren ontwikkelaars die ervaring hebben met SQL en relationele databases.
  • De gegevens worden opgeslagen in verschillende tabellen, waardoor het eenvoudig is om relaties tot stand te brengen met behulp van primaire en externe sleutels (identifiers).
  • Het is gemakkelijk te gebruiken en efficiënt, waardoor het ideaal is voor grote en kleine bedrijven.
  • De broncode valt onder de voorwaarden van de GNU General Public License.

Vergeet het nu ALL.

NoSQL uitleggen aan oma

Oma, we hebben een enorme familie. Ze heeft 150 kleinkinderen! Velen van hen zijn getrouwd, hebben kinderen, zijn ergens dol op, enzovoort. Op jouw leeftijd is het onmogelijk om alles van ons allemaal te onthouden. Wat je nodig hebt is een geheugensysteem!

Gelukkig, ik geen Ik wil dat je mijn verjaardag en favoriete ijssmaak vergeet, ik kan je helpen. Dus ren ik naar de dichtstbijzijnde winkel, pak een notitieboekje en ga terug naar je huis.

De eerste stap die ik zet is het schrijven van "Kleinkinderen" in grote, vetgedrukte letters op de omslag van mijn notitieboekje. Dan blader ik naar de eerste pagina en begin met het schrijven van alles wat je over mij moet onthouden. Een paar minuten later ziet de pagina er ongeveer zo uit.

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

Я: “Het lijkt erop dat alles klaar is!”
grootmoeder: “Wacht, hoe zit het met de rest van de kleinkinderen?”
Я: "Ja precies. Wijs vervolgens voor elke pagina één pagina toe.”
grootmoeder: “Moet ik voor iedereen dezelfde informatie opschrijven, zoals ik voor jou heb gedaan?”
Я: “Nee, alleen als jij dat wilt. Laat me zien."
Ik pak de pen van mijn grootmoeder, sla de pagina om en noteer snel informatie over mijn minst favoriete neef.

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

Wanneer een grootmoeder zich iets moet herinneren over een van haar kleinkinderen, hoeft ze alleen maar naar de juiste pagina in het notitieboekje van haar kleinkinderen te navigeren. Alle informatie over hen wordt daar op hun pagina opgeslagen, die ze snel kan wijzigen en bijwerken.

Als alles klaar is, stelt ze de magische vraag: "Waar heb je dit allemaal geleerd?"

NoSQL-databases

Er zijn er veel NoSQL-databases (“niet alleen SQL”). In onze voorbeelden hebben we het laten zien documentdatabase. NoSQL-databases modelleren gegevens op een manier die de tabelrelaties uitsluit die in relationele databases worden gebruikt. Deze databases werden begin jaren 2000 populair bij bedrijven die cloudgebaseerde databaseclustering nodig hadden vanwege hun expliciete schaalvereisten (zoals Facebook). In dergelijke toepassingen was dataconsistentie veel minder belangrijk dan prestaties en schaalbaarheid.

In het begin werden NoSQL-databases vaak gebruikt voor nichegegevensbeheertaken. Kortom, als het om web- en cloudapplicaties ging, verwerkten en distribueerden NoSQL-databases aanzienlijke hoeveelheden gegevens. NoSQL-ingenieurs hielden ook van het flexibele dataschema (of het gebrek daaraan), zodat snelle veranderingen mogelijk waren in applicaties die werden bijgewerkt.

Belangrijkste kenmerken van NoSQL:

  • Zeer flexibele manier om gegevens op te slaan
  • Horizontaal schalen naar clusters
  • Mogelijke volgordebepaling per persistentie/spreiding
  • Documenten die worden geïdentificeerd met behulp van unieke sleutels

Gedetailleerde vergelijking

MySQL vereist een gedefinieerd en gestructureerd schema.
Met NoSQL kunt u alle gegevens in een "document" opslaan.

MySQL heeft een enorme community.
NoSQL heeft een kleine en snelgroeiende community.

NoSQL is eenvoudig te schalen.
MySQL heeft meer beheersbaarheid nodig.

MySQL maakt gebruik van SQL, dat in veel soorten databases wordt gebruikt.
NoSQL is een databasegebaseerd ontwerp met populaire implementaties.

MySQL gebruikt een standaard querytaal (SQL).
NoSQL gebruikt geen standaard querytaal.

MySQL heeft veel geweldige rapportagetools.
NoSQL heeft verschillende rapportagetools die moeilijk te standaardiseren zijn.

MySQL kan prestatieproblemen voor big data laten zien.
NoSQL biedt uitstekende prestaties op het gebied van big data.

Gedachten 8basis

Het bedrijf 8 basiswaar ik werk, bieden we voor elk project een werkruimte met een Aurora MySQL relationele database gehost op AWS. Hoewel NoSQL een logische keuze is wanneer uw applicatie hoge prestaties en schaalbaarheid vereist, zijn wij van mening dat de sterke dataconsistentie van een DBMS essentieel is bij het bouwen van SaaS-applicaties en andere bedrijfssoftware.

Voor startups en ontwikkelaars die bedrijfsapplicaties bouwen die rapportage, transactionele integriteit en goed gedefinieerde datamodellen vereisen, is investeren in relationele databases naar onze mening de juiste keuze.

Lees meer over ontwikkelen met Aurora, Serverless en GraphQL op 8base.com hier.

Bron: www.habr.com

Voeg een reactie