Hvad er MongoDB? Architecture, Features & Eksempel
⚡ Smart opsummering
MongoDB er en dokumentorienteret NoSQL-database, der bruges til lagring af store mængder data, og som bruger samlinger og dokumenter i stedet for tabeller og rækker. Denne ressource forklarer MongoDB funktioner, et dokumenteksempel, nøglekomponenter i arkitekturen, grunde til at bruge det, datamodellering og hvordan det adskiller sig fra en relationsdatabase.

Hvad er MongoDB?
MongoDB er en dokumentorienteret NoSQL-database, der bruges til datalagring i store mængder. I stedet for at bruge tabeller og rækker som i de traditionelle relationsdatabaser, MongoDB gør brug af samlinger og dokumenter. Dokumenter består af nøgleværdi-par, som er den grundlæggende enhed af data i MongoDBSamlinger indeholder sæt af dokumenter og funktioner, hvilket svarer til relationelle databasetabeller. MongoDB er en database, som kom frem i lyset omkring midten af 2000'erne.
MongoDB Funktionalitet
- Hver database indeholder samlinger, som igen indeholder dokumenter. Hvert dokument kan være forskelligt med et varierende antal felter. Størrelsen og indholdet af hvert dokument kan være forskelligt fra hinanden.
- Dokumentstrukturen er mere i overensstemmelse med, hvordan udviklere konstruerer deres klasser og objekter i deres respektive programmeringssprog. Udviklere vil ofte sige, at deres klasser ikke er rækker og kolonner, men har en klar struktur med nøgleværdi-par.
- Rækkerne (eller dokumenter som kaldet ind MongoDB) behøver ikke at have et skema defineret på forhånd. I stedet kan felterne oprettes på stedet.
- Datamodellen tilgængelig indenfor MongoDB giver dig mulighed for at repræsentere hierarkiske relationer, gemme arrays og lettere gemme andre mere komplekse strukturer.
- Skalerbarhed - Den MongoDB Miljøer er meget skalerbare. Virksomheder over hele verden har definerede klynger, hvoraf nogle kører over 100 noder med omkring millioner af dokumenter i databasen.
MongoDB Eksempel
Nedenstående eksempel viser, hvordan et dokument kan modelleres ind MongoDB.
- Feltet _id tilføjes af MongoDB for entydigt at identificere dokumentet i samlingen.
- Det, du kan bemærke, er, at ordredataene (OrderID, Produkt og Antal), som i RDBMS normalt gemmes i en separat tabel, faktisk gemmes som et integreret dokument i selve samlingen i MongoDBDette er en af de vigtigste forskelle i, hvordan data modelleres i MongoDB.
Nøglekomponenter af MongoDB Architecture
Nedenfor er et par af de almindelige udtryk, der bruges i MongoDB:
- _id – Dette er et felt, der kræves i hver MongoDB dokument. Feltet _id repræsenterer en unik værdi i MongoDB dokument. Feltet _id er ligesom dokumentets primære nøgle. Hvis du opretter et nyt dokument uden et _id-felt, MongoDB vil automatisk oprette feltet. Så hvis vi for eksempel ser eksemplet med ovenstående kundetabel, MongoDB vil tilføje et 24-cifret unikt id til hvert dokument i samlingen.
| _Id | Kunde ID | Kundenavn | Ordre ID |
|---|---|---|---|
| 563479cc8a8a4246bd27d784 | 11 | Guru99 | 111 |
| 563479cc7a8a4246bd47d784 | 22 | Trevor Smith | 222 |
| 563479cc9a8a4246bd57d784 | 33 | Nicole | 333 |
- Kollektion – Dette er en gruppeping of MongoDB dokumenter. En samling er det samme som en tabel, der oprettes i et hvilket som helst andet RDBMS, f.eks. Oracle eller MS SQL. En samling findes i en enkelt database. Som det fremgår af introduktionen, håndhæver samlinger ikke nogen form for struktur.
- Cursor – Dette er en pegepind til resultatet af en forespørgsel. Klienter kan iterere gennem en markør for at hente resultater.
- Database – Dette er en container til samlinger, ligesom i RDBMS, hvor det er en container til tabeller. Hver database får sit eget sæt filer på filsystemet. MongoDB server kan gemme flere databaser.
- Dokument – En rekord i en MongoDB En samling kaldes grundlæggende et dokument. Dokumentet vil til gengæld bestå af feltnavne og værdier.
- Felt – Et navn-værdi-par i et dokument. Et dokument har nul eller flere felter. Felter er analoge med kolonner i relationsdatabaser. Følgende diagram viser et eksempel på felter med nøgle-værdi-par. I eksemplet nedenfor er CustomerID og 11 et af de nøgle-værdi-par, der er defineret i dokumentet.
- JSON – Dette er kendt som JavaScript Objektnotation. Dette er et almindeligt tekstformat, der kan læses af mennesker, til at udtrykke strukturerede data. JSON er i øjeblikket understøttet i mange programmeringssprog.
Bare en hurtig note om nøgleforskellen mellem _id-feltet og et normalt indsamlingsfelt. Feltet _id bruges til entydigt at identificere dokumenterne i en samling og tilføjes automatisk af MongoDB når samlingen er oprettet.
Hvorfor brug MongoDB?
Nedenfor er et par af grundene til, hvorfor man bør begynde at bruge MongoDB:
- Dokumentorienteret - Siden MongoDB er en NoSQL type database, i stedet for at have data i et relationelt typeformat, gemmer den dataene i dokumenter. Dette gør MongoDB meget fleksibel og tilpasningsdygtig til den virkelige forretningsverden og -situationer.
- Ad hoc forespørgsler - MongoDB understøtter søgning efter felt, områdeforespørgsler og regulære udtrykssøgninger. Forespørgsler kan stilles for at returnere specifikke felter i dokumenter.
- Indeksering – Indekser kan oprettes for at forbedre søgeresultaternes ydeevne inden for MongoDB. Ethvert felt i en MongoDB dokument kan indekseres.
- Replication - MongoDB kan give høj tilgængelighed med replikasæt. Et replikasæt består af to eller flere MongoDB instanser. Hvert medlem af replikasættet kan til enhver tid fungere som den primære eller sekundære replika. Den primære replika er hovedserveren, der interagerer med klienten og udfører alle læse-/skriveoperationer. De sekundære replikaer opretholder en kopi af dataene fra den primære server ved hjælp af indbygget replikering. Når en primær replika fejler, skifter replikasættet automatisk til den sekundære server, og derefter bliver den den primære server.
- Lastbalancering - MongoDB bruger konceptet sharding til at skalere horisontalt ved at opdele data på tværs af flere MongoDB forekomster. MongoDB kan køre over flere servere, balancere belastningen og/eller duplikere data for at holde systemet oppe og køre i tilfælde af hardwarefejl.
Datamodellering i MongoDB
Som vi har set fra introduktionsafsnittet, er dataene i MongoDB har et fleksibelt skema. I modsætning til i SQL databaser, hvor du skal have en tabels skema erklæret, før du indsætter data, MongoDB's samlinger håndhæver ikke dokumentstruktur. Denne form for fleksibilitet er det, der gør MongoDB så stærk.
Når man modellerer data i MongoDB, husk følgende:
- Hvad er applikationens behov – Se på applikationens forretningsbehov, og se hvilke data og datatyper der er nødvendige for applikationen. Baseret på dette skal du sørge for, at dokumentets struktur besluttes i overensstemmelse hermed.
- Hvad er datahentningsmønstrene – Hvis du forudser stor brug af forespørgsler, bør du overveje at bruge indekser i din datamodel for at forbedre effektiviteten af forespørgsler.
- Sker der hyppige indsættelser, opdateringer og fjernelser i databasen? Genovervej brugen af indekser eller inkorporer sharding, hvis det er nødvendigt, i dit datamodelleringsdesign for at forbedre effektiviteten af din samlede MongoDB miljø.
Forskel mellem MongoDB & RDBMS
Nedenfor er nogle af de vigtigste udtryksforskelle mellem MongoDB og RDBMS:
| RDBMS | MongoDB | Forskel |
|---|---|---|
| Bordlampe | Kollektion | In RDBMSindeholder tabellen de kolonner og rækker, der bruges til at gemme dataene, hvorimod i MongoDB Den samme struktur er kendt som en samling. Samlingen indeholder dokumenter, som igen indeholder felter, som igen er nøgle-værdi-par. |
| Række | Dokument | I RDBMS repræsenterer rækken et enkelt, implicit struktureret dataelement i en tabel. I MongoDB, dataene gemmes i dokumenter. |
| Kolonne | Felt | I RDBMS angiver kolonnen et sæt dataværdier. Disse i MongoDB er kendt som marker. |
| Sammenføjninger | Indlejrede dokumenter | I RDBMS er data nogle gange spredt ud over forskellige tabeller, og for at vise en komplet visning af alle data dannes der nogle gange en join på tværs af tabeller for at hente dataene. MongoDB, dataene gemmes normalt i en enkelt samling, men adskilles ved hjælp af integrerede dokumenter. Så der er intet koncept med joins i MongoDB. |
Udover forskellene i termer er der vist et par andre forskelle nedenfor:
- Relationelle databaser er kendt for at håndhæve dataintegritet. Dette er ikke et eksplicit krav i MongoDB.
- RDBMS kræver, at data er normaliseret først for at forhindre forældreløse poster og dubletter. Normalisering af data kræver derefter flere tabeller, hvilket resulterer i flere tabeljoins, hvilket kræver flere nøgler og indeks. Efterhånden som databaser begynder at vokse, kan ydeevnen blive et problem. Igen er dette ikke et eksplicit krav i MongoDB. MongoDB er fleksibel og behøver ikke at dataene skal normaliseres først.


