Hvad er MongoDB?
Relationelle databaser var i årtier den foretrukne løsning til datastyring. Den stigende mængde og mangfoldighed af data, der kendetegner moderne webapplikationer, har imidlertid gjort dokumentorienterede databaser som Mongo DB til en seriøs konkurrent. Vi vil forklare, hvad den dokumentorienterede tilgang er, og hvilke fordele denne datastyringmodel tilbyder.
Hvordan adskiller MongoDB sig fra andre databaser?
I traditionelle relationsdatabaser gemmes data i en struktureret tabel. MongoDB, hvis navn stammer fra ordet humongous (kæmpe), er et dokumentorienteret databasesystem. I MongoDB grupperes data på en ustruktureret måde i det, databaseprogrammet kalder samlinger.
En anden vigtig forskel er, at MongoDB ikke bruger SQL som sprog til forespørgsler og derfor kategoriseres som et NoSQL-databasesystem. I stedet bruger MongoDB det JavaScript-baserede MongoDB Query Language (MQL) som sit forespørgselssprog. Derfor gemmes MongoDB-poster i BSON-formatet, som er modelleret efter JSON. Det betyder, at alle JavaScript-datatyper understøttes, hvilket er grunden til, at MongoDB er blevet det ideelle valg for mange JavaScript-baserede platforme.
Et andet kendetegn ved MongoDB-databaser er deres evne til at skalere horisontalt. Det betyder, at dataene i en database kan spredes over flere servere i stedet for at blive gemt på ét centralt sted. Denne tilgang giver øget datatilgængelighed og forbedrer den samlede databaseydelse. Horisontal skalering er ofte mere omkostningseffektivt end at opgradere en enkelt server med mere kraftfuld hardware (vertikal skalering).
Hvordan fungerer MongoDB?
I modsætning til MySQL har MongoDB en helt anden tilgang til lagring af data og fungerer på en dokumentorienteret måde. I stedet for at lagre data i tabelform, hvor hver række har det samme antal felter, der skal udfyldes med værdier, lagrer MongoDB-databaser data i BSON-dokumenter, der ikke har nogen foruddefineret struktur. Antallet af felter kan variere mellem dokumenter, og felterne behøver ikke at være konsistente med hinanden. Dokumenter udfylder en rolle, der ligner den, som rækker i en SQL-tabel har, mens de felter, der er defineret i disse dokumenter, fungerer som kolonner.
Der findes mange værktøjer, som du kan bruge, når du arbejder med MongoDB-databaser. Ud over den pålidelige MongoDB Shell kan du også bruge GUI MongoDB Compass til at administrere MongoDB-databaser. I denne artikel vil vi dog fokusere på Shell-kommandoer.
Da MQL er baseret på JavaScript, findes der allerede en række foruddefinerede funktioner, som du kan bruge til komplekse forespørgsler og kommandoer. For det meste har alle skrive- og læsekommandoer samme struktur som kommandoerne i eksemplet nedenfor. Ud over disse kommandoer findes der mange andre kommandoer, som du kan bruge til at administrere din MongoDB-database. Disse er udførligt dokumenteret og forklaret i detaljer i dokumentationen til MongoDB.
> db.students.find(Name : "Charlie")
> db.students.updateOne(Name : "Charlie", Semester : 2)
> db.students.deleteOne(Name : "Peter")
> db.students.insertOne({
Name : "Elsie"
Age : 18
Semester : 1
})I eksemplet ovenfor er der en række MongoDB-databasekommandoer, som alle er struktureret på samme måde. Først er der ‘db’, som henviser til databasen i sin helhed, derefter ‘students’, som henviser til en bestemt samling, hvor de tilsvarende operationer skal udføres. Efter samlingen kommer den metode (find, update, remove, insert), der skal bruges.
Du kan bruge find()-metoden til at søge efter et bestemt dokument. Hvis du lader parameterfeltet være tomt, returneres alle dokumenter i den samling, du har valgt. I eksemplet ovenfor søger MongoDB efter alle dokumenter, hvor feltet “Navn” har værdien “Charlie”.
Metoden updateOne() kan bruges til at overskrive værdier i et dokument. Metoden update() tager to argumenter. Det første argument er udvælgelseskriteriet, og det andet er det nøgle-værdipar, der skal overskrives. I eksemplet vælges alle studerende ved navn ‘Charlie’. Værdien ‘2’ indtastes derefter i feltet ‘Semester’ for studerende, der hedder Charlie.
Metoden deleteOne() tager kun ét argument. Dette er det udvælgelseskriterium, der bestemmer, hvilke dokumenter der skal fjernes fra databasen. Her fjernes alle studerende med navnet Peter fra databasen.
Metoden insertOne() tager også et argument. Med denne metode er argumentet JSON-indholdet i det dokument, du vil tilføje. Når du indsætter dokumenter, er det vigtigt at sikre, at hvert dokument i MongoDB-samlingen har et unikt 12-byte hexadecimalt tal. Dette tal fungerer som dokumentets objekt-ID. Hvis dette ikke er angivet, når dokumentet indsættes, genererer MongoDB automatisk et ID til dokumentet.
Hvad er fordelene ved MongoDB?
MongoDB’s struktur tilbyder flere fordele for brugerne, især med hensyn til fleksibilitet og skalerbarhed. En vigtig fordel ved dokumentbaseret datalagring er, at i modsætning til relationelle databaser behøver ikke alle poster at have de samme attributter. Dette muliggør lagring af ustrukturerede og semistrukturerede data. Derudover kan individuelle dokumenter omstruktureres (f.eks. ved at tilføje eller slette en attribut/felt) uden at det er nødvendigt at omstrukturere andre dokumenter i samme samling. Da dokumenter i MongoDB lagres i BSON-format, tilbyder MongoDB-databaser også en høj grad af kompatibilitet med mange almindeligt anvendte JavaScript-platforme.
Ud over at gemme ustrukturerede data tilbyder MongoDB også en høj grad af horisontal skalerbarhed uden at stride mod ACID-principperne (atomicitet, konsistens, isolation, holdbarhed). I distribuerede databaser kan det ofte være en udfordring at sikre konsistens, fordi data gemmes på forskellige servere. Når der foretages ændringer i flere dokumenter samtidigt, distribueres disse ændringer muligvis ikke straks til alle de servere, som databasesystemet bruger. Hvis der er et stort antal forespørgsler, kan dette undertiden føre til inkonsekvente data. Med udgivelsen af MongoDB 4.2 i 2019 er det nu muligt at foretage ændringer i flere dokumenter på forskellige servere uden at gå på kompromis med konsistensen eller tilgængeligheden.
Har du brug for en dokumentorienteret database, der kan skaleres efter kravene i din webapplikation? MongoDB er den perfekte løsning!
Hvad kan MongoDB bruges til?
MongoDB er et fremragende valg til webprojekter, der er afhængige af ekstremt store ustrukturerede datasæt. Arbejdet med et dokumentbaseret system uden fast skema er ideelt til håndtering af en bred vifte af datatyper, der kræver hurtig lagring og behandling.
Databasesystemet muliggør også horisontal, næsten ubegrænset skalerbarhed, da databaser nemt kan distribueres på tværs af flere servere uden at gå på kompromis med funktionaliteten. Desuden kan du med MongoDB nemt oprette kopier af din database og gøre den tilgængelig for forskellige servere, hvilket sikrer langsigtet sikkerhed og tilgængelighed af dine data. Det dokumentorienterede databaseprogram viser også imponerende evner, når det kommer til at samle data, hvad enten det er fra en enkelt kilde eller fra flere kilder.
MongoDB er ideel til webprojekter, der har følgende egenskaber:
- Skalerbarhed: Når dit webprojekt vokser, stiger antallet af anmodninger typisk, hvilket resulterer i større krav til databasen.
- Tilgængelighed: Du har brug for uafbrudt tilgængelighed til din webapplikation, selv i tilfælde af serversvigt.
- Fleksibilitet: dit projekt skal til enhver tid give mulighed for dynamisk tilpasning.
Er du ikke sikker på, hvilken databasemodel der er den rigtige til dit webprojekt? Det er okay, for du behøver ikke vælge kun én. Det er muligt at kombinere forskellige typer databasemodeller, og det kan være det mest passende valg for dit projekts krav at vælge mere end én.