Wat is MongoDB? Invoering, Architectuur, kenmerken en voorbeeld
Wat is MongoDB?
MongoDB is een documentgeoriënteerde NoSQL-database die wordt gebruikt voor gegevensopslag met grote volumes. In plaats van tabellen en rijen te gebruiken zoals in de traditionele relationele databases, MongoDB maakt gebruik van collecties en documenten. Documenten bestaan uit sleutel-waardeparen die de basiseenheid van gegevens vormen MongoDB. Collecties bevatten sets documenten en functies die het equivalent zijn van relationele databasetabellen. MongoDB is een database die halverwege de jaren 2000 aan het licht kwam.
MongoDB Kenmerken
- Elke database bevat collecties die op hun beurt documenten bevatten. Elk document kan verschillend zijn met een variërend aantal velden. De grootte en inhoud van elk document kunnen van elkaar verschillen.
- De documentstructuur komt meer overeen 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.
- De rijen (of documenten zoals genoemd in MongoDB) hoeft niet vooraf een schema te hebben gedefinieerd. In plaats daarvan kunnen de velden direct worden aangemaakt.
- Het datamodel dat beschikbaar is binnen MongoDB Hiermee kunt u hiërarchische relaties weergeven, arrays opslaan en andere complexere structuren eenvoudiger maken.
- Schaalbaarheid – de MongoDB omgevingen zijn zeer schaalbaar. Bedrijven over de hele wereld hebben clusters gedefinieerd waarvan sommige meer dan 100 knooppunten draaien met ongeveer miljoenen documenten in de database
MongoDB Voorbeeld
Het onderstaande voorbeeld laat zien hoe een document kan worden gemodelleerd MongoDB.
- Het veld _id wordt toegevoegd door MongoDB 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 het wordt feitelijk opgeslagen als een ingebed document in de collectie zelf. Dit is een van de belangrijkste verschillen in de manier waarop gegevens worden gemodelleerd MongoDB.
Belangrijkste onderdelen van MongoDB Architectuur
Hieronder vindt u enkele veelgebruikte termen MongoDB
- _ID kaart – Dit is een verplicht veld in elke MongoDB document. Het veld _id vertegenwoordigt een unieke waarde in de MongoDB document. Het veld _id is vergelijkbaar met de primaire sleutel van het document. Als u een nieuw document aanmaakt zonder een _id-veld, MongoDB zal het veld automatisch aanmaken. Als we bijvoorbeeld het voorbeeld van de bovenstaande klantentabel zien, voegt Mongo DB een 24-cijferige unieke identificatie 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 |
- Collectie – Dit is een groepering van MongoDB documenten. Een verzameling is het equivalent van een tabel die is gemaakt in een ander RDMS, zoals Oracle of MSSQL. Er bestaat een verzameling binnen één database. Zoals uit de inleiding blijkt, dwingen collecties geen enkele vorm van structuur af.
- Cursor – Dit is een verwijzing naar de resultatenset van een query. Clients kunnen een cursor doorlopen om resultaten op te halen.
- Database – Dit is een container voor verzamelingen zoals in RDMS, waarbij het een container voor tabellen is. Elke database krijgt zijn eigen set bestanden op het bestandssysteem. A MongoDB server kan meerdere databases opslaan.
- Document – Een record in a MongoDB verzameling wordt in feite een document genoemd. Het document zal op zijn beurt bestaan uit veldnamen en waarden.
- Veld – Een naam-waardepaar in een document. Een document heeft nul of meer velden. Velden zijn analoog aan kolommen in relationele databases. Het volgende diagram toont 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 voor mensen leesbaar, plat tekstformaat voor het uitdrukken van gestructureerde data. JSON wordt momenteel in veel programmeertalen ondersteund.
Even een korte opmerking over het belangrijkste verschil tussen het _id-veld en een normaal verzamelveld. Het veld _id wordt gebruikt om de documenten in een collectie uniek te identificeren en wordt automatisch toegevoegd door MongoDB wanneer de collectie wordt gemaakt.
Waarom gebruiken MongoDB?
Hieronder staan enkele redenen waarom men zou moeten beginnen met gebruiken MongoDB
- Documentgericht – Sinds MongoDB is een NoSQL type database, in plaats van gegevens in een relationeel typeformaat op te slaan, slaat het de gegevens op in documenten. Dit maakt MongoDB zeer flexibel en aanpasbaar aan de situatie en vereisten in de echte zakenwereld.
- Ad-hocvragen – MongoDB ondersteunt zoeken op veld, bereikquery's en reguliere expressiezoekopdrachten. Query's kunnen worden uitgevoerd om specifieke velden binnen documenten te retourneren.
- Indexering – Indexen kunnen worden gemaakt om de prestaties van zoekopdrachten binnenin te verbeteren MongoDB. Elk veld in a 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 replicasetlid kan op elk moment de rol van primaire of secundaire replica vervullen. De primaire replica is de hoofdserver die met de client communiceert en alle lees-/schrijfbewerkingen uitvoert. De secundaire replica's onderhouden een kopie van de gegevens van de primaire met behulp van ingebouwde replicatie. Wanneer een primaire replica faalt, schakelt de replicaset automatisch over naar de secundaire en wordt deze vervolgens de primaire server.
- Load-balancering – MongoDB gebruikt het concept van sharding om horizontaal te schalen door gegevens over meerdere te splitsen MongoDB instanties. MongoDB kan over meerdere servers draaien, waarbij de belasting wordt verdeeld en/of gegevens worden gedupliceerd om het systeem draaiende te houden in geval van een hardwarestoring.
Gegevensmodellering in MongoDB
Zoals we in het gedeelte Inleiding hebben gezien, zijn de gegevens in MongoDB heeft een flexibel schema. Anders dan binnen SQL databases, waar u het schema van een tabel moet laten declareren voordat u gegevens invoegt, MongoDB's collecties dwingen de documentstructuur niet af. Dit soort flexibiliteit is wat maakt MongoDB zo krachtig.
Houd bij het modelleren van gegevens in Mongo rekening met de volgende zaken
- 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 er op basis hiervan voor dat de structuur van het document dienovereenkomstig wordt bepaald.
- Wat zijn patronen voor het ophalen van gegevens – Als u een intensief gebruik van query's verwacht, overweeg dan het gebruik van indexen in uw datamodel om de efficiëntie van query's te verbeteren.
- Vinden er frequente toevoegingen, updates en verwijderingen plaats in de database? Heroverweeg het gebruik van indexen of neem indien nodig sharding op in uw ontwerp voor gegevensmodellering om de efficiëntie van uw algehele MongoDB milieu.
Verschil tussen MongoDB & RDBMS
Hieronder staan enkele van de belangrijkste termverschillen tussen MongoDB en RDBMS
RDBMS | MongoDB | Verschil |
---|---|---|
tafel | Collectie | In RDBMS, bevat de tabel de kolommen en rijen die worden gebruikt om de gegevens op te slaan, terwijl in MongoDB, staat dezelfde structuur bekend als een verzameling. De verzameling bevat documenten die op hun beurt velden bevatten, die op hun beurt sleutel-waardeparen zijn. |
Rij | Document | In RDBMS vertegenwoordigt de rij één 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 in MongoDB staan bekend als Velden. |
Sluit zich aan bij | Ingesloten documenten | In RDBMS worden gegevens soms verspreid over verschillende tabellen en om een compleet beeld van alle gegevens te tonen, wordt er soms een join over tabellen gevormd om de gegevens te verkrijgen. In MongoDB, worden de gegevens normaal gesproken opgeslagen in een enkele verzameling, maar gescheiden door het gebruik van ingesloten documenten. Er is dus geen concept van meedoen MongoDB. |
Naast de verschillen in termen, worden hieronder nog enkele andere verschillen weergegeven
- Relationele databases staan erom bekend dat ze de gegevensintegriteit afdwingen. Dit is geen expliciete vereiste in de EU MongoDB.
- RDBMS vereist dat de gegevens zijn genormaliseerde Ten eerste om verweesde records en duplicaten te voorkomen. Voor het normaliseren van gegevens zijn dan meer tabellen nodig, wat vervolgens zal resulteren in meer tabeljoins, waardoor er meer sleutels en indexen nodig zijn. Naarmate databases beginnen te groeien, kunnen de prestaties een probleem worden. Nogmaals, dit is geen expliciete vereiste MongoDB. MongoDB is flexibel en hoeft de gegevens niet eerst te normaliseren.