Hvad er MongoDB? Introduktion, arkitektur, funktioner & Eksempel

Indholdsfortegnelse:

Anonim

Hvad er MongoDB?

MongoDB er en dokumentorienteret NoSQL-database, der bruges til datalagring med stort volumen. I stedet for at bruge tabeller og rækker som i de traditionelle relationsdatabaser, bruger MongoDB samlinger og dokumenter. Dokumenter består af nøgleværdipar, som er den grundlæggende dataenhed i MongoDB. Samlinger indeholder sæt dokumenter og funktioner, der svarer til relationelle databasetabeller. MongoDB er en database, der kom i lys omkring midten af ​​2000'erne.

I denne vejledning lærer du-

  • MongoDB-funktioner
  • MongoDB-eksempel
  • Nøglekomponenter i MongoDB-arkitektur
  • Hvorfor bruge MongoDB
  • Datamodellering i MongoDB
  • Forskel mellem MongoDB og RDBMS

MongoDB-funktioner

    1. 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.
    2. Dokumentstrukturen er mere i tråd med, hvordan udviklere konstruerer deres klasser og objekter på deres respektive programmeringssprog. Udviklere vil ofte sige, at deres klasser ikke er rækker og kolonner, men har en klar struktur med nøgleværdipar.
    3. Rækkerne (eller dokumenter som kaldet i MongoDB) behøver ikke at have et skema defineret på forhånd. I stedet kan felterne oprettes på farten.
    4. Den tilgængelige datamodel inden for MongoDB giver dig mulighed for lettere at repræsentere hierarkiske forhold, gemme arrays og andre mere komplekse strukturer.
  1. Skalerbarhed - MongoDB-miljøerne er meget skalerbare. Virksomheder over hele verden har defineret klynger, hvor nogle af dem kører mere end 100 noder med omkring millioner af dokumenter i databasen

MongoDB-eksempel

Nedenstående eksempel viser, hvordan et dokument kan modelleres i MongoDB.

  1. Feltet _id tilføjes af MongoDB for entydigt at identificere dokumentet i samlingen.
  2. Hvad du kan bemærke er, at ordredataene (OrderID, produkt og mængde), som i RDBMS normalt lagres i en separat tabel, mens de i MongoDB faktisk er gemt som et indlejret dokument i selve samlingen. Dette er en af ​​de vigtigste forskelle i, hvordan data modelleres i MongoDB.

Nøglekomponenter i MongoDB-arkitektur

Nedenfor er et par af de almindelige udtryk, der bruges i MongoDB

  1. _id - Dette er et felt, der kræves i alle MongoDB-dokumenter. Feltet _id repræsenterer en unik værdi i MongoDB-dokumentet. Feltet _id er som dokumentets primære nøgle. Hvis du opretter et nyt dokument uden et _id-felt, opretter MongoDB automatisk feltet. Så for eksempel, hvis vi ser eksemplet i ovenstående kundetabel, tilføjer Mongo DB en 24-cifret unik identifikator til hvert dokument i samlingen.
_Id Kunde ID Kundenavn Ordre ID
563479cc8a8a4246bd27d784 11 Guru99 111
563479cc7a8a4246bd47d784 22 Trevor Smith 222
563479cc9a8a4246bd57d784 33 Nicole 333
  1. Samling - Dette er en gruppering af MongoDB-dokumenter. En samling svarer til en tabel, der oprettes i enhver anden RDMS såsom 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.
  2. Markør - Dette er en markør til resultatsættet for en forespørgsel. Kunder kan gentage sig gennem en markør for at hente resultater.
  3. Database - Dette er en container til samlinger som i RDMS, hvor den er en container til tabeller. Hver database får sit eget sæt filer på filsystemet. En MongoDB-server kan gemme flere databaser.
  4. Dokument - En post i en MongoDB-samling kaldes grundlæggende et dokument. Dokumentet vil til gengæld bestå af feltnavn og værdier.
  5. Felt - Et navn-værdipar i et dokument. Et dokument har nul eller flere felter. Felter er analoge med kolonner i relationelle databaser.

    Følgende diagram viser et eksempel på felter med nøgleværdipar. Så i eksemplet nedenfor er CustomerID og 11 et af nøgleværdipar, der er defineret i dokumentet.

  1. JSON - Dette er kendt som JavaScript Object Notation. Dette er et menneskeligt læsbart, almindeligt tekstformat til at udtrykke strukturerede data. JSON understøttes i øjeblikket på 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 oprettes.

Hvorfor bruge MongoDB?

Nedenfor er de få af grundene til, hvorfor man skal begynde at bruge MongoDB

  1. Dokumentorienteret - Da MongoDB er en NoSQL-type database, i stedet for at have data i et relationelt formatformat, gemmer den dataene i dokumenter. Dette gør MongoDB meget fleksibel og kan tilpasses til den virkelige forretningsverden og krav.
  2. Ad hoc-forespørgsler - MongoDB understøtter søgning efter felt-, rækkeforespørgsler og regulære udtrykssøgninger. Forespørgsler kan foretages for at returnere bestemte felter i dokumenter.
  3. Indeksering - Indeks kan oprettes for at forbedre udførelsen af ​​søgninger inden for MongoDB. Ethvert felt i et MongoDB-dokument kan indekseres.
  4. Replikering - MongoDB kan tilbyde høj tilgængelighed med replika-sæt. Et replika sæt består af to eller flere mongo DB-forekomster. Hvert replika-sætmedlem kan til enhver tid handle i rollen som den primære eller sekundære replika. Den primære replika er hovedserveren, der interagerer med klienten og udfører alle læse / skrive-operationerne. De sekundære replikaer opretholder en kopi af dataene fra den primære ved hjælp af indbygget replikering. Når en primær replika fejler, skifter replika-sæt automatisk til den sekundære, og derefter bliver den den primære server.
  5. Load balancing - MongoDB bruger begrebet sharding til at skalere vandret 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 kørende i tilfælde af hardwarefejl.

Datamodellering i MongoDB

Som vi har set fra afsnittet Introduktion, har dataene i MongoDB et fleksibelt skema. I modsætning til i SQL-databaser, hvor du skal have deklareret en skema for en tabel, før du indsætter data, håndhæver MongoDBs samlinger ikke dokumentstruktur. Denne form for fleksibilitet er det, der gør MongoDB så kraftig.

Når du modellerer data i Mongo, skal du huske følgende ting

  1. Hvad er applikationens behov - Se på applikationens forretningsbehov og se, hvilke data og hvilken type data der er nødvendige for applikationen. På baggrund af dette skal du sikre dig, at dokumentets struktur bestemmes i overensstemmelse hermed.
  2. Hvad er mønstre til hentning af data - Hvis du forudser en tung forespørgsel, skal du overveje at bruge indekser i din datamodel for at forbedre effektiviteten af ​​forespørgsler.
  3. Er der hyppige indsatser, opdateringer og fjernelser i databasen? Overvej brugen af ​​indekser, eller inkorporer sharding, hvis det kræves i dit datamodelleringsdesign for at forbedre effektiviteten i dit samlede MongoDB-miljø.

Forskel mellem MongoDB og RDBMS

Nedenfor er nogle af nøgleudtryksforskellene mellem MongoDB og RDBMS

RDBMS MongoDB Forskel
Bord Kollektion I RDBMS indeholder tabellen de kolonner og rækker, der bruges til at gemme dataene, mens den samme struktur i MongoDB er kendt som en samling. Samlingen indeholder dokumenter, som igen indeholder felter, som igen er nøgleværdipar.
Række Dokument I RDBMS repræsenterer rækken et enkelt, implicit struktureret dataelement i en tabel. I MongoDB gemmes dataene i dokumenter.
Kolonne Mark I RDBMS angiver kolonnen et sæt dataværdier. Disse i MongoDB er kendt som Fields.
Tilslutter sig Indlejrede dokumenter I RDBMS spredes data undertiden på forskellige tabeller, og for at vise en komplet oversigt over alle data dannes der undertiden en sammenføjning på tværs af tabeller for at få dataene. I MongoDB gemmes dataene normalt i en enkelt samling, men adskilles ved hjælp af indlejrede dokumenter. Så der er intet koncept om sammenføjninger i MongoDB.

Bortset fra udtryksforskellene vises et par andre forskelle nedenfor

  1. Relationsdatabaser er kendt for at håndhæve dataintegritet. Dette er ikke et eksplicit krav i MongoDB.
  2. RDBMS kræver, at data først normaliseres, så de kan forhindre forældreløse poster og duplikater. Normalisering af data kræver derefter flere tabeller, hvilket derefter resulterer i flere sammenføjninger af tabeller, hvilket kræver flere nøgler og indekser.

    Da databaser begynder at vokse, kan ydeevne begynde at blive et problem. Igen er dette ikke et eksplicit krav i MongoDB. MongoDB er fleksibel og behøver ikke først, at dataene normaliseres.