Hva er MongoDB?
Relasjonelle databaser var i flere tiår den mest brukte løsningen for datahåndtering. Imidlertid har den økende mengden og mangfoldigheten av data som kjennetegner moderne webapplikasjoner, gjort dokumentorienterte databaser som Mongo DB til en seriøs konkurrent. Vi vil forklare hva den dokumentorienterte tilnærmingen er og fordelene som denne datahåndteringsmodellen tilbyr.
Hvordan skiller MongoDB seg fra andre databaser?
I tradisjonelle relasjonsdatabaser lagres data i en strukturert tabell. MongoDB, som har fått navnet sitt fra ordet humongous, er et dokumentorientert databasesystem. I MongoDB grupperes data på en ustrukturert måte i det databaseprogrammet kaller samlinger.
En annen viktig forskjell er at MongoDB ikke bruker SQL som spørrespråk, og derfor kategoriseres som et NoSQL-databasesystem. I stedet bruker MongoDB det JavaScript-baserte MongoDB Query Language (MQL) som spørrespråk. Følgelig lagres MongoDB-poster i BSON-format, som er modellert etter JSON. Dette betyr at alle JavaScript-datatyper støttes, og det er grunnen til at MongoDB har blitt det ideelle valget for mange JavaScript-baserte plattformer.
En annen egenskap ved MongoDB-databaser er deres evne til å skaleres horisontalt. Dette betyr at dataene i en database kan spres over flere servere i stedet for å lagres på ett sentralt sted. Denne tilnærmingen gir økt datatilgjengelighet og forbedrer den generelle databasens ytelse. Horisontal skalering er ofte mer kostnadseffektivt enn å oppgradere en enkelt server med kraftigere maskinvare (vertikal skalering).
Hvordan fungerer MongoDB?
I motsetning til MySQL har MongoDB en helt annen tilnærming til lagring av data og fungerer på en dokumentorientert måte. I stedet for å lagre data i tabellform, hvor hver rad har samme antall felt som må fylles ut med verdier, lagrer MongoDB-databaser data i BSON-dokumenter som ikke har noen forhåndsdefinert struktur. Antall felt kan variere mellom dokumenter, og feltene trenger ikke å være konsistente med hverandre. Dokumenter fyller en rolle som ligner på rader i en SQL-tabell, mens feltene som er definert i disse dokumentene fungerer som kolonner.
Det finnes mange verktøy du kan bruke når du arbeider med MongoDB-databaser. I tillegg til den pålitelige MongoDB Shell, kan du også bruke GUI MongoDB Compass til å administrere MongoDB-databaser. I denne artikkelen vil vi imidlertid fokusere på Shell-kommandoer.
Siden MQL er basert på JavaScript, finnes det allerede en rekke forhåndsdefinerte funksjoner som du kan bruke til komplekse spørsmål og kommandoer. For det meste har alle skrive- og lesekommandoer samme struktur som kommandoene som vises i eksemplet nedenfor. I tillegg til disse kommandoene finnes det mange andre kommandoer som du kan bruke til å administrere MongoDB-databasen din. Disse er grundig dokumentert og forklart i detalj i dokumentasjonen for 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 det en serie med MongoDB-databasekommandoer, som alle er strukturert på samme måte. Først er det «db», som refererer til databasen i sin helhet, deretter «students», som refererer til en bestemt samling, hvor de tilsvarende operasjonene skal utføres. Etter samlingen kommer metoden (find, update, remove, insert) som skal brukes.
Du kan bruke metoden find() til å søke etter et bestemt dokument. Hvis du lar parameterfeltet stå tomt, vil det returnere alle dokumentene i samlingen du har valgt. I eksemplet ovenfor søker MongoDB etter alle dokumenter der feltet «Name» har verdien «Charlie».
Metoden updateOne() kan brukes til å overskrive verdier i et dokument. Metoden update() tar to argumenter. Det første argumentet er utvalgskriteriene, og det andre er nøkkel-verdiparet som skal overskrives. I eksemplet er alle studenter med navnet «Charlie» valgt. Verdien «2» blir deretter lagt inn i feltet «Semester» for studenter som heter Charlie.
Metoden deleteOne() tar bare ett argument. Dette er utvalgskriteriet som bestemmer hvilke dokumenter som skal fjernes fra databasen. Her fjernes alle studenter med navnet Peter fra databasen.
Metoden insertOne() tar også et argument. Med denne metoden er argumentet JSON-innholdet i dokumentet du ønsker å legge til. Når du legger inn dokumenter, er det viktig å sikre at hvert dokument i MongoDB-samlingen har et unikt 12-bytes heksadesimaltall. Dette tallet fungerer som dokumentets objekt-ID. Hvis dette ikke er spesifisert når dokumentet legges inn, vil MongoDB automatisk generere en ID for dokumentet.
Hva er fordelene med MongoDB?
Strukturen til MongoDB gir brukerne flere fordeler, spesielt når det gjelder fleksibilitet og skalerbarhet. En viktig fordel med dokumentbasert datalagring er at, i motsetning til relasjonsdatabaser, ikke alle oppføringer trenger å ha de samme attributtene. Dette gjør det mulig å lagre ustrukturerte og semistrukturerte data. I tillegg kan enkeltdokumenter omstruktureres (for eksempel ved å legge til eller slette en attributt/et felt) uten at det er nødvendig å omstrukturere andre dokumenter i samme samling. Siden dokumenter i MongoDB lagres i BSON-format, gir MongoDB-databaser også en høy grad av kompatibilitet med mange vanlige JavaScript-plattformer.
I tillegg til å lagre ustrukturerte data, tilbyr MongoDB også en høy grad av horisontal skalerbarhet uten å bryte med ACID-prinsippene (atomicity, consistency, isolation, durability). I distribuerte databaser kan det ofte være en utfordring å sikre konsistens, fordi dataene lagres på forskjellige servere. Når endringer gjøres i flere dokumenter samtidig, distribueres disse endringene ikke nødvendigvis umiddelbart til alle serverne som databasesystemet bruker. Hvis det er et høyt volum av spørsmål, kan dette noen ganger føre til inkonsekvente data. Med lanseringen av MongoDB 4.2 i 2019 er det nå mulig å gjøre endringer i flere dokumenter på forskjellige servere uten å ofre konsistens eller tilgjengelighet.
Trenger du en dokumentorientert database som kan skaleres etter kravene til webapplikasjonen din? MongoDB er den perfekte løsningen!
Hva kan MongoDB brukes til?
MongoDB er et utmerket valg for webprosjekter som er avhengige av ekstremt store ustrukturerte datasett. Å jobbe med et dokumentbasert system som ikke har et fast skjema, er ideelt for håndtering av et bredt spekter av datatyper som krever rask lagring og behandling.
Databasesystemet muliggjør også horisontal, nesten ubegrenset skalerbarhet, da databaser enkelt kan distribueres på flere servere uten at det går ut over funksjonaliteten. Med MongoDB kan du dessuten enkelt lage kopier av databasen din og gjøre den tilgjengelig for ulike servere, slik at du sikrer langsiktig sikkerhet og tilgjengelighet for dataene dine. Det dokumentorienterte database-programmet viser også imponerende evner når det gjelder å aggregere data, enten det er fra én kilde eller fra flere kilder.
MongoDB er ideelt for webprosjekter som har følgende egenskaper:
- Skalerbarhet: når webprosjektet ditt vokser, øker antall forespørsler vanligvis, noe som resulterer i høyere krav til databasen.
- Tilgjengelighet: Du trenger uavbrutt tilgang til webapplikasjonen din, selv i tilfelle serverfeil.
- Fleksibilitet: Prosjektet ditt bør tillate dynamisk tilpasning til enhver tid.
Er du usikker på hvilken databasemodell som er riktig for ditt webprosjekt? Det er ikke noe problem, for du trenger ikke å velge bare én. Det er mulig å kombinere forskjellige typer databasemodeller, og å velge mer enn én kan være det mest passende valget for prosjektets krav.