Hva er MongoDB? Introduksjon, arkitektur, funksjoner og amp; Eksempel

Innholdsfortegnelse:

Anonim

Hva er MongoDB?

MongoDB er en dokumentorientert NoSQL-database som brukes til datalagring med høyt volum. I stedet for å bruke tabeller og rader som i de tradisjonelle relasjonsdatabasene, bruker MongoDB samlinger og dokumenter. Dokumenter består av nøkkelverdipar som er den grunnleggende dataenheten i MongoDB. Samlinger inneholder sett med dokumenter og funksjoner som tilsvarer relasjonelle databasetabeller. MongoDB er en database som kom i lys rundt midten av 2000-tallet.

I denne veiledningen vil du lære-

  • MongoDB-funksjoner
  • MongoDB Eksempel
  • Nøkkelkomponenter i MongoDB-arkitektur
  • Hvorfor bruke MongoDB
  • Datamodellering i MongoDB
  • Forskjellen mellom MongoDB og RDBMS

MongoDB-funksjoner

    1. Hver database inneholder samlinger som igjen inneholder dokumenter. Hvert dokument kan være forskjellig med et varierende antall felt. Størrelsen og innholdet på hvert dokument kan være forskjellig fra hverandre.
    2. 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økkelverdipar.
    3. Radene (eller dokumentene som kalles i MongoDB) trenger ikke å ha et skjema definert på forhånd. I stedet kan feltene opprettes på farten.
    4. Datamodellen tilgjengelig i MongoDB lar deg representere hierarkiske forhold, lagre matriser og andre mer komplekse strukturer lettere.
  1. Skalerbarhet - MongoDB-miljøene er veldig skalerbare. Bedrifter over hele verden har definert klynger med noen av dem som kjører 100+ noder med rundt millioner av dokumenter i databasen

MongoDB Eksempel

Eksemplet nedenfor viser hvordan et dokument kan modelleres i MongoDB.

  1. _Id-feltet er lagt til av MongoDB for å identifisere dokumentet i samlingen unikt.
  2. Det du kan merke er at ordredataene (OrderID, Product and Quantity) som i RDBMS normalt vil bli lagret i en egen tabell, mens de i MongoDB faktisk lagres som et innebygd dokument i selve samlingen. Dette er en av nøkkelforskjellene i hvordan data modelleres i MongoDB.

Nøkkelkomponenter i MongoDB-arkitektur

Nedenfor er noen av de vanlige begrepene som brukes i MongoDB

  1. _id - Dette er et felt som kreves i alle MongoDB-dokumenter. _Id-feltet representerer en unik verdi i MongoDB-dokumentet. _Id-feltet er som dokumentets primærnøkkel. Hvis du oppretter et nytt dokument uten _id-felt, vil MongoDB automatisk opprette feltet. Så for eksempel, hvis vi ser eksemplet fra ovenstående kundetabell, 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
  1. Samling - Dette er en gruppering av MongoDB-dokumenter. En samling tilsvarer en tabell som er opprettet i andre RDMS, for eksempel Oracle eller MS SQL. En samling finnes i en enkelt database. Som det fremgår av introduksjonen, håndheves ikke noen form for struktur.
  2. Markør - Dette er en peker til resultatsettet til et spørsmål. Kunder kan gjenta seg gjennom en markør for å hente resultatene.
  3. Database - Dette er en container for samlinger som i RDMS der den er en container for tabeller. Hver database får sitt eget sett med filer på filsystemet. En MongoDB-server kan lagre flere databaser.
  4. Dokument - En post i en MongoDB-samling kalles i utgangspunktet et dokument. Dokumentet vil i sin tur bestå av feltnavn og verdier.
  5. Felt - Et navn-verdipar i et dokument. Et dokument har null eller flere felt. Felt er analoge med kolonner i relasjonsdatabaser.

    Diagrammet nedenfor viser et eksempel på felt med nøkkelverdipar. Så i eksemplet nedenfor er CustomerID og 11 en av nøkkelverdiparene som er definert i dokumentet.

  1. JSON - Dette er kjent som JavaScript Object Notation. Dette er et lesbart, vanlig tekstformat for å uttrykke strukturerte data. JSON støttes for tiden på mange programmeringsspråk.

Bare et raskt notat om nøkkelforskjellen mellom _id-feltet og et normalt innsamlingsfelt. Feltet _id brukes til å identifisere dokumentene i en samling på en unik måte og blir automatisk lagt til av MongoDB når samlingen opprettes.

Hvorfor bruke MongoDB?

Nedenfor er noen av grunnene til at man skal begynne å bruke MongoDB

  1. Dokumentorientert - Siden MongoDB er en NoSQL-type database, i stedet for å ha data i et relasjonelt formatformat, lagrer den dataene i dokumenter. Dette gjør MongoDB veldig fleksibel og tilpasningsdyktig til den virkelige næringslivssituasjonen og kravene.
  2. Ad hoc-spørsmål - MongoDB støtter søk etter felt-, områdesøk og vanlige uttrykkssøk. Spørringer kan gjøres for å returnere bestemte felt i dokumenter.
  3. Indeksering - Indekser kan opprettes for å forbedre ytelsen til søk innen MongoDB. Ethvert felt i et MongoDB-dokument kan indekseres.
  4. Replikering - MongoDB kan tilby høy tilgjengelighet med replika sett. Et replika-sett 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 / skrive-operasjonene. Sekundære replikaer opprettholder en kopi av dataene til primæren ved hjelp av innebygd replikering. Når en primærreplika mislykkes, bytter replikasettet automatisk til den sekundære og blir den primære serveren.
  5. Lastbalansering - MongoDB bruker konseptet med skjæring for å skalere horisontalt ved å dele data over flere MongoDB-forekomster. 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 introduksjonen, har dataene i MongoDB et fleksibelt skjema. I motsetning til i SQL-databaser, der du må ha et tabellskjema deklarert før du setter inn data, håndhever ikke MongoDBs samlinger dokumentstruktur. Denne typen fleksibilitet er det som gjør MongoDB så kraftig.

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

  1. Hva er applikasjonens behov - Se på forretningsbehovene til applikasjonen og se hvilke data og hvilken type data som trengs for applikasjonen. På grunnlag av dette, sørg for at strukturen til dokumentet blir bestemt deretter.
  2. Hva er datainnhentingsmønstre - Hvis du forutser en tung spørringsbruk, bør du vurdere bruk av indekser i datamodellen for å forbedre effektiviteten til spørsmålene.
  3. Skjer hyppige innlegg, oppdateringer og fjerninger i databasen? Vurder bruken av indekser på nytt eller ta med skjæring om nødvendig i datamodelleringsdesignet ditt for å forbedre effektiviteten i det generelle MongoDB-miljøet.

Forskjellen mellom MongoDB og RDBMS

Nedenfor er noen av nøkkelforskjellene mellom MongoDB og RDBMS

RDBMS MongoDB Forskjell
Bord Samling I RDBMS inneholder tabellen kolonnene og radene som brukes til å lagre dataene, mens i MongoDB er den samme strukturen kjent som en samling. Samlingen inneholder dokumenter som igjen inneholder felt, som igjen er nøkkelverdipar.
Rad Dokument I RDBMS representerer raden et enkelt, implisitt strukturert dataelement i en tabell. I MongoDB lagres dataene i dokumenter.
Kolonne Felt I RDBMS angir kolonnen et sett med dataverdier. Disse i MongoDB er kjent som Fields.
Blir med Innebygde dokumenter I RDBMS blir data noen ganger spredt over forskjellige tabeller, og for å vise en fullstendig oversikt over alle data, blir det noen ganger dannet en sammenføyning på tvers av tabeller for å få dataene. I MongoDB lagres dataene normalt i en enkelt samling, men skilles ved hjelp av innebygde dokumenter. Så det er ikke noe begrep om å bli med i MongoDB.

Bortsett fra begrepsforskjellene, er noen få andre forskjeller vist nedenfor

  1. Relasjonsdatabaser er kjent for å håndheve dataintegritet. Dette er ikke et eksplisitt krav i MongoDB.
  2. RDBMS krever at data normaliseres først, slik at de kan forhindre foreldreløse poster og duplikater. Normalisering av data krever deretter flere tabeller, som vil resultere i flere sammenføyninger av tabeller, og krever flere nøkler og indekser.

    Når databaser begynner å vokse, kan ytelse begynne å bli et problem. Igjen er dette ikke et eksplisitt krav i MongoDB. MongoDB er fleksibel og trenger ikke først at dataene normaliseres.