Wat is MongoDB?
MongoDB is een documentgeoriënteerde NoSQL-database die wordt gebruikt voor het opslaan van grote hoeveelheden gegevens. In plaats van tabellen en rijen te gebruiken zoals in de traditionele relationele databases, maakt MongoDB gebruik van verzamelingen en documenten. Documenten bestaan uit sleutel-waardeparen die de basiseenheid van gegevens vormen in MongoDB. Collecties bevatten sets documenten en functies die het equivalent zijn van relationele databasetabellen. MongoDB is een database die halverwege de jaren 2000 in het licht kwam.
In deze tutorial leer je-
- MongoDB-functies
- MongoDB-voorbeeld
- Sleutelcomponenten van MongoDB-architectuur
- Waarom MongoDB gebruiken
- Gegevensmodellering in MongoDB
- Verschil tussen MongoDB en RDBMS
MongoDB-functies
- Elke database bevat collecties die op hun beurt weer documenten bevatten. Elk document kan anders zijn met een wisselend aantal velden. De grootte en inhoud van elk document kunnen van elkaar verschillen.
- De documentstructuur is meer in overeenstemming met hoe ontwikkelaars hun klassen en objecten in hun respectievelijke programmeertalen construeren. Ontwikkelaars zullen vaak zeggen dat hun klassen geen rijen en kolommen zijn, maar een duidelijke structuur hebben met sleutel-waardeparen.
- Voor de rijen (of documenten zoals aangeroepen in MongoDB) hoeft vooraf geen schema te zijn gedefinieerd. In plaats daarvan kunnen de velden direct worden aangemaakt.
- Met het datamodel dat beschikbaar is binnen MongoDB, kunt u hiërarchische relaties weergeven, arrays en andere complexere structuren gemakkelijker opslaan.
- Schaalbaarheid - De MongoDB-omgevingen zijn zeer schaalbaar. Bedrijven over de hele wereld hebben clusters gedefinieerd, waarvan sommige met meer dan 100 knooppunten met ongeveer miljoenen documenten in de database
MongoDB-voorbeeld
Het onderstaande voorbeeld laat zien hoe een document gemodelleerd kan worden in MongoDB.
- Het veld _id wordt door MongoDB toegevoegd om het document in de collectie uniek te identificeren.
- Wat u kunt opmerken, is dat de bestelgegevens (OrderID, Product en Hoeveelheid) die in RDBMS normaal gesproken in een aparte tabel worden opgeslagen, terwijl ze in MongoDB feitelijk worden opgeslagen als een ingebed document in de collectie zelf. Dit is een van de belangrijkste verschillen in de manier waarop gegevens worden gemodelleerd in MongoDB.
Sleutelcomponenten van MongoDB-architectuur
Hieronder staan enkele veelgebruikte termen die in MongoDB worden gebruikt
- _id - Dit is een veld vereist in elk MongoDB-document. Het _id-veld vertegenwoordigt een unieke waarde in het MongoDB-document. Het _id-veld is vergelijkbaar met de primaire sleutel van het document. Als u een nieuw document maakt zonder een _id-veld, zal MongoDB automatisch het veld aanmaken. Als we bijvoorbeeld het voorbeeld van de bovenstaande klantentabel zien, voegt Mongo DB een 24-cijferige unieke ID toe aan elk document in de collectie.
_ID kaart | Klanten ID | Klantnaam | Order ID |
---|---|---|---|
563479cc8a8a4246bd27d784 | 11 | Guru99 | 111 |
563479cc7a8a4246bd47d784 | 22 | Trevor Smith | 222 |
563479cc9a8a4246bd57d784 | 33 | Nicole | 333 |
- Verzameling - Dit is een groep MongoDB-documenten. Een verzameling is het equivalent van een tabel die is gemaakt in een ander RDMS, zoals Oracle of MS SQL. Een verzameling bestaat binnen een enkele database. Zoals blijkt uit de inleiding, dwingen collecties geen enkele vorm van structuur af.
- Cursor - Dit is een verwijzing naar de resultatenset van een query. Cliënten kunnen een cursor doorlopen om resultaten op te halen.
- Database - Dit is een container voor verzamelingen zoals in RDMS waarin het een container voor tabellen is. Elke database krijgt zijn eigen set bestanden op het bestandssysteem. Een MongoDB-server kan meerdere databases opslaan.
- Document - Een record in een MongoDB-verzameling wordt in feite een document genoemd. Het document zal op zijn beurt bestaan uit veldnaam en waarden.
- Veld - Een naam-waarde-paar in een document. Een document heeft nul of meer velden. Velden zijn analoog aan kolommen in relationele databases.
In het volgende diagram ziet u een voorbeeld van velden met sleutelwaardeparen. Dus in het onderstaande voorbeeld is CustomerID en 11 een van de sleutelwaardeparen die in het document zijn gedefinieerd.
- JSON - Dit staat bekend als JavaScript Object Notation. Dit is een door mensen leesbare indeling voor platte tekst voor het uitdrukken van gestructureerde gegevens. JSON wordt momenteel ondersteund in veel programmeertalen.
Even een korte opmerking over het belangrijkste verschil tussen het _id-veld en een normaal verzamelingsveld. Het veld _id wordt gebruikt om de documenten in een collectie uniek te identificeren en wordt automatisch door MongoDB toegevoegd wanneer de collectie wordt gemaakt.
Waarom MongoDB gebruiken?
Hieronder staan enkele van de redenen waarom men MongoDB zou moeten gaan gebruiken
- Documentgeoriënteerd - Aangezien MongoDB een database van het NoSQL-type is, slaat het de gegevens op in documenten in plaats van gegevens in een relationele indeling te hebben. Dit maakt MongoDB zeer flexibel en aanpasbaar aan de situatie en vereisten van de echte zakenwereld.
- Ad-hocquery's - MongoDB ondersteunt zoeken op veld, bereikquery's en zoekopdrachten in reguliere expressies. Er kunnen vragen worden gesteld om specifieke velden in documenten te retourneren.
- Indexering - Er kunnen indexen worden gemaakt om de prestaties van zoekopdrachten binnen MongoDB te verbeteren. Elk veld in een MongoDB-document kan worden geïndexeerd.
- Replicatie - MongoDB kan hoge beschikbaarheid bieden met replicasets. Een replicaset bestaat uit twee of meer mongo DB-instanties. Elk lid van de replicaset kan op elk moment optreden in de rol van de primaire of secundaire replica. De primaire replica is de hoofdserver die samenwerkt met de client en alle lees- / schrijfbewerkingen uitvoert. De secundaire replica's houden een kopie van de gegevens van de primaire replica's bij met behulp van ingebouwde replicatie. Wanneer een primaire replica mislukt, schakelt de replicaset automatisch over naar de secundaire en wordt deze de primaire server.
- Load balancing - MongoDB gebruikt het concept van sharding om horizontaal te schalen door gegevens over meerdere MongoDB-instanties te splitsen. MongoDB kan over meerdere servers draaien, de belasting verdelen en / of gegevens dupliceren om het systeem draaiende te houden in geval van hardwarestoringen.
Gegevensmodellering in MongoDB
Zoals we hebben gezien in het gedeelte Inleiding, hebben de gegevens in MongoDB een flexibel schema. In tegenstelling tot SQL-databases, waar u het schema van een tabel moet hebben gedeclareerd voordat u gegevens invoegt, dwingen de verzamelingen van MongoDB de documentstructuur niet af. Dit soort flexibiliteit maakt MongoDB zo krachtig.
Houd bij het modelleren van gegevens in Mongo rekening met het volgende
- Wat zijn de behoeften van de applicatie - Kijk naar de zakelijke behoeften van de applicatie en kijk welke gegevens en het type gegevens nodig zijn voor de applicatie. Zorg ervoor dat op basis hiervan de structuur van het document dienovereenkomstig wordt bepaald.
- Wat zijn patronen voor het ophalen van gegevens - Als u een intensief gebruik van zoekopdrachten voorziet, overweeg dan het gebruik van indexen in uw gegevensmodel om de efficiëntie van zoekopdrachten te verbeteren.
- Zijn er regelmatig toevoegingen, updates en verwijderingen in de database? Heroverweeg het gebruik van indexen of neem indien nodig sharding op in uw datamodelleringsontwerp om de efficiëntie van uw algehele MongoDB-omgeving te verbeteren.
Verschil tussen MongoDB en RDBMS
Hieronder staan enkele van de belangrijkste verschillen in termen tussen MongoDB en RDBMS
RDBMS | MongoDB | Verschil |
---|---|---|
Tafel | Verzameling | In RDBMS bevat de tabel de kolommen en rijen die worden gebruikt om de gegevens op te slaan, terwijl in MongoDB dezelfde structuur bekend staat als een verzameling. De collectie bevat documenten die op hun beurt velden bevatten, die op hun beurt sleutel-waardeparen zijn. |
Rij | Document | In RDBMS vertegenwoordigt de rij een enkel, impliciet gestructureerd gegevensitem in een tabel. In MongoDB worden de gegevens opgeslagen in documenten. |
Kolom | Veld | In RDBMS geeft de kolom een reeks gegevenswaarden aan. Deze staan in MongoDB bekend als Fields. |
Doet mee | Ingesloten documenten | In RDBMS worden gegevens soms over verschillende tabellen verspreid en om een volledig overzicht van alle gegevens te tonen, wordt er soms een join gevormd tussen tabellen om de gegevens te krijgen. In MongoDB worden de gegevens normaal gesproken opgeslagen in een enkele verzameling, maar gescheiden door middel van ingesloten documenten. Er is dus geen concept van joins in MongoDB. |
Afgezien van de verschillen in termen, worden hieronder enkele andere verschillen weergegeven
- Relationele databases staan erom bekend dat ze de gegevensintegriteit afdwingen. Dit is geen expliciete vereiste in MongoDB.
- RDBMS vereist dat gegevens eerst worden genormaliseerd, zodat het verweesde records en duplicaten kan voorkomen. Het normaliseren van gegevens heeft dan de vereiste van meer tabellen, wat vervolgens zal resulteren in meer tabel-joins, waardoor meer sleutels en indexen nodig zijn.
Naarmate databases beginnen te groeien, kunnen prestaties een probleem worden. Nogmaals, dit is geen expliciete vereiste in MongoDB. MongoDB is flexibel en de gegevens hoeven niet eerst te worden genormaliseerd.