En hurtig oversigt over Relations vs. Ikke-relationelle databaser

Indtil videre har min erfaring med databaser som udvikler været begrænset til relationelle (“SQL”) databaser. Mens jeg udforskede populære teknologiske stakke, der blev brugt af professionelle udviklere, stødte jeg på MEAN-stakken (MongoDB, Express, Angular og Node), som derefter førte mig til at undersøge MongoDB og konceptet med databaser, der ikke stoler på teknikkerne bruges til at gemme data i relationelle databaser.

Først: en hurtig genopfriskning af de grundlæggende koncepter i en relationel database. Relationsdatabaser er baseret på den relationelle model af data, der først blev foreslået af den engelske computerforsker EF Codd i 1970. Data er organiseret ud fra, hvordan hver tabel er relateret til hinanden, og disse forhold kvantificeres baseret på de "fremmede nøgler" i hver tabel, der identificerer hvilke udenlandske tabeller der er relateret til den aktuelle tabel, du spørger om. Næsten alle relationelle databaser bruger SQL til at søge og vedligeholde databasen.

Enkelt eksempel på en relationel database

Ikke-relationelle eller “NoSQL” -databaser er en sammenhængende betegnelse for databaser, der ikke er afhængige af den nævnte model til at organisere data. Et af de enkleste eksempler på dette kunne være en database, der er organiseret omkring nøgleværdipar. Dokumentorienterede databaser, der er organiseret omkring antagelsen om, at alle poster i databasen er dokumenter, der er kodet i en slags standardiseret filformat (såsom JSON), er et andet almindeligt eksempel.

Hvorfor bruge en NoSQL-database?

Ikke-relationelle databaser kan have en tiltalende mængde enkelthed sammenlignet med relationelle databaser, som ofte vokser hurtigt i kompleksitet, efterhånden som flere relationer mellem tabeller etableres. Hvis du ved, at de data, du skal arbejde med, er relativt enkle, er det muligvis en simpel samling af nøgleværdibutikker. Dette problem med kompleksitet kan overføres til problemer med ydeevne. Dette vil ikke være meget problem med de små apps, vi har oprettet og arbejdet med, men for en app eller et websted med millioner af brugere kan en dårligt organiserede relationelle databaser nedsætte din app betydeligt. Da NoSQL-databaser ikke har sammenføjningstabeller, kan de potentielt stille forespørgsler hurtigere end en relationsdatabase.

Langsom sideindlæsning øger din returhastighed markant

NoSQL-databaser kan også tilbyde bedre skalerbarhed, hvis du er nødt til at skalere vandret i modsætning til lodret. Horisontal skalering er et middel til at tilføje skala ved at tilføje flere maskiner til at håndtere dine datakrav, mens lodret skalering adresserer dette ved at tilføje yderligere computerkraft. Horisontal skalering er en af ​​grundene til, at NoSQL-databaser begyndte at blive mere populære, da internettet også voksede i popularitet, da virksomhederne havde brug for at styre potentielt millioner af brugere, der rammer deres websted på samme tid.

Er NoSQL-databaser altid det bedre valg?

For webapplikationer med en stor mængde skrivebeskyttet data, hvor hastighed er vigtigst, kan NoSQL-databaser være et godt valg. For komplekse databaser med en stor mængde strukturerede og indbyrdes relaterede data er en NoSQL imidlertid muligvis ikke den bedste løsning. En overdrevent forenklet database vil tvinge meget af den forretningslogik, der implicit håndhæves af en relationel model af data, ind i din faktiske appkode. NoSQL-databaser er også generelt mindre modne end deres relationelle kolleger. Dette betyder, at de kan være mindre stabile, hvilket kan være et væsentligt problem, hvis du har at gøre med store mængder følsomme data, såsom økonomiske transaktioner eller medicinske data. Mangel på et standardiseret forespørgselssprog kan også være et problem. Enhver, der er bekendt med SQL, kan hurtigt komme i gang med at lave forespørgsler i en ny database, mens arbejdet med en NoSQL-database muligvis kræver at lære et andet forespørgselssprog, hvilket bremser, hvor hurtigt en ny medarbejder kan komme i gang og være produktiv. Endelig markedsføres NoSQL-databaser ofte over websteder og apps, hvor meget af datastrømmen drejer sig om CRUD. I situationer, hvor der kræves mere kompleks forretningsanalyse, kan en SQL-database være et bedre valg.

Sammenligning af forskellige NoSQL-databaser med en relationsdatabase

Kilder / Yderligere læsning

https://www.hadoop360.datasciencecentral.com/blog/advantages-and-disadvantages-of-nosql-databases-what-you-should-k