Databases zijn een belangrijk onderdeel van de meeste applicaties en websites. Ze slaan cruciale gegevens op, zoals inhoud en gebruikersgegevens, en kunnen events binnen een applicatie vastleggen. Er zijn veel verschillende databasetechnologieën beschikbaar en de technologie die je kiest kan van invloed zijn op alles, van applicatiearchitectuur tot ontwikkelprocessen.

We nemen hier DynamoDB en MongoDB onder de loep, twee populaire keuzes die geen traditionele relationele databases zijn. Je kunt zelf beslissen of deze “NoSQL” benadering geschikt is voor jouw applicatie en welke van deze twee databaseplatforms de klus het beste klaart.

Wat je moet weten over de technologie: DynamoDB vs MongoDB

In het afgelopen decennium zijn NoSQL databases in populariteit gegroeid om tegemoet te komen aan de vraag naar flexibelere en schaalbare technologie. De groei van sociale netwerken en door gebruikers gegenereerde content heeft deze vraag deels aangewakkerd.

Jarenlang maakten de meeste applicaties gebruik van traditionele SQL databases, waarin elke rij gegevens een afzonderlijke entiteit en de relaties met andere entiteiten beschrijft. Als antwoord op een query voegt een relationele database de gegevens van verschillende rijen samen en stuurt deze terug naar een clientapplicatie. Deze architectuur is geoptimaliseerd om opslag te beperken en duplicatie van herhalende gegevens te voorkomen, omdat elk element van een resultatenreeks meestal maar één keer wordt opgeslagen in de database.

NoSQL databases slaan de basisentiteit en gerelateerde gegevens daarentegen meestal op in een enkel document. Dat betekent dat sommige gegevens meerdere keren worden opgeslagen, waardoor de opslagvereisten toenemen. Maar omdat de opslagkosten zijn gedaald, heeft de schaalbaarheid van NoSQL oplossingen voor veel applicaties de overhand gekregen. Hun onderliggende architectuur maakt NoSQL databases uitzonderlijk geschikt om te draaien in clusters met gegevens die verdeeld zijn over meerdere nodes.

Wat is DynamoDB?

DynamoDB is een serverloze NoSQL database, ontwikkeld door Amazon om zijn beroemde online winkel te ondersteunen en vervolgens in 2012 beschikbaar gemaakt voor developers op zijn cloudhostingplatform, Amazon Web Services (AWS). Net als voor de winkel van Amazon, beantwoordt DynamoDB query’s zonder de rekenoverhead die nodig is om de soms complexe joins van een relationele database te maken.

DynamoDB is geoptimaliseerd voor schaalbaarheid en is een key-value item store waar alle gegevens met betrekking tot een specifieke key worden opgeslagen. Samenvoegen is niet nodig! Nadat deze vereiste was geëlimineerd, optimaliseerden de engineers DynamoDB om gegevens snel terug te geven.

Amazon maakt DynamoDB beschikbaar via AWS als een volledig managed dienst. Daarom is het populair geworden onder developers, die DynamoDB kunnen gebruiken met minimale overhead voor de  database. Bovendien schaalt de service gemakkelijk mee als applicaties meer gebruikers krijgen. En als een bedrijf andere AWS tools gebruikt, kan DynamoDB daar naadloos op aansluiten.

DynamoDB vs MongoDB: Het DynamoDB logo.
Het DynamoDB logo.

Hoe werkt DynamoDB?

DynamoDB is een NoSQL key-value item store en omdat het een managed service is, zijn de onderliggende architectuur en infrastructuur geabstraheerd van de developer.

Onder de motorkap worden gegevens gepartitioneerd aan de hand van de primaire key, waarbij elke partitie drie nodes bevat die een kopie van de gegevens bewaren. Deze partitionering maakt eenvoudig schalen mogelijk, omdat de gegevens over meerdere servers worden verspreid. Bovendien zorgt de gegevensreplicatie voor redundantie als een bepaalde node uitvalt.

Een van de drie nodes wordt aangewezen als de leidende node, waar alle schrijfacties in eerste instantie worden uitgevoerd voordat ze worden gerepliceerd naar de andere twee nodes. Door eerst naar de leidende node schrijven, kan DynamoDB consistente writes onderhouden. Voor optimale leesconsistentie moeten alle DynamoDB reads ook de leader node gebruiken.

Deze aanpak gaat ten koste van performance in applicaties die veel lezen, dus DynamoDB geeft gebruikers de mogelijkheid om te kiezen voor “eventual” consistentie. Dit maakt het mogelijk om reads te spreiden over alle nodes. Deze optie kan echter ten koste gaan van de nauwkeurigheid als de data niet naar alle nodes is verspreid voor een read operatie.

Voor- en nadelen van DynamoDB

De belangrijkste voordelen van DynamoDB zijn dat het serverloos, schaalbaar en snel is. Je kunt het in enkele minuten configureren met minimale infrastructuur overhead. AWS zorgt voor beveiliging, upgrades, serverbeheer en het garanderen van hoge beschikbaarheid. Bovendien kan DynamoDB oneindig schalen (alleen beperkt door de fysieke grootte van AWS) op een pay-for-use model. Tot slot biedt DynamoDB snelle lees- en schrijffuncties, met schaalmogelijkheden die zorgen voor blijvend snelle prestaties als de data store groeit.

Een nadeel zijn de minimale query opties. Key lookups zijn handig, maar als je complexere queries nodig hebt – zoals aggregaties – zul je data moeten exporteren naar een externe database voor analyse. Bovendien is DynamoDB alleen beschikbaar via AWS. Als je al geïntegreerd bent in het AWS ecosysteem, is dat geen probleem. Als je bedrijf on-premises wil implementeren, moet het ergens anders zoeken.

Wat is MongoDB?

MongoDB is een NoSQL documentopslag die oorspronkelijk in 2009 werd uitgebracht als een open-source database met de mogelijkheid van commerciële ondersteuningspakketten. Het slaat JSON documenten op als binaire JSON (BSON) objecten, die complexe gegevensstructuren kunnen opslaan zoals nested properties en arrays.

MongoDB draait op Windows, macOS en Linux platforms en ondersteunt veel programmeertalen. Je vindt MongoDB ook op populaire cloudplatforms van Amazon, Google en Microsoft.

MongoDB is vooral populair vanwege zijn flexibiliteit. Het biedt alle voordelen van een NoSQL database terwijl het aan complexere eisen voldoet, zoals ACID transacties voor gegevensintegriteit, aggregation queries en het samenvoegen van datasets. En dankzij de ondersteuning van JavaScript is het een steeds populairdere backend database voor websites die deze populaire programmeertaal gebruiken.

DynamoDB vs MongoDB: Het MongoDB logo.
Het MongoDB logo.

Hoe werkt MongoDB?

MongoDB slaat BSON objecten op die één of meer key-value paren bevatten. De waarden kunnen eenvoudige gegevenstypen zijn, zoals strings en tijdstempels, of complexe typen, zoals nested objecten en arrays.

MongoDB slaat documenten op in collecties, vergelijkbaar met rijen in een tabel. Het is gebruikelijk dat documenten in een collectie een gelijkaardig schema delen, maar zelfs documenten met dezelfde keys kunnen verschillende schema’s hebben – keys met dezelfde naam hoeven niet hetzelfde gegevenstype op te slaan. MongoDB kan validatie afdwingen op properties wanneer records worden ingevoegd of bijgewerkt, en er is een vereiste voor gegevens in bepaalde keys om van een specifiek type te zijn.

MongoDB biedt ook sharding, wat vergelijkbaar is met partitionering in DynamoDB. Sharding verdeelt gegevens over meerdere servers op basis van een shard key. Door gegevens te verdelen kunnen lees- en schrijfbewerkingen over meerdere servers worden verspreid, waardoor wordt voorkomen dat een enkele server overbelast raakt.

Voordelen en nadelen van MongoDB

Naast de typische voordelen van NoSQL ondersteunt MongoDB meerdere platforms – van vitaal belang voor bedrijven die flexibiliteit willen in hun keuze voor een cloudprovider of de mogelijkheid om een database on-premise te hosten.

MongoDB ondersteunt ook complexe queries en aggregaties via zijn aggregatie pijplijn. Dat maakt het uitzonderlijk flexibel vergeleken met andere NoSQL keuzes, omdat het analytische queries, zoekopdrachten in documenten en data joining ondersteunt. De prestaties kunnen echter afnemen bij grote schalen. Daarnaast biedt MongoDB Atlas een serverloze optie voor bedrijven die de last van infrastructuurbeheer willen wegnemen.

Een van de nadelen van MongoDB is dat de gegevensvoetafdruk vrij groot kan zijn, omdat in documenten zowel de gegevens als de keys moeten worden opgeslagen. En hoewel de aggregatie pijplijnen krachtige tools zijn, maakt het gebruik van een custom syntaxis ze uitzonderlijk complex om te schrijven en te bouwen.

Tot slot is er een infrastructuuroverhead voor degenen die MongoDB Atlas niet gebruiken, vooral voor productiesystemen die replicatie en sharding gebruiken om ervoor te zorgen dat het systeem goed presteert. Hieronder vallen monitoring, het beheren van data scheefgroei en het uitvoeren van upgrades, bovenop het beheren van de beveiliging.

Bottomline: DynamoDB vs MongoDB

Hoewel DynamoDB en MongoDB beide NoSQL databases zijn, verschillen ze aanzienlijk. Je use case zal sterk bepalen welke je moet gebruiken.

Ten eerste heeft DynamoDB minder beschikbare datatype-opties op schema niveau. Het ondersteunt bijvoorbeeld geen datums, wat betekent dat developers logica in hun applicaties moeten onderhouden om deze te parsen en te verwerken. MongoDB ondersteunt veel meer datatypes, waaronder datums.

Ten tweede maakt DynamoDB query’s mogelijk via key-value lookups en tabel scans. De prestaties van het scannen van tabellen laten echter te wensen over. Voor complexere of ad hoc-achtige query’s kun je het beste exporteren naar een andere database. MongoDB daarentegen ondersteunt key lookups, naast analytische queries en data joining. Het biedt flexibelere indexondersteuning omdat je secundaire indexen kunt toevoegen aan elk veld. Hoewel DynamoDB secundaire indexen ondersteunt, zijn ze beperkt door hun conceptuele complexiteit en het aantal dat je kunt maken.

Op het gebied van beveiliging profiteert DynamoDB van het AWS platform. Authenticatie met DynamoDB gaat via AWS gebruikerstoegangscontrole. Dat maakt het beveiligen van een DynamoDB database vrij eenvoudig.

Met MongoDB ben je zelf verantwoordelijk voor alle beveiligingsbeperkingen, inclusief het aanmaken van gebruikersaccounts en het beheren van netwerktoegang. Dat betekent een veel hogere overhead. MongoDB Atlas verandert MongoDB echter in een beheerde oplossing, waardoor deze uitdagingen worden geëlimineerd.

Als beheerde oplossing heeft DynamoDB ingebouwde back-up- en herstelfuncties, waaronder de mogelijkheid voor multi-regio replicas en eenvoudig herstel van back-ups. Standaard beheert MongoDB deze processen niet, waardoor handmatige configuratie nodig is. MongoDB Atlas vergemakkelijkt het proces enigszins, maar vereist daarvoor extra configuratie.

In een oogopslag: DynamoDB vs MongoDB

Kenmerken DynamoDB MongoDB
Datatypes De meeste standaard datatypes behalve datums Elk datatype in de BSON specificatie inclusief datums
Zoeken op Key lookups met beperkte query’s voor meerdere documenten Key lookups, queries, joins en aggregaties
Beveiliging Ingebouwd met AWS met weinig overhead Zelf beheerd tenzij MongoDB Atlas wordt gebruikt
Schaalbaarheid Ingebouwd met AWS met weinig overhead Zelf beheerd tenzij MongoDB Atlas wordt gebruikt
Back-up en herstel Ingebouwd met AWS met weinig overhead Zelf beheerd tenzij MongoDB Atlas wordt gebruikt

In het algemeen is MongoDB de flexibelere optie – het kan overal worden ingezet en biedt een rijkere set tools voor het opslaan en bevragen van gegevens. Maar voor een slanke database met strakke AWS integratie en minder infrastructuur- en beveiligingsoverhead is DynamoDB een goede keuze.

Samenvatting

MongoDB en DynamoDB zijn beide high-performance NoSQL oplossingen waarvan de relatieve sterktes ze geschikt maken voor zeer verschillend gebruik. Voor een slanke en eenvoudige oplossing is DynamoDB een sterke keuze. Maar MongoDB is een winnaar als je complexere schema’s, aggregation queries en betere indexondersteuning nodig hebt.

Onthoud dat de prijs voor flexibiliteit een hogere infrastructuuroverhead is. Maar als je de flexibiliteit van MongoDB nodig hebt en de overhead wilt verminderen, dan is MongoDB Atlas vaak een betaalbaar compromis.

Natuurlijk wil je naast je database ook een overtuigende applicatie. Je kunt de jouwe ontwikkelen op Kinsta’s Applicatie Hosting platform en zelfs gratis beginnen met ons Hobby pakket, op te schalen wanneer gebruikers massaal naar je meesterwerk komen.

Steve Bonisteel Kinsta

Steve Bonisteel is Technical Editor bij Kinsta. Hij begon zijn schrijverscarrière als verslaggever en achtervolgde ambulances en brandweerwagens. Sinds eind jaren negentig schrijft hij over internetgerelateerde technologie.