Insights, technology, people and more

Altijd up-to-date met onze laatste artikelen.

@
Cloud oplossingen met MongoDB

Cloud oplossingen met MongoDB

11 May 2011 door in Databases Hosting

Bij webapplicaties die gebruik maken van een open-source database systeem, was tot niet al te lang geleden MySQL bijna de de facto standaard. MySQL is gratis, stabiel en zo breed ondersteund dat er bijna geen ontkomen meer aan was. Met de opkomst van NoSQL databases is daar echter verandering in aan het komen. Eén van de meest populaire databasesystemen van dit type is MongoDB, waarvan recent versie 1.8 is verschenen. Dit artikel gaat niet in op de verschillen tussen de verschillende databasesystemen, maar biedt een toelichting op de wijze waarop, met behulp van ingebouwde functionaliteit van MongoDB en het gebruik van Cloud servers van Cyso, er op betrekkelijk eenvoudige wijze bijzonder schaalbare databaseplatformen kunnen worden gerealiseerd.

MongoDB logo

Welke voordelen en ondersteuning biedt MongoDB?

Een probleem waar veel databasesystemen mee worstelen, is hoe je omgaat met groeiende databases. Naarmate databases en het gebruik ervan groeien, gaan er problemen optreden op het gebied van performance (hoge I/O belasting), replicatie (complexiteit en performance) en schaalbaarheid (disks lopen vol). MongoDB is ontworpen om deze uitdagingen op eenvoudige wijze het hoofd te kunnen bieden, zonder de ontwikkelaar van applicaties hiermee lastig te hoeven vallen.

MongoDB platformen bestaan uit een aantal componenten die verschillende rollen vervullen.

  • mongod – Dit is het database proces; in feite een instantie van MongoDB. Op een server kunnen meerdere mongod processen draaien.
  • mongos – Dit is een routing proces en verzorgt de connectie tussen een applicatie (client) en de verschillende mongod instanties.
  • config servers – Dit zijn specifieke mongod instanties die de onderdelen en gegevens van het MongoDB platform bijhouden en altijd op de hoogte zijn van welke data zich waar bevindt.

Replicatie en failover door replica sets

Voor bedrijfskritische applicaties zijn betrouwbaarheid en beschikbaarheid van cruciaal belang. Bij veel databasesystemen is het realiseren hiervan complex en vaak erg duur. Daarnaast resulteert het nogal eens in een behoorlijk performanceverlies. MongoDB ondersteunt standaard al datareplica en automatische failover door het gebruik van replica sets.

Een replica set bestaat uit een aantal mongod servers die geconfigureerd zijn om onderling gegevens te repliceren en om voor automatische failover te zorgen. Eén mongod wordt verkozen tot master binnen de set en de andere draaien in slave modus. Mocht de master uitvallen, dan stemmen de resterende nodes (eventueel met hulp van een arbiter; een mongod proces dat alleen dit ene doel dient) onderling over een nieuwe master.

De configuratie is eenvoudig en behelst niet veel meer dan het benoemen van de mongod instanties die samen een replica set moeten vormen. MongoDB regelt vervolgens de replicatie en failover geheel zelfstandig.

Schaalbaarheid door gebruik van sharding

Om de schaalbaarheid van databases te realiseren, maakt MongoDB gebruik van sharding. Sharding houdt in dat MongoDB in staat is om gegevens uit een database automatisch in een cluster te verdelen over verschillende daarvoor aangewezen nodes (shards). Op basis van een zogenaamde shard key wordt data op de daarvoor aangewezen shard geplaatst. Op deze manier wordt ervoor gezorgd dat databases buiten de fysieke grootte van een enkele server kunnen groeien en dat de belasting verdeeld wordt over meerdere servers.

MongoDB splitst de data vervolgens automatisch in kleinere blokken (chunks). MongoDB houdt op de achtergrond de verdeling van de gegevens in de gaten om te zorgen dat de spreiding van de data (en daarmee de belasting op de server) ongeveer gelijk blijft en zal via een balancer proces deze data chunks van de ene shard naar de andere verplaatsen en zo de balans herstellen. Bij het toevoegen van een extra shard zal hetzelfde gebeuren en zal er een nieuwe verdeling worden gemaakt en de nieuwe server vervolgens gevuld worden met de toegewezen dataset.

MondoDB Shard chuncks
Voorbeeld: sharding op basis van het alfabet.

Een shard bevat één of meer mongod servers, die elk een complete kopie van het toegewezen deel van de database bevatten. In productieomgevingen zal een shard vaak bestaan uit een replica set. Het aantal shards dat gebruikt wordt voor een database is vrij te bepalen en eenvoudig bij te stellen bij groeiende of juist krimpende databases.

De client communiceert altijd met het mongos proces dat het verzoek doorstuurt naar de juiste node. De ontwikkelaar van een applicatie heeft alleen te maken met dit mongos proces, en hoeft geen weet te hebben van de achterliggende verdeling van de databasegegevens.

MongoDB replica set
De gegevens van een shard bevinden zich in een replica set.

De kracht van MongoDB met VMware Cloudservers

Zoals u ziet, bevat MongoDB functionaliteit die zowel voor een betrouwbaar als schaalbaar platform kan zorgen. Er zijn echter wel heel wat componenten die benodigd zijn en rollen die vervuld dienen te worden om dit te realiseren. Gelukkig is niet voor ieder onderdeel een aparte server vereist. Eén server kan probleemloos meerdere rollen vervullen.

MongoDB Setup

Bij het ontwerpen van uw platform betekent dit dat u klein zou kunnen beginnen, maar wel de mogelijkheid heeft om eenvoudig uw platform uit te kunnen breiden als de hoeveelheid data en de belasting groter wordt. Gelukkig sluit dat perfect aan bij de kenmerken van Cloud hosting.

  • Snel servers toevoegen (horizontale schaalbaarheid)
  • Flexibele contracten
  • Template-gebaseerde servers
  • Hoog beschikbare servers

Als de behoefte ontstaat aan meer capaciteit, kunt u eenvoudig een extra mongod toevoegen aan uw platform. Afhankelijk van de actuele wensen en behoefte, kunt u deze inzetten om een bestaande replica set uit te breiden, nieuwe shards toe te voegen of rollen opnieuw te verdelen binnen uw servers. Het verplaatsen van de benodigde gegevens naar de server en het bijwerken van de configuratie over alle onderdelen van uw platform wordt automatisch door MongoDB verzorgd.


Lees ook: Betrouwbare replicatie met de Percona Toolkit

Conclusie

MongoDB leent zich niet voor alle soorten applicaties. Maar als uw applicatie of dienst wel geschikt is voor een MongoDB back-end, heeft u de beschikking over een database met ongekende mogelijkheden, prestaties en flexibiliteit. De architectuur is ingericht om optimaal gebruik te kunnen maken van de schaalbaarheid die ook kenmerkend is voor Cloud technologie.

MongoDB is een product dat nog volop in ontwikkeling is. Terwijl er bij iedere nieuwe versie nog steeds grote stappen worden gemaakt, zijn de versies die beschikbaar zijn voor Linux distributies als Ubuntu en Debian inmiddels stabiel en compleet genoeg om in productie genomen te worden. Wij hebben de afgelopen maanden al verschillende klanten en platformen ingericht met MongoDB en zien dit in de toekomst steeds meer gaan gebeuren.

Heeft u ook interesse in een gehoste MongoDB oplossing bij Cyso? Neem contact op met onze verkoopafdeling.


Altijd up-to-date met onze laatste artikelen.

@

Kwaliteit. Betrouwbaar. Betrokken.
  • 24/7 service support
  • Nederlandse datacenters
  • ISO 27001 gecertificeerd
vmware enterprise service provider