
Et af de vigtigste beslutninger, som en udvikler træffer, er, hvilken database der skal anvendes. I mange år har mulighederne været begrænset til forskellige varianter af relationelle databaser, der understøtter struktureret forespørgselssprog (SQL). Disse inkluderer MS SQL Server, Oracle, MySQL, PostgreSQL, DB2 og mange andre.
I de seneste 15 år er der kommet mange nye databaser på markedet inden for No-SQL-tilgangen. Disse omfatter nøgle-værdi-lagre såsom Redis og Amazon DynamoDB, brede kolonnebaser som Cassandra og HBase, dokumentlagre såsom MongoDB og Couchbase samt grafdatabaser og søgemaskiner som Elasticsearch og Solr.
I denne artikel vil vi forsøge at forstå SQL og NoSQL uden at gå ind i deres funktionalitet.
Derudover vil vi have lidt sjov i processen.
Forklarer bedstemor SQL
Bedstemor, forestil dig, at jeg ikke er dit eneste barnebarn. I stedet har mor og far elsket hinanden som kaniner, de har fået 100 børn, og derefter adopterede de yderligere 50.
Så, du elsker os alle og ønsker ikke at glemme noget af vores navne, fødselsdage, yndlingsis-smag, tøjstørrelser, hobbyer, ægtefællers navne, børns navne og andre super vigtige fakta. Men lad os se sandheden i øjnene. Du er 85 år gammel, og den gamle gode hukommelse kan bare ikke klare det.
Heldigvis kan jeg, som den klogeste af dine børnebørn, hjælpe. Så jeg kommer hjem til dig, og tager nogle ark papir og beder dig om at bage småkager, før vi begynder.
På et ark papir laver vi en liste med titlen „Børn“. Hver barn er skrevet med nogle væsentlige oplysninger om dem, inklusive et unikt nummer, som nu vil angive, hvilket barn de er. Desuden noterer vi, for at være organiseret, navngivne attributter øverst på listen, så vi altid ved, hvilke oplysninger denne liste indeholder.
id
name
fødselsdag
sidste besøg
tøjstørrelse
yndlingsis
adopteret
1
Jimmy
09-22-1992
09-01-2019
L
Mint chokolade
false
2
Jessica
07-21-1992
02-22-2018
M
Rocky road
true
…vi fortsætter listen!
Børneliste
Efter et stykke tid har du styr på det, og vi er næsten færdige med listen! Men du vender dig mod mig og siger: „Vi glemte at tilføje plads til ægtefæller, hobbyer, børnebørn!” Men nej, vi glemte det ikke! Det følger efter og kræver et nyt ark papir.
Så jeg tager endnu et ark papir, og på det kalder vi listen Ægtefæller. Vi tilføjer igen de attributter, som er vigtige for os, i starten af listen og begynder at tilføje dem i rækkerne.
id
grandchild_id
name
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 bedstemor, at hvis hun vil vide, hvem der er gift med hvem, skal hun blot matche id på listen barnebørn med grandchild_id på listen over ægtefæller.
Efter et par dages cookies har jeg brug for en nap. "Kan du fortsætte, bedstemor?" Jeg går for at hvile mig.
Jeg er tilbage efter et par timer. Og du er fantastisk, bedstemor! Alt ser godt ud, bortset fra listen hobbyer. Der er omkring 1000 hobbyer på listen. De fleste af dem er gentaget; hvad skete der?
grandchild_id
hobby
1
cykling
4
cykling
3
cykling
7
løb
11
cykling
…lad os fortsætte!
Undskyld, jeg glemte helt at sige! Ved hjælp af én liste kan man kun holde styr på hobbyer. Derefter har vi brug for en anden liste til at holde styr på barnebørn, der dyrker denne hobbyer. Vi vil kalde dette "Fælles liste". Da jeg ser, at du ikke bryder dig om det, begynder jeg at bekymre mig og går tilbage til listen.
id
hobby
1
cykling
2
løb
3
svømning
…flere hobbyer!
Hobbyliste
Så snart vi har vores hobbyliste, laver vi vores anden liste og kalder den "Barnebørns hobbyer».
grandchild_id
hobby_id
4
1
3
1
7
2
…flere!
Fælles liste barnebørns hobbyer
Efter alt dette arbejde har bedstemor nu et fantastisk systems til at huske sin bemærkelsesværdigt store familie. Og så, for at holde mig lidt længere, stiller hun det magiske spørgsmål: "Hvor lærte du at gøre alt dette?"
Relationelle databaser
En relationsdatabase er et sæt formelt beskrevede tabeller (i vores eksempel lister), som man kan få adgang til data eller samle på forskellige måder uden at skulle reorganisere tabellerne databaser. Der findes mange forskellige typer relationsdatabaser, men desværre er listen på papiret ikke en af dem.
Det mest karakteristiske ved de mest populære relationsdatabaser er SQL (Structured Query Language). Takket være dette, hvis bedstemor flytter sit huskesystem til computeren, kan hun hurtigt få svar på spørgsmål såsom: "Hvem besøgte mig ikke sidste år, er gift og har ingen hobbyer?"
En af de mest populære SQL-databasehåndteringssystemer er MySQL med åbent kildekode. Den er primært implementeret som et system til at administrere relationsdatabaser (RDBMS) til webbaserede softwareapplikationer.
Nogle nøglefunktioner i MySQL:
- Den er ret kendt, anvendes bredt og er grundigt testet.
- Der er mange kvalificerede udviklere med erfaring i SQL og relationelle databaser.
- Dataene gemmes i forskellige tabeller, hvilket gør det nemt at danne relationer ved hjælp af primære og udenlandske nøgler (identifikatorer).
- Den er nem at bruge og effektiv, hvilket gør den ideel til både store og små virksomheder.
- Kildekoden er under GNU General Public License.
Glem det nu ALT.
Forklarer bedstefar NoSQL
Bedstefar, vi har en stor familie. Den har 150 børnebørn! Mange af dem er gift, har børn, har hobbyer og så videre. I din alder er det umuligt at huske alt om os alle. Hvad du har brug for, er et huskesystem!
Heldigvis kan jeg, ikke ønske, at du glemmer min fødselsdag og min yndlingssmag af is, hjælpe. Så jeg løber til den nærmeste butik, tager en notesbog og vender tilbage til dit hjem.
Det første skridt, jeg tager, er at skrive "Børnebørn" med store fede bogstaver på omslaget af notesbogen. Derefter bladrer jeg til den første side og begynder at skrive alt, du skal huske om mig. Efter et par minutter ser siden 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":[
"videospil",
"computere",
"madlavning"
],
"spouse":null,
"kids":[
],
"favorite_picture":"file://scrapbook-103/christmas-2010.jpg",
"misc_notes":"Foretrækker islagkage på fødselsdagen i stedet for chokolade lagkage!"
} Jeg: “Det ser ud til, at alt er klar!”
Bedstefar: “Vent, hvad med de andre børnebørn?”
Jeg: “Ja, rigtigt. Så dedikerer vi en side til hver.”
Bedstefar: “Skal jeg skrive alle de samme oplysninger for dem alle, som jeg gjorde for dig?”
Jeg: “Nej, kun hvis du vil. Lad mig vise dig.”
Da jeg tager en pen fra bedstefar, bladrer jeg om på siden og skriver hurtigt oplysningerne om min mest mindre elskede fætter.
{
"_id":"dh97dhs9b39397ss001",
"name":"Tanner",
"birthday":"09-12-2008",
"clothing_size":"S",
"friend_count":0,
"favorite_picture":null,
"remember":"Født på samme dag som Cody, men ikke så vigtig"
}Hver gang bedstefar har brug for at huske noget om et af børnebørnene, skal hun blot gå til den rigtige side i børnebørns notesbogen. Al information om dem vil være 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 lærte du alt det her?"
NoSQL-databaser
Der findes mange NoSQL-databaser ("ikke kun SQL"). I vores eksempler har vi vist dokumentdatabasen. NoSQL-databaser modellerer data på måder, der udelukker de tabelrelationer, som bruges i relationelle databaser. Disse databaser blev populære i begyndelsen af 2000'erne blandt virksomheder, der havde brug for skyklastring af databaser på grund af deres udtalte skaleringselementer (f.eks. Facebook). I sådanne applikationer var datakonsistens meget mindre vigtig end ydeevne og skalerbarhed.
I starten blev NoSQL-databaser ofte brugt til nicheopgaver inden for datamanagement. Især når det kom til web- og cloudapplikationer, håndterede og distribuerede NoSQL-databaser store datamængder. Ingeniørerne, der arbejdede med NoSQL, satte også pris på den fleksible dataskema (eller total mangel på sådan), så hurtige ændringer i opdaterede applikationer var mulige.
Nøglefunktioner ved NoSQL:
- Meget fleksibel datalagring
- Horistontel skalering til klynger
- Potentiel sekvens for konsistens / distribueret
- Dokumenter, der identificeres med unikke nøgler
Detaljeret sammenligning
MySQL kræver et bestemt og struktureret skema.
NoSQL giver 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 skiller sig ud ved sin enkelhed i skalerbarhed.
MySQL har brug for mere håndterbarhed.
MySQL bruger SQL, som anvendes i mange typer databaser.
NoSQL er en designbaseret database med populære implementeringer.
MySQL bruger et standard forespørgselssprog (SQL).
NoSQL bruger ikke et standard forespørgselssprog.
MySQL har mange fremragende rapporteringsværktøjer.
I NoSQL er der nogle rapporteringsværktøjer, som er svære at standardisere.
MySQL kan give problemer med ydeevnen for store data.
NoSQL leverer fremragende ydeevne på store data.
Tanker fra 8base
I virksomheden , hvor jeg arbejder, sikrer vi et arbejdsområde for hvert projekt med en relationel database Aurora MySQL, der hostes på AWS. Selvom NoSQL er et logisk valg, når kravene til din applikation kræver høj ydeevne og skalerbarhed, mener vi, at den strenge datakonsistens, der tilbydes af en database, er nødvendig ved udviklingen af SaaS-applikationer og anden software til erhvervslivet.
For startups og udviklere, der skaber forretningsapplikationer, som har brug for rapportering, transaktionsintegritet og klart definerede datamodeller, mener vi, at det er den rigtige beslutning at investere i relationelle databaser.
Læs mere om udvikling med Aurora, Serverless og GraphQL via 8base.com .
Kilde: habr.com
