Hur du förklarar för din mormor skillnaden mellan SQL och NoSQL

Hur du förklarar för din mormor skillnaden mellan SQL och NoSQL

Ett av de viktigaste besluten en utvecklare fattar är vilken databas som ska användas. Under många år var alternativen begränsade till de olika relationsdatabasalternativen som stödde Structured Query Language (SQL). Dessa inkluderar MS SQL Server, Oracle, MySQL, PostgreSQL, DB2 och många fler.

Under de senaste 15 åren har många nya databaser kommit in på marknaden under No-SQL-metoden. Dessa inkluderar nyckel-värde-butiker som Redis och Amazon DynamoDB, breda kolumndatabaser som Cassandra och HBase, dokumentbutiker som MongoDB och Couchbase, och grafdatabaser och sökmotorer som Elasticsearch och Solr.

I den här artikeln kommer vi att försöka förstå SQL och NoSQL utan att komma in på deras funktionalitet.
Dessutom kommer vi att ha kul på vägen.

Förklarar SQL för farmor

Mormor, tänk dig att jag inte är ditt enda barnbarn. Istället älskade mamma och pappa varandra som kaniner, de fick 100 barn, sedan adopterade de 50 till.

Så, du älskar oss alla och vill inte glömma något av våra namn, födelsedagar, favoritglassmaker, klädstorlekar, hobbyer, makas namn, avkommor och andra superviktiga fakta. Men låt oss inse det. Du är 85 år gammal och det gamla goda minnet kan bara inte hantera det.

Som tur är kan jag hjälpa dig, eftersom jag är den smartaste av dina barnbarn. Så jag kommer hem till dig, jag tar fram några pappersark och ber dig baka några kakor innan vi börjar.

På ett pappersark gör vi en lista som heter "barnbarn". Varje barnbarn spelas in med en del viktig information om honom, inklusive ett unikt nummer som nu kommer att indikera hur barnbarn han är. För organisationens skull skriver vi också ut namngivna attribut överst på listan så att vi alltid vet vilken information listan innehåller.

id
namn
födelsedag
senaste besöket
Klädstorlek
favoritglass
antagen

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

2
jessica
07-21-1992
02-22-2018
M
stenig väg
sann

...vi fortsätter listan!

Lista över barnbarn

Efter ett tag förstår man allt och vi är nästan klara med listan! Men du vänder dig till mig och säger: "Vi glömde att lägga till utrymme för makar, hobbyer, barnbarn!" Men nej, det har vi inte glömt! Detta följer vidare och kräver ett nytt pappersark.

Så jag tar fram ett annat papper och på det ringer vi listan Makar. Vi lägger återigen till de attribut som är viktiga för oss till toppen av listan och börjar lägga till i rader.

id
grandchild_id
namn
födelsedag

1
2
John
06-01-1988

2
9
Fernanda
03-05-1985

…fler makar!

Förteckning över makar

I det här skedet förklarar jag för min mormor att om hon vill veta vem som är gift med vem, så behöver hon bara matcha id i listan barnbarn с grandchild_id i makarlistan.

Efter ett par dussin kakor måste jag ta en tupplur. "Kan du fortsätta, mormor?" Jag går för att ta en tupplur.

Jag kommer tillbaka om några timmar. Du är cool, mormor! Allt ser bra ut förutom listan hobby. Det finns cirka 1000 hobbyer på listan. De flesta av dem är repetitiva; Vad har hänt?

grandchild_id
hobby

1
cykling

4
cykling

3
cykling

7
rinnande

11
cykling

…vi fortsätter!

Förlåt, jag glömde helt bort att säga! Genom att använda en lista kan du bara spåra hobby. Sedan i en annan lista måste vi spåra barnbarnsom gör detta hobby. Vi ska kalla det "Gemensam lista". Jag ser att du inte gillar det, jag blir orolig och går tillbaka till listläge.

id
hobby

1
cykling

2
rinnande

3
simning

…fler hobbyer!

Lista över hobbyer

När vi väl har vår hobbylista skapar vi vår andra lista och kallar den "Barnbarns hobbyer".

grandchild_id
hobby_id

4
1

3
1

7
2

…Mer!

Allmän lista över barnbarns hobbyer

Efter allt detta arbete har mormor nu ett coolt minnessystem för att hålla reda på hela hennes fantastiskt stora familj. Och sedan - för att hålla mig längre - ställer hon den magiska frågan: "Var har du lärt dig att göra allt det här?"

Relationsdatabaser

En relationsdatabas är en uppsättning formellt beskrivna tabeller (i vårt exempel är dessa ark) från vilka du kan komma åt Enligt eller samla in dem på olika sätt utan att behöva omorganisera borden Databas. Det finns många olika typer av relationsdatabaser, men en lista på ett papper är tyvärr inte en av dem.

Kännetecknet för de mest populära relationsdatabaserna är frågespråket SQL (Structured Query Language). Tack vare honom, om mormor överför sitt minnessystem till en dator, kan hon snabbt få svar på frågor som: "Vem besökte mig inte förra året, är gift och har inga hobbyer?"

Ett av de mest populära SQL-databashanteringssystemen är MySQL med öppen källkod. Det implementeras främst som ett relationsdatabashanteringssystem (RDBMS) för webbaserade mjukvaruapplikationer.

Några nyckelfunktioner i MySQL:

  • Det är ganska välkänt, flitigt använt och flitigt testat.
  • Det finns många duktiga utvecklare som har erfarenhet av SQL och relationsdatabaser.
  • Data lagras i olika tabeller, vilket gör det enkelt att upprätta relationer med hjälp av primära och främmande nycklar (identifierare).
  • Det är lätt att använda och effektivt, vilket gör det idealiskt för stora och små företag.
  • Källkoden är under villkoren i GNU General Public License.

Glöm nu ALL.

Förklarar NoSQL för mormor

Mormor, vi har en stor familj. Hon har 150 barnbarn! Många av dem är gifta, har barn, är förtjusta i något och så vidare. I din ålder är det omöjligt att komma ihåg allt om oss alla. Vad du behöver är ett minnessystem!

Lyckligtvis har jag ingen Jag vill att du ska glömma min födelsedag och favoritsmak av glass, jag kan hjälpa dig. Så jag springer till närmaste butik, tar en anteckningsbok och återvänder till ditt hus.

Det första steget jag tar är att skriva "Barnbarn" med stora feta bokstäver på omslaget till min anteckningsbok. Sedan bläddrar jag till första sidan och börjar skriva allt du behöver komma ihåg om mig. Några minuter senare ser sidan ut ungefär så här.

{ 
  "_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 verkar som om allt är klart!"
mormor: "Vänta, hur är det med resten av barnbarnen?"
Я: "Ja exakt. Tilldela sedan en sida för varje."
mormor: "Behöver jag skriva ner samma information för alla som jag gjorde för dig?"
Я: ”Nej, bara om du vill. Låt mig visa."
Jag tar tag i min mormors penna, bläddrar på sidan och antecknar snabbt information om min minst favorit kusin.

{ 
  "_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ärhelst en mormor behöver komma ihåg något om ett av sina barnbarn behöver hon bara navigera till rätt sida i sina barnbarns anteckningsbok. All information om dem kommer att lagras där på deras sida, som hon snabbt kan ändra och uppdatera.

När allt är klart ställer hon den magiska frågan: "Var lärde du dig att göra allt det här?"

NoSQL-databaser

Det finns många NoSQL-databaser ("inte bara SQL"). I våra exempel har vi visat dokumentdatabas. NoSQL-databaser modellerar data på sätt som utesluter tabellrelationer som används i relationsdatabaser. Dessa databaser blev populära i början av 2000-talet med företag som behövde molnbaserad databasklustring på grund av deras explicita skalningskrav (som Facebook). I sådana applikationer var datakonsistens mycket mindre viktigt än prestanda och skalbarhet.

I början användes ofta NoSQL-databaser för nischade datahanteringsuppgifter. I grund och botten, när det kom till webb- och molnapplikationer, bearbetade och distribuerade NoSQL-databaser betydande mängder data. NoSQL-ingenjörer gillade också det flexibla dataschemat (eller bristen på det) så att snabba förändringar var möjliga i applikationer som uppdaterades.

Viktiga funktioner i NoSQL:

  • Mycket flexibelt sätt att lagra data
  • Horisontell skalning till kluster
  • Möjlig sekvensering per persistens/spridning
  • Dokument som identifieras med unika nycklar

Detaljerad jämförelse

MySQL kräver ett definierat och strukturerat schema.
NoSQL låter dig lagra vilken data som helst i ett "dokument".

MySQL har en enorm community.
NoSQL har en liten och snabbt växande community.

NoSQL är lätt att skala.
MySQL behöver mer hanterbarhet.

MySQL använder SQL, som används i många typer av databaser.
NoSQL är en databasbaserad design med populära implementeringar.

MySQL använder ett standardfrågespråk (SQL).
NoSQL använder inte ett standardfrågespråk.

MySQL har många bra rapportverktyg.
NoSQL har flera rapporteringsverktyg som är svåra att standardisera.

MySQL kan visa prestandaproblem för big data.
NoSQL ger utmärkt prestanda på big data.

Tankar 8bas

Företaget 8BASEdär jag arbetar tillhandahåller vi en arbetsyta för varje projekt med en Aurora MySQL-relationsdatabas värd på AWS. Även om NoSQL är ett logiskt val när din applikation kräver hög prestanda och skalbarhet, tror vi att den starka datakonsistensen som tillhandahålls av ett DBMS är avgörande när du bygger SaaS-applikationer och annan affärsmjukvara.

För nystartade företag och utvecklare som bygger affärsapplikationer som kräver rapportering, transaktionsintegritet och väldefinierade datamodeller är investeringar i relationsdatabaser, enligt vår mening, det rätta valet.

Läs mer om att utveckla med Aurora, Serverless och GraphQL på 8base.com här.

Källa: will.com

Lägg en kommentar