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.


