Direct naar content

Relationele stress bij DBAs? Niet nodig!

Wat is dit nu voor een rare kop, zul je misschien denken. Relationele stress? Maar toch is het wat ik regelmatig tegenkom als ik voor een groep met databasebeheerders sta en ze vertel over MongoDB. Laat ‘het relationele’ voor wat het is, want je hebt echt een andere mindset nodig. NoSQL? NoStress!

DBA: “Ja, maar indexes dan en als ik een tabel moet…”
Ik: “Het werkt niet met tabellen, het werkt met documenten en het is schemaloos.”
DBA: “eh…”

Laatst gaf ik een workshop voor een man of zeven en het is altijd een mooi gezicht om te zien dat het kwartje valt. Het is echt even een andere manier van denken, namelijk. Maar, zo zeg ik altijd: wees niet bang om de structuur los te laten. Als je van relationele databases overgaat naar niet-relationele databases, als het niet meer gaat over tabellen, maar over collecties. Geen rijen, maar documenten. En zeker ook qua beheer van bijvoorbeeld MongoDB is het even wennen. Maar echt heel leuk en het geeft veel vrijheid.

MongoDB, JSON en Java

De workshop gaf ik bij een grote financiële instelling, waar ze gebruik maken van Microsoft SQL Server. Er draait daarnaast meerdere grote Oracle-instances, maar ook MySQL is flink in zwang. Maar de developmentafdeling wilde graag van legacy af en men was benieuwd of MongoDB geschikt was voor een geconverteerde applicatie waar ze mee bezig waren. De conclusie was al snel dat MongoDB juist erg goed paste, omdat ze veel in Java programmeren. MongoDB slaat data op via JSON en dat werkt één op één met Java. Probleemloos!

Ik heb daar toen een complete OTAP opgezet, een ontwikkeling / test / acceptatie / productie omgeving. Een van de eisen – want een financiële instelling – was dat het allemaal heel veilig ingericht moest worden. Helemaal dichtgetimmerd. Daarom heb ik daar ook SSL geïmplementeerd en MongoDB draait dus compleet op SSL en je komt niet binnen zonder certificaat.

Meer applicaties

Dat de ontwikkelaars erg tevreden zijn met MongoDB, bleek wel toen de OTAP-omgeving nog maar net operationeel was en ze meteen een tweede applicatie overzetten. Zo enthousiast waren ze erover en ze zijn van plan om langzaamaan steeds meer applicaties te migreren naar dit platform.

Het platform draait overigens op Percona Server voor MongoDB, omdat de organisatie daar ook al MySQL van hadden. En het mooie is dat Percona ook een heel mooie open source suite heeft voor management en monitoring. Dat kun je zo installeren en haalt de statistische data probleemloos uit MongoDB.

Google gebruikt het

Inmiddels ben ik behoorlijk gecharmeerd van NoSQL en MongoDB in het bijzonder, dat is wel duidelijk. Het is een prachtig open-source product, met een trotse community. Het zijn ook niet de minste bedrijven die MongoDB gebruiken, want wat dacht je van Google? UPS? Facebook, ebay, Cisco?

Het is ook niet zo vreemd, want een van de mooie eigenschappen van NoSQL is dat het horizontaal schaalt. En dat is een groot verschil met Oracle, bijvoorbeeld, dat verticaal schaalt. Je kan de server groter maken, meer processoren toevoegen en het geheugen uitbreiden; maar op een gegeven moment houdt dat ook op.

MongoDB daarentegen schaalt horizontaal en als je tot de conclusie komt dat ‘het niet meer past’, de server raakt vol, dan zet je er gewoon een server naast (Sharding) en dan ga je weer verder. Zo kun je clusters neerzetten van duizenden machines, als het nodig is. Als je ziet dat er een piek is in de datatoevoer, dan voeg je wat extra machines toe. Als het niet meer nodig is, dan haal je het weer weg. En dat maakt het heel flexibel.

Een MongoDB-omgeving is zo opgezet

En omdat het naadloos samenwerkt met Java (maar ook met andere ontwikkeltalen, vrees niet, .NET-ters!), is het een heel snelle ontwikkelomgeving. Wat je vaak ziet is dat er een omgeving wordt opgezet, zonder dat er een DBA aan te pas komt. Een developer zet in no-time een MongoDB server op – bij wijze van spreken gewoon onder zijn bureau – en gaat ermee ‘spelen’. Het werkt!

Maar als je het serieuzer wilt aanpakken, als het allemaal wat groter wordt en je tegen performanceproblemen aanloopt, dan is het natuurlijk wel zo handig om iemand in te schakelen die er net wat meer verstand van heeft.

Ik kan het elke developer en elke DBA aanraden, ga ermee aan de slag! Ja, je gaat een relatieloze tijd in, maar je krijgt er zo’n vrijheid voor terug!

Downloaden kan hier: https://github.com/mongodb/mongo