Hva er MongoDB? Introduksjon, Architecture, funksjoner og eksempel
Hva er MongoDB?
MongoDB er en dokumentorientert NoSQL-database som brukes til datalagring med store volum. I stedet for å bruke tabeller og rader som i tradisjonelle relasjonsdatabaser, MongoDB benytter seg av samlinger og dokumenter. Dokumenter består av nøkkel-verdi-par som er den grunnleggende enheten for data i MongoDB. Samlinger inneholder sett med dokumenter og funksjoner som tilsvarer relasjonsdatabasetabeller. MongoDB er en database som kom frem rundt midten av 2000-tallet.
MongoDB Egenskaper
- Hver database inneholder samlinger som igjen inneholder dokumenter. Hvert dokument kan være forskjellig med et varierende antall felt. Størrelsen og innholdet til hvert dokument kan være forskjellig fra hverandre.
- Dokumentstrukturen er mer i tråd med hvordan utviklere konstruerer sine klasser og objekter i sine respektive programmeringsspråk. Utviklere vil ofte si at klassene deres ikke er rader og kolonner, men har en klar struktur med nøkkel-verdi-par.
- Radene (eller dokumenter som kalt inn MongoDB) trenger ikke å ha et skjema definert på forhånd. I stedet kan feltene lages i farten.
- Datamodellen tilgjengelig innenfor MongoDB lar deg representere hierarkiske relasjoner, lagre arrays og andre mer komplekse strukturer lettere.
- Skalerbarhet – Den MongoDB miljøer er veldig skalerbare. Bedrifter over hele verden har definert klynger med noen av dem som kjører over 100 noder med rundt millioner av dokumenter i databasen
MongoDB Eksempel
Eksempelet nedenfor viser hvordan et dokument kan modelleres inn MongoDB.
- _id-feltet er lagt til av MongoDB for å identifisere dokumentet i samlingen unikt.
- Det du kan merke deg er at bestillingsdataene (OrdreID, Produkt og Antall) som i RDBMS normalt vil bli lagret i en egen tabell, mens i MongoDB det er faktisk lagret som et innebygd dokument i selve samlingen. Dette er en av de viktigste forskjellene i hvordan data er modellert inn MongoDB.
Nøkkelkomponenter i MongoDB Architecture
Nedenfor er noen av de vanlige begrepene som brukes i MongoDB
- _id – Dette er et felt som kreves i hver MongoDB dokument. _id-feltet representerer en unik verdi i MongoDB dokument. _id-feltet er som dokumentets primærnøkkel. Hvis du oppretter et nytt dokument uten et _id-felt, MongoDB vil automatisk opprette feltet. Så hvis vi for eksempel ser eksempelet på kundetabellen ovenfor, vil Mongo DB legge til en 24-sifret unik identifikator til hvert dokument i samlingen.
_Id | Kunde ID | Kundenavn | Bestillings ID |
---|---|---|---|
563479cc8a8a4246bd27d784 | 11 | Guru99 | 111 |
563479cc7a8a4246bd47d784 | 22 | Trevor Smith | 222 |
563479cc9a8a4246bd57d784 | 33 | Nicole | 333 |
- Samling – Dette er en gruppering av MongoDB dokumenter. En samling tilsvarer en tabell som er opprettet i alle andre RDMS som f.eks Oracle eller MS SQL. En samling finnes i en enkelt database. Som det fremgår av introduksjonen, håndhever ikke samlinger noen form for struktur.
- Markør – Dette er en pekepinn til resultatsettet til en spørring. Klienter kan iterere gjennom en markør for å hente resultater.
- Database – Dette er en beholder for samlinger som i RDMS der den er en beholder for tabeller. Hver database får sitt eget sett med filer på filsystemet. EN MongoDB server kan lagre flere databaser.
- Document – En rekord i en MongoDB samling kalles i utgangspunktet et dokument. Dokumentet vil på sin side bestå av feltnavn og verdier.
- Felt – Et navn-verdi-par i et dokument. Et dokument har null eller flere felt. Felt er analoge med kolonner i relasjonsdatabaser. Følgende diagram viser et eksempel på felt med nøkkelverdipar. Så i eksemplet nedenfor er kunde-ID og 11 et av nøkkelverdiparet som er definert i dokumentet.
- JSON – Dette er kjent som JavaScript Objektnotasjon. Dette er et lesbart, rent tekstformat for å uttrykke strukturerte data. JSON støttes for tiden på mange programmeringsspråk.
Bare en rask merknad om nøkkelforskjellen mellom _id-feltet og et normalt samlingsfelt. Feltet _id brukes til å identifisere dokumentene i en samling unikt og legges automatisk til av MongoDB når samlingen er opprettet.
Hvorfor bruk MongoDB?
Nedenfor er noen av grunnene til hvorfor man bør begynne å bruke MongoDB
- Dokumentorientert – Siden MongoDB er en NoSQL type database, i stedet for å ha data i et relasjonstypeformat, lagrer den dataene i dokumenter. Dette gjør MongoDB svært fleksibel og tilpasningsdyktig til virkelige forretningsverdenens situasjon og krav.
- Ad hoc-spørsmål – MongoDB støtter søk etter felt, områdespørringer og regulære uttrykkssøk. Forespørsler kan gjøres for å returnere spesifikke felt i dokumenter.
- Indeksering – Indekser kan opprettes for å forbedre ytelsen til søk innenfor MongoDB. Ethvert felt i en MongoDB dokumentet kan indekseres.
- Replikering – MongoDB kan gi høy tilgjengelighet med replikasett. Et replikasett består av to eller flere mongo DB-forekomster. Hvert replikasettmedlem kan opptre i rollen som den primære eller sekundære replikaen når som helst. Den primære replikaen er hovedserveren som samhandler med klienten og utfører alle lese-/skriveoperasjoner. De sekundære replikaene opprettholder en kopi av dataene til den primære ved hjelp av innebygd replikering. Når en primær replika mislykkes, bytter replikasettet automatisk over til den sekundære og deretter blir den primærserveren.
- Lastbalansering – MongoDB bruker konseptet sharding for å skalere horisontalt ved å dele data på flere MongoDB tilfeller. MongoDB kan kjøre over flere servere, balansere belastningen og/eller duplisere data for å holde systemet i gang i tilfelle maskinvarefeil.
Datamodellering i MongoDB
Som vi har sett fra introduksjonsdelen, er dataene i MongoDB har et fleksibelt skjema. I motsetning til i SQL databaser, der du må ha en tabells skjema deklarert før du setter inn data, MongoDBsine samlinger håndhever ikke dokumentstruktur. Denne typen fleksibilitet er det som skaper MongoDB så kraftig.
Når du modellerer data i Mongo, må du huske på følgende ting
- Hva er behovene til applikasjonen – Se på applikasjonens forretningsbehov og se hvilke data og type data som trengs for applikasjonen. Basert på dette, sørg for at strukturen til dokumentet bestemmes deretter.
- Hva er mønstre for datainnhenting – Hvis du forutser stor bruk av spørringer, bør du vurdere bruken av indekser i datamodellen din for å forbedre effektiviteten til spørringene.
- Skjer hyppige innsettinger, oppdateringer og fjerninger i databasen? Vurder bruken av indekser på nytt eller inkorporer sharding hvis nødvendig i datamodelleringsdesignet ditt for å forbedre effektiviteten til den generelle MongoDB miljø.
Forskjell mellom MongoDB & RDBMS
Nedenfor er noen av de viktigste begrepsforskjellene mellom MongoDB og RDBMS
RDBMS | MongoDB | Forskjell |
---|---|---|
Bord | Samling | In RDBMS, inneholder tabellen kolonnene og radene som brukes til å lagre dataene, mens i MongoDB, denne samme strukturen er kjent som en samling. Samlingen inneholder dokumenter som igjen inneholder felt, som igjen er nøkkelverdi-par. |
Rad | Document | I RDBMS representerer raden et enkelt, implisitt strukturert dataelement i en tabell. I MongoDB, er dataene lagret i dokumenter. |
Kolonne | Felt | I RDBMS angir kolonnen et sett med dataverdier. Disse i MongoDB er kjent som Fields. |
tiltrer | Innebygde dokumenter | I RDBMS er data noen ganger spredt over forskjellige tabeller, og for å vise en fullstendig oversikt over alle data, dannes noen ganger en sammenføyning på tvers av tabeller for å få dataene. I MongoDB, er dataene normalt lagret i en enkelt samling, men separert ved hjelp av innebygde dokumenter. Så det er ikke noe konsept for å bli med MongoDB. |
Bortsett fra begrepsforskjellene, er noen få andre forskjeller vist nedenfor
- Relasjonsdatabaser er kjent for å håndheve dataintegritet. Dette er ikke et eksplisitt krav i MongoDB.
- RDBMS krever at data er normalisert først slik at det kan forhindre foreldreløse poster og duplikater Normalisering av data har deretter krav om flere tabeller, som da vil resultere i flere tabellsammenføyninger, og dermed kreve flere nøkler og indekser. Når databaser begynner å vokse, kan ytelsen begynne å bli et problem. Igjen er dette ikke et eksplisitt krav i MongoDB. MongoDB er fleksibel og trenger ikke at dataene skal normaliseres først.