Vier database technologieën die wij het meest inzetten bij Cube.
Als je 'database' zegt, denkt iedereen aan hetzelfde: een plek waar je data opslaat en weer ophaalt. En dat klopt, uiteindelijk draait het op een schijf, of soms zelfs op een RAM-geheugen stick. Maar zodra je landschap groeit, de data complexer wordt of je real-time inzichten nodig hebt, kom je er al snel achter dat een type database niet altijd genoeg is. Bij Cube bouwen we regelmatig oplossingen waarin meerdere databases samenwerken. Niet omdat het ingewikkeld moet zijn, maar omdat elk type database ergens het beste in is. In dit artikel nemen we je mee langs de vier database technologieën die wij het meest inzetten en leggen we uit wanneer je welke kiest.
Wat is een database eigenlijk?
Even terug naar de basis. Een database is een systeem om gegevens gestructureerd op te slaan, te beheren en weer op te halen. Denk aan klantgegevens, bestellingen, productinformatie of sensor data. Zonder databases zou elke applicatie een goudvis zijn: alles vergeten zodra je de stekker eruit trekt. Maar de vraag is niet alleen welke data we moeten opslaan, ook wat we ermee willen bereiken. Wil je snel kunnen zoeken, filteren of analyseren? Moet data vooral snel worden opgeslagen of juist snel worden opgehaald? Net zoals je een schroevendraaier niet gebruikt om een spijker in te slaan, is niet elke database geschikt voor elk type data. Daarom bestaan er verschillende soorten, elk met hun eigen kracht.
MySQL: de betrouwbare alleskunner.
MySQL is een relationele database. Dat betekent dat data wordt opgeslagen in tabellen met rijen en kolommen, een beetje zoals een goed georganiseerd Excel-bestand, maar dan veel krachtiger en sneller. Relationele databases zijn ideaal voor gestructureerde data waarbij de relaties tussen gegevens belangrijk zijn. Denk aan een webshop: een klant plaatst een bestelling, die bestelling bevat producten, elk product heeft een categorie. Die verbanden leg je vast met relaties tussen tabellen.
Wanneer zetten wij MySQL in?
Websites en webapplicaties (denk aan CMS’en, portalen en webshops)
Applicaties met duidelijke, voorspelbare datastructuren
Projecten waar betrouwbaarheid en snelheid essentieel zijn
MySQL is ook de standaard database binnen ons Laravel-ecosysteem . De combinatie Laravel + MySQL is beproefd, goed gedocumenteerd en stelt ons in staat om snel en stabiel te bouwen. Voor de meeste projecten is MySQL dan ook ons startpunt.
Een voorbeeld
Bij een klantportaal in MySQL draait alles om de kracht van eenvoud de helderheid. Door klanten, contracten en facturen via heldere relaties te koppelen, creëer je een systeem dat altijd logisch blijft. Juist die relationele structuur biedt rust en overzicht, hoe hard je dataset ook groeit.
// Klantgegevens ophalen met bijbehorende contracten
$klant = Klant::with('contracten')->find($id);
// MySQL zoekt automatisch de juiste relaties
// op basis van de tabellen: klanten, contracten, facturen
MongoDB: flexibel wanneer structuur nog niet vaststaat.
MongoDB is een NoSQL-database. In plaats van tabellen met vaste kolommen slaat MongoDB data op in documenten, vergelijkbaar met JSON-objecten. Elk document kan een andere structuur hebben, wat MongoDB enorm flexibel maakt.
Dat is handig als je werkt met data die niet netjes in een spreadsheet past. Denk aan productcatalogus waarbij elk product andere eigenschappen heeft, contentmanagement-systemen, of data uit externe bronnen die in allerlei formaten binnenkomt.
Wanneer zetten wij MongoDB in?
Applicaties met wisselende of onvoorspelbare datastructuren
Grote hoeveelheden ongestructureerde of semi-gestructureerde data
Projecten waar flexibiliteit in het datamodel voorop staat
Een voorbeeld
Binnen een Data Management Platform (DMP) verwerken we data uit verschillende bronnen: een CRM levert klantdata in het ene formaat, een ERP-systeem in het andere. MongoDB maakt het mogelijk om die data op te slaan zonder alles eerst in dezelfde mal te persen. In MySQL zou je voor elk type product aparte kolommen of extra tabellen moeten aanmaken, terwijl MongoDB flexibel met deze variatie omgaat.
// Een product in MongoDB — elk document kan anders zijn
{
"naam": "Warmtepomp XR-500",
"categorie": "klimaat",
"specificaties": {
"vermogen_kw": 5.2,
"energielabel": "A+++",
"geschikt_voor": ["nieuwbouw", "renovatie"]
}
}
// Een ander product met een totaal andere structuur:
{
"naam": "Zonnepaneel Mono 400W",
"categorie": "energie",
"certificeringen": ["IEC 61215", "IEC 61730"],
"garantie_jaar": 25
}
InfluxDB: gebouwd voor data die nooit stopt.
InfluxDB is een time-series database, specifiek ontworpen voor het opslaan en analyseren van data die continu binnenstroomt met een tijdstempel. Denk aan CPU-belasting, temperatuursensoren, energieverbruik of API-responstijden. Waar MySQL of MongoDB prima werken voor data die je af en toe bijwerkt, is InfluxDB gebouwd voor scenario’s waar er élke seconde nieuwe datapunten worden geschreven. Het is geoptimaliseerd voor snel wegschrijven van data en om tijdgebaseerde queries te schrijven.
Wanneer zetten wij InfluxDB in?.
Monitoring van systemen en infrastructuur,
Opslaan van binnenkomende sensor- en verbruiksdata,
Real-time dashboards met tijdreeksen.
InfluxDB in de praktijk.
Een concreet voorbeeld uit ons eigen werk. Voor Fundaments hebben we een verbruiksengine gebouwd die vCloud-infrastructuurmetrics verzamelt. Meerdere clusters leveren continu data over CPU-gebruik, geheugen, storage en netwerkcapaciteit. Deze data wordt opgeslagen in InfluxDB en via een REST API ontsloten richting het Data Management Platform, waar Filament-dashboards de metrics visualiseren in real-time grafieken. Daarnaast wordt deze data ook getoond in het Klantportaal voor eindgebruikers. In InfluxDB worden metrics opgeslagen als measurements met tags en velden. Een query om het CPU-gebruik van een virtueel datacenter op te halen kan er bijvoorbeeld zo uitzien. Dit geeft het gemiddelde CPU-gebruik per uur over de afgelopen week, precies wat je nodig hebt voor een helder dashboard. Probeer dat maar eens efficiënt te doen in MySQL met miljoenen datapunten daarin schittert InfluxDB echt.
from(bucket: "vcloud_metrics")
|> range(start: -7d)
|> filter(fn: (r) => r["_measurement"] == "virtual_datacenter_usage")
|> filter(fn: (r) => r["_field"] == "cpu_used_mhz")
|> aggregateWindow(every: 1h, fn: mean)
Elasticsearch: zoeken als superkracht.
Elasticsearch is strikt genomen geen traditionele database, maar een zoek- en analyse-engine. Het is gebouwd op Apache Lucene en geoptimaliseerd voor het razendsnel doorzoeken van enorme hoeveelheden data, denk aan full-text search, autocomplete en faceted filtering. Waar je in MySQL een query schrijft die exact matcht op een kolom, kan Elasticsearch zoeken op relevantie, synoniemen en zelfs spelfouten verwerken. Dat maakt het een perfecte aanvulling op je primaire database. Vaak wordt de data in een Elasticsearch database gevuld vanuit een MySQL database om zo de kwaliteiten van ieder type database te benutten.
Wanneer zetten wij Elasticsearch in?
Uitgebreide zoekfunctionaliteit in webshops of portalen
Loganalyse en monitoring (in combinatie met de ELK-stack)
Applicaties waar gebruikers snel door grote datasets moeten kunnen zoeken
Een voorbeeld
Voor webshops hebben we meerdere keren Elasticsearch ingezet om een krachtige zoekfunctie te bouwen. Gebruikers moeten snel producten kunnen vinden op basis van naam, kenmerk of beschikbaarheid, en dat met duizenden producten in de database. Elasticsearch doorzoekt in milliseconden meerdere velden tegelijk, corrigeert spelfouten en rangschikt resultaten op relevantie. Dat is iets wat een traditionele database simpelweg niet zo snel en slim kan.
// Zoekquery in Elasticsearch
GET /products/_search
{
"query": {
"multi_match": {
"query": "fiets met accu en 5 versnellingen",
"fields": ["naam", "kenmerken"],
"fuzziness": "AUTO"
}
}
}
De kracht van combinatie.
In de praktijk gebruiken we deze databases zelden in isolatie. Binnen een Data Management Platform werken ze juist samen. Elk type database doet waar het goed in is:
MySQL beheert de gestructureerde kern: klanten, contracten, bestellingen en relaties daartussen.
MongoDB vangt flexibele data op uit externe bronnen die niet in een vast schema passen.
InfluxDB slaat continu binnenkomende tijdreeksdata op voor monitoring, verbruik en dashboards.
Elasticsearch maakt alles doorzoekbaar met snelle, slimme zoekfunctionaliteit.
Het DMP fungeert als de centrale hub die al deze databronnen verbindt en ontsluit richting front-end applicaties, portalen en dashboards. Dat is de kern van hoe wij bij Cube data-architectuur benaderen: niet een database voor alles, maar de juiste database voor de juiste taak.
Wat elke database voor jou betekent.
Een overzicht van de vier databases en hun sterke punten. Misschien denk je: dat klinkt allemaal behoorlijk technisch. En dat is het ook, maar daar hoef je je als opdrachtgever niet druk om te maken. Wij maken die keuzes voor je, op basis van jouw situatie.
Wat je wél merkt:
Betere performance: doordat we de juiste database voor de juiste taak inzetten, draait je applicatie soepeler.
Schaalbaarheid: je systeem groeit mee zonder dat alles overhoop moet.
Lagere kosten: geen onnodige complexiteit, wel de juiste tools op de juiste plek.
Toekomstbestendig: een goed ontworpen data-architectuur is makkelijker uit te breiden met nieuwe functionaliteit.
Wij denken graag mee over de beste aanpak voor jouw specifieke situatie. Of het nu gaat om een nieuw platform, een bestaand systeem dat slimmer moet werken, of een Data Management Platform dat al je data samenbrengt. Databases zijn de onzichtbare fundering onder elke applicatie. Je ziet ze niet, maar je merkt het direct als ze niet goed zijn ingericht. Door bewust te kiezen welk type database waar wordt ingezet, bouwen we bij Cube oplossingen die niet alleen vandaag werken, maar ook morgen nog meekunnen. En dat is precies het idee: technologie die voor je werkt.
Klaar voor de volgende stap? Wij ook.
Benieuwd waar jouw data-landschap staat en waar kansen liggen voor verbetering? We denken graag met je mee.
Dit sluit mooi aan.
Hoe zet je als organisatie AI in, zonder de controle over data te verliezen?
Een IT-landschap dat werkt, groeit met je mee.