sql >> Database >  >> NoSQL >> MongoDB

Wat is MongoDB en hoe werkt het?

MongoDB is de meest voorkomende en meest gebruikte NoSQL-database. Het is een open-source documentgeoriënteerde DB. NoSQL wordt gebruikt om te verwijzen naar 'niet-relationeel'. Dit betekent dat de MongoDB-database niet is gebaseerd op tabellaire relaties zoals RDBMS, omdat deze een duidelijk mechanisme voor opslag en gegevensophaal biedt.

Het opslagformaat dat door MongoDB wordt gebruikt, wordt BSON genoemd. De database wordt onderhouden door MongoDB Inc. en is gelicentieerd onder de Server-Side Public License (SSPL).

Hieronder vindt u een eenvoudige MongoDB-documentstructuur:

{
  title: 'FossLinux',
  by: 'Abraham',
  url: 'https://www.fosslinux.com',
  type: 'NoSQL'
}

Hoe werkt het?

MongoDB werkt in twee lagen, namelijk:

  • Gegevenslaag
  • Applicatielaag

De applicatielaag wordt gewoonlijk een Final Abstraction Layer genoemd. Het bestaat uit twee delen:de backend, het servergedeelte, en de front-end, het gedeelte met de gebruikersinterface. Het frontend gedeelte is de zichtbare plek waar de ontwikkelaar, met behulp van MongoDB, interactie heeft met mobiel of web. Het backend-gedeelte bevat de server die voornamelijk wordt gebruikt om serverlogica uit te voeren. Bovendien bevat het servergedeelte stuurprogramma's en de mongo-shell die de interactie van de MongoDB-server ondersteunen met behulp van query's.

Query's worden verzonden naar de server die zich in de gegevenslaag bevindt. De MongoDB-server ontvangt de query's vervolgens door naar de storage-engine, waar lees- en schrijfbewerkingen op de bijbehorende gegevensbestanden worden uitgevoerd. Het primaire doel van de opslagengine is het beheren van gegevens.

Opmerking: De MongoDB-server voert geen schrijf- en leesbewerkingen uit.

De afbeelding hieronder illustreert hoe MongoDB werkt:

Belangrijkste kenmerken van MongoDB

De belangrijkste kenmerken zijn:

1. Indexeren

Indexen zijn bedoeld om de zoekprestaties en snelheid van de database te verbeteren. Velden in het document van deze database kunnen worden geïndexeerd met primaire en secundaire index/indexen. Zonder indexering moet elk document in een database worden gescand om de documenten te selecteren die overeenkomen met de zoekopdracht, wat soms inefficiënt is. Daarom moet indexering aanwezig zijn voor efficiënt zoeken naar documenten, en MongoDB gebruikt het om grote datatraktaten beknopt te verwerken.

Met MongoDB kunnen gebruikers elk veld indexeren dat is geïndexeerd met zowel de secundaire als de primaire indices. Dit maakt zoekopdrachten veel sneller, waardoor de algehele prestaties verbeteren.

2. Loadbalancing

MongoDB dupliceert gegevens om het systeem draaiende te houden, zelfs in geval van hardwarestoringen. Bovendien stelt dit proces MongoDB in staat om over meerdere servers te draaien, waardoor de belasting wordt verdeeld.

3. Ad-hocvragen

MongoDB ondersteunt regelmatig zoeken naar velden, bereikquery's en expressies. Deze zoekopdrachten retourneren specifieke velden van documenten en bevatten ook door de gebruiker gedefinieerde JavaScript-functies. De zoekopdrachten kunnen ook worden geconfigureerd om een ​​willekeurige steekproef van resultaten van een bepaalde grootte te retourneren.

4. Replicatie

Replica-sets die MongoDB levert, bestaan ​​uit twee of meer kopieën van gegevens. Deze sets kunnen op elk moment als primaire of secundaire replica's fungeren. De primaire replicasets voeren het lezen en schrijven uit, terwijl de secundaire sets een kopie van de gegevens van de primaire replica onderhouden met behulp van ingebouwde replicatie. Als de primaire replica faalt, voert de replicaset automatisch een verkiezingsproces uit om te bepalen welke secundaire de primaire moet worden. Secundaire replica's kunnen optioneel leesbewerkingen uitvoeren, maar de gegevens zijn uiteindelijk standaard consistent.

5. Bestandsopslag

Deze database stelt ontwikkelaars functies voor bestandsmanipulatie en inhoud beschikbaar. Mongo DB kan worden gebruikt als een bestandssysteem dat bekend staat als Grid-bestandssysteem (GridFS). Deze functie verdeelt een bestand in delen en slaat elk deel op als een apart document.

6. Aggregatie

Voor efficiënte bruikbaarheid biedt MongoDB het aggregatieraamwerk. Met deze functie kunnen ontwikkelaars de procesgegevens batchen en een enkel resultaat krijgen, zelfs na het uitvoeren van verschillende bewerkingen op de groepsgegevens. Er zijn drie manieren waarop MongoDB het aggregatieraamwerk biedt:

  • Kaart-reduceerfunctie
  • Aggregatiepijplijn
  • Aggregatie voor één doel.

Bekijk de afbeelding hieronder om een ​​glimp op te vangen van hoe aggregatie werkt in MongoDB:

7. Schemaloze database

De functie zonder schema biedt MongoDB veel meer flexibiliteit. Eén verzameling kan verschillende documenten in MongoDB bevatten. Het feit dat het geen schema heeft, stelt het in staat om afzonderlijke documenten met andere inhoud, velden en formaten in dezelfde verzameling op te slaan.

8. GridFS

Dit is een functie die wordt gebruikt om bestanden op te slaan en op te halen in MongoDB. Het verdeelt een document in verschillende delen, ook wel chunks genoemd, en bewaart ze vervolgens in verschillende documenten. Alle chunks behalve de laatste chunk hebben een standaard opslaggrootte van ongeveer 255 KB. GridFS is erg handig voor bestanden van meer dan 16 MB.

Opmerking: Wanneer GridFS wordt opgevraagd voor een bestand, assembleert het alle afzonderlijke delen die nodig zijn om het originele bestand te vormen. Hieronder vindt u een vereenvoudigde GridFS-werkmethode:

MongoDB-componenten

Core MongoDB-componenten en hun gebruik omvatten:

  1. Collecties – Ze zijn een set MongoDB-documenten. Hun RDBMS-tegenhangers zijn tabellen. Het is essentieel om te begrijpen dat collecties geen enkele structuur afdwingen. Een verzameling bestaat altijd binnen een enkele DB.
  2. Document – Dit is een verzameling gegevens die is opgeslagen in BSON-indeling. De RDBMS-tegenhanger is Row. Records in MongoDB staan ​​bekend als Documenten. De documenten in MongoDB bevatten veldnamen en de bijbehorende waarden.
  3. Veld – Dit is een enkel element in een MongoDB-document dat waarden bevat als velden en waardeparen. In relationele databases zijn velden analoog aan kolommen. In een document kan in eenvoudige bewoordingen naar een veld worden verwezen als een naam-waardepaar.
  4. _id – Elk MongoDB-document vereist dit veld. Het veld _id kan worden gelijkgesteld aan de primaire sleutel in relationele databases. Het vertegenwoordigt een unieke instantie of waarde in een MongoDB-document. Als u opzettelijk een document in MongoDB maakt zonder het veld _id, wordt het automatisch gegenereerd.
  5. Cursor – Dit is een aanwijzer die het ingestelde resultaat van een query aangeeft. Met behulp van de cursor kunnen klanten resultaten opvragen.
  6. JSON – Dit is een JavaScript-notatie. Het is platte tekst, een door mensen leesbaar formaat dat wordt gebruikt om gestructureerde gegevens uit te drukken. Duizenden programmeertalen ondersteunen JSON.
  7. Database – Net als in RDBMS, waar een database een tabelcontainer is, is in MongoDB een database een verzamelingscontainer. Elke database bevat zijn eigen bestandensets op het bestandssysteem. Daarom kunnen MongoDB-servers meer dan één database opslaan.

MongoDB-edities

MongoDB is uitgebracht in verschillende edities, namelijk;

  • MongoDB Community-server –  Dit is een open-sourceversie van MongoDB die gratis beschikbaar is voor Linux-, Windows- en macOS-gebruikers.
  • MongoDB Enterprise-server –  Dit is de commerciële versie van MongoDB en is te vinden als onderdeel van het MongoDB Enterprise Advanced-abonnementspakket.
  • MongoDB Atlas – Meestal aangeduid als MongoDB Cloud. MongoDB Atlas is een on-demand MongoDB-pakket dat volledig draait en wordt beheerd op de Microsoft Azure-, Google Cloud- en AWS-platforms. Het is een MongoDB Enterprise-versie die in de cloud wordt gehost. De Atlas-editie bevat alle MongoDB Enterprise-serverfuncties en nog veel meer. Dit houdt dus in dat MongoDB Atlas veel geavanceerder is dan alle andere MongoDB-edities.

Waarom zou je MongoDB gebruiken?

  1. Een relationele database bevat gestructureerde gegevens, maar hoe zit het met ongestructureerde gegevens? De gebruiker kan nog steeds verschillende vormen van willekeurige gegevens aan MongoDB toevoegen zonder zelfs maar hun typen te vermelden.
  2. De gebruiker kan enorme hoeveelheden gegevens laden met een ingebouwde sharding-methode, die de gegevens scheidt en gemakkelijk over meerdere servers verspreidt, dankzij de beschikbaarheid en flexibiliteit van MongoDB in een cloudgebaseerde omgeving.
  3. Het dynamische schema van MongoDB stelt gebruikers in staat om snel te experimenteren en nieuwe dingen te leren. Alles kan snel en goedkoop in MongoDB worden opgenomen.
  4. Het maakt het eenvoudig om locatiegebaseerde gegevens te verzamelen zonder geavanceerde procedures.
  5. Miljoenen gekoppelde apparaten genereren regelmatig gegevens op internet, waardoor het moeilijk is om ze te extraheren en te verwerken, maar MongoDB kan het binnen één database doen.
  6. MongoDB kan een breed scala aan gegevens uit verschillende bronnen bevatten om een ​​op CMS gebaseerde website aan te sturen. Deze informatie omvat tweets, opmerkingen, multimediaberichten en andere soorten informatie.
  7. Het is een uitstekende partner voor de ontwikkeling van mobiele apps.
  8. Het kan gebruikers realtime klantanalyse bieden, wat een hoognodige aangepaste ervaring biedt.
  9. Het is een goedkope database. Als u een micro- of klein bedrijf bent, is MongoDB een betere opslagoptie omdat het eenvoudig te beheren en in te stellen is.
  10. De krachtige zoekmachine in MongoDB laat de gebruiker weten waar de gegevens vandaan komen.

Voor- en nadelen van MongoDB

Voordelen

  1. MongoDB is veel beter dan relationele databases als men een aanzienlijke hoeveelheid gegevens heeft en deze over meerdere servers wil verspreiden voor taakverdeling.
  2. Zoekopdrachten in MongoDB zijn sneller omdat ze voor toegang tot een enkele server moeten worden geïnterpreteerd.
  3. Het biedt veelzijdigheid, wat inhoudt dat ze MongoDB moeten gebruiken om ongestructureerde gegevens op te slaan, omdat dit een veel eenvoudigere manier is om dit te doen.

Nadelen

  1. In MongoDB is er geen manier om tabellen te combineren; dus zal men het elke keer dat hij deze functie moet gebruiken handmatig moeten doen, wat resulteert in lelijke en tijdrovende codering.
  2. Het gebruikt veel geheugen omdat het de sleutel voor elk document moet opslaan, omdat tegenstrijdige gegevens mogelijk zijn.
  3. Als je één functie gaat gebruiken, wordt de hele database geblokkeerd, waardoor er een gelijktijdigheidsprobleem ontstaat.
  4. Het doet dit niet automatisch; daarom moet de gebruiker er handmatig voor zorgen dat de operatie een transactie is.

Top 10 MongoDB veelgestelde vragen

In dit gedeelte vindt u antwoorden op enkele veelgestelde vragen over MongoDB. Je kunt het bekijken, aangezien de meeste veelgestelde vragen al zijn beantwoord, en misschien heb je geluk dat je hier een oplossing voor je probleem vindt.

1. Hoe kan ik MongoDB leren?

De gemakkelijkste en meest gebruikelijke manier om MongoDB te leren, is via de online trainingen die door MongoDB voor ontwikkelaars worden aangeboden. De cursussen zijn ontwikkeld en gegeven door MongoDB deskundige ingenieurs die goed bekend zijn met MongoDB. De cursussen zijn gratis en ze behandelen elk aspect dat u moet weten om een ​​MongoDB-goeroe te zijn. De meeste experts hebben deze methode leren gebruiken.

Daarom zul je geen uitstekende uitzondering zijn als je dit voorbeeld volgt. De online cursussen bieden toepassingen uit de echte wereld die gebruikers helpen meer over dit onderwerp te begrijpen. De online training is in je eigen tempo, wat betekent dat je bepaalt hoe lang het duurt om ze te leren. Bovendien zijn de cursussen aanvullende oefeningen die nieuwkomers helpen meer te leren en te oefenen op MongoDB. Bezoek MongoDB University om een ​​heleboel gratis cursussen te krijgen en MongoDB te leren.

2. Is de MongoDB-server gratis te gebruiken?

Ja. MongoDB-server is gratis te gebruiken, afhankelijk van het pakket dat u kiest om te gebruiken. Zo is de communityserver voor alle gebruikers toegankelijk. Als u echter op zoek bent naar meer functionaliteiten, kunt u een betaalde versie gebruiken, zoals de MongoDB Enterprise- of Atlas-editie.

3. Leg de verschillen uit tussen MongoDB en relationele databases?

De meeste relationele databases zoals MySQL, Oracle, SQL Server en Postgres zijn gebouwd op architecturen die oorspronkelijk lang geleden (meer dan 40 jaar) zijn ontworpen. De applicatie-eisen in die tijd waren anders dan de hedendaagse applicatie-eisen.

MongoDB is gebouwd op gedistribueerde systeemarchitectuur, in tegenstelling tot relationele databases, waardoor gebruikers hun databases snel over verschillende instanties kunnen uitschalen. Bekijk voor een diepgaande analyse de verschillen tussen MongoDB en MySQL (een relationele database). Het primaire doel van het ontwerpen van MongoDB was om de productiviteit te verhogen. Schemaflexibiliteit is waar de meeste gebruikers naar op zoek waren, en dat is een van de fantastische functies die MongoDB biedt.

4. Hoe kan men een MongoDB commerciële licentie krijgen?

Om een ​​commerciële MongoDB-licentie te krijgen, kunt u deze kopen bij MongoDB Enterprise Advanced.

5. Uitleggen hoe gegevens worden opgeslagen in MongoDB?

In MongoDB worden gegevens opgeslagen in BSON-documenten die de JSON-gegevensstructuren gebruiken. Documenten bevatten meer dan één veld en elk veld heeft een specifieke gegevenstypewaarde die binaire gegevens, arrays en subdocumenten omvat. Documenten die vergelijkbare structuren delen, worden opgeslagen en georganiseerd als verzamelingen.

6. Waar kan men MongoDB draaien?

U kunt MongoDB overal downloaden, installeren en uitvoeren. Zolang u de vrijheid van platformvergrendeling voltooit, kunt u MongoDB overal uitvoeren. De MongoDB Atlas-versie biedt gebruikers bijvoorbeeld een volledig op maat gemaakte en beheerde service op AWS, Google Cloud en Azure die werkt volgens het pay-as-you-go-principe. De MongoDB Ops Manager is een van de beste alternatieve manieren om MongoDB op uw infrastructuur uit te voeren. Dit maakt het gemakkelijk en snel voor teams om MongoDB te bewaken, back-uppen, schalen en implementeren.

7. Leg uit waarom MongoDB nuttig is?

MongoDB is gebouwd rond drie hoofdontwerpprincipes waarmee gebruikers gezamenlijk snellere en hoogwaardige applicaties kunnen bouwen. De drie belangrijkste ontwerpprincipes zijn:

Ontwerp van gedistribueerde systemen stelt gebruikers in staat om op intelligente wijze gegevens toe te wijzen waar ze willen.
Eengemaakte ervaring – geeft gebruikers de vrijheid om overal te rennen. Dit kernontwerpprincipe maakt het mogelijk om vendor lock-in te elimineren, terwijl gebruikers tegelijkertijd hun applicaties toekomstbestendig kunnen maken.
Documentgegevensmodel – Deze functie biedt gebruikers de beste en eenvoudige manier om met gegevens te werken.

8. Wanneer moet men MongoDB gebruiken?

MongoDB is een veelzijdige NoSQL-database die kan worden gebruikt in analytische apps en een reeks andere OLTP-apps. Een breed scala aan toepassingen kan worden geadresseerd met de MongoDB Atlas en de MongoDB Server.

9. Leg uit hoe MongoDB de gegevens van de klanten beveiligt?

MongoDB bevat uitgebreide functies die klantgegevens beveiligen, detecteren, controleren en verdedigen. Hieronder staan ​​enkele van de belangrijkste functies die de gegevens van de klant helpen beveiligen:

Autorisatie –
Met RBAC (Role-based Access Control) kunnen gebruikers de gedetailleerde machtigingen configureren die gebruikers of op toepassingen gebaseerde privileges nodig hebben om hun taken uit te voeren.

Controle is van vitaal belang voor naleving van de regelgeving, omdat beveiligingsbeheerders het native auditlogboek van MongoDB kunnen gebruiken om de gegeven databasewijzigingen en -activiteiten vast te leggen.

Verificatie – MongoDB biedt een levensvatbaar, uitdaging-respons solide mechanisme dat de databasetoegangscontrole op basis van SCRAM-256 vereenvoudigt, samen met de introductie van geïntegreerde bedrijfsbeveiligingsinfrastructuur. Enkele van de functies die u krijgt, zijn Windows Active Directory, x.509-certificaten, LDAP en Kerberos.

Overal versleuteling - Terwijl ze in beweging zijn, kunnen MongoDB-gegevens worden versleuteld over de netwerken, en terwijl ze in rust zijn, kunnen de gegevens worden versleuteld op schijven of back-ups. Ten slotte kunnen de MongoDB-gegevens tijdens gebruik in de database worden gecodeerd.

Conclusie

Dit artikel heeft alle aspecten die men moet weten over MongoDB uitgebreid behandeld. In de loop van de tijd waren gebruikers op zoek naar snelle productiviteit, die MongoDB zijn gebruikers biedt. In tegenstelling tot relationele databases, zoals al vermeld in het artikel, geeft MongoDB zijn gebruikers de ruimte om hun databases snel uit te schalen.


  1. Redis-schildwacht versus clustering

  2. Apache HBase-regio splitsen en samenvoegen

  3. Mongodb PHP - Gehele getallen met decimalen

  4. ImportError:Geen module met de naam redis