Opensourcewerken voor data science

Opensourcewerken voor data science

Het verhaal achter een Zeeuws "Mosselpannetje"

Data is gefragmenteerd opgeslagen: netwerkschijven, lokale bestandssystemen, databases en cloudomgevingen. Je code staat in verschillende Jupyter notebooks en losse scripts. Sommige beheerd in Git, andere moeten het doen met twijfelachtige bestandsnamen zoals "_v1", "_v2" en "FINAL".

Het overzicht ontbreekt, data vloeit niet terug naar één centrale bron en je weet niet meer hoe datasets onderling afhankelijk zijn. Je zoekt een manier om structuur aan te brengen.

Er bestaat gelukkig een volledig geïntegreerde oplossing die belooft alles uit handen te nemen: Databricks. Een cloud-based platform dat elk mogelijk dataproces afhandelt. De idealistische tagline luidt "Data and AI for all". Voor iedereen, behalve organisaties die geen zin hebben om tien- tot honderdduizenden euro's per maand te spenderen aan rekenkracht en opslag. Een "pay-as-you-go" model klinkt sympathiek, totdat je aan het eind van de maand het bonnetje ontvangt. Als kosten uit de hand beginnen te lopen en je realiseert dat het misschien toch niet zo prettig is dat jouw data ondergebracht is bij Amazon, probeer dan nog maar eens over te stappen naar alternatieven. Eenmaal gekozen zit je opgesloten.

Het kan anders; er zijn voldoende alternatieven. Hoog tijd om zelf dus het roer in handen te nemen. De wereld van open source tools is als Willy Wonka's chocoladefabriek, maar je hebt geen gouden wikkel nodig om binnen te treden. Wél moet je je verdiepen in de materie: zoveel taken, zoveel tools in allerlei smaken. En net als in Wonka's fabriek kun je niet zomaar beginnen te snoepen zonder kennis van zaken.

Dat is dan ook precies de uitdaging: hoe kies je de geschikte tool voor de taak? Hoe voorkom je "analysis paralysis": niet kunnen kiezen, omdat er te véél keuze is? En als je dan gekozen hebt, hoe regel je beheer en ondersteuning? Er is immers geen monolithisch bedrijf dat klaarstaat om alle zorgen uit handen te nemen.

Voor de Provincie Zeeland hebben wij onderzoek gedaan naar een geschikte "open data stack" die gebruikt kan worden voor het inrichten en beheren van hun data (science) processen. In deze post delen wij onze bevindingen, zodat jij er ook mee aan de slag kan.

Wat leverde ons onderzoek op? Geen vergezichten, conceptuele uitingen en "stippen op de horizon", maar een concrete, onderbouwde aanbeveling met bijbehorend "startpakket" (een Docker-project) dat je lokaal kunt draaien om te experimenteren met echte toepassingen.

De Open Data Stack

Eerst meer over de stack. Deze bestaat uit een set van open source tools voor het inrichten van data science processen. Onze stack, gedoopt tot "Mosselpannetje" als verwijzing naar de Zeeuwse gastronomie, heeft vier basislagen:

  • Opslag
  • Workflow
  • Metadata
  • Ontsluiting

Wij denken dat deze vier lagen voldoende zijn om mee aan de slag te gaan.

De opslaglaag moet zowel gestructureerd als ongestructureerd (S3-objecten) data ondersteunen.

De workflowlaag maakt het makkelijker om herbruikbare workflows te schrijven voor ETL-processen: data uit verschillende bronnen ophalen, deze data omvormen tot iets bruikbaars en het vervolgens weer wegschrijven naar de opslag. In de workflowlaag worden ook machine learning modellen getraind, uitgevoerd en gemonitord.

De metadatalaag zorgt ervoor dat iedereen binnen de organisatie weet welke data beschikbaar is, hoe deze tot stand is gekomen en of er speciale regels gelden voor het gebruik van deze dataset, zoals privacywetgeving. Informatie over de totstandkoming van data noemen we "lineage", en is vooral voor (publieke) organisaties belangrijk wanneer die verantwoording moeten afleggen.

De ontsluitingslaag maakt data beschikbaar voor de eindgebruiker - volgens open standaarden, natuurlijk.

Nu we de lagen hebben behandeld, is het tijd om per laag te kijken welke tool het meest geschikt is.

De tools

De Mosselpannetje-stack: de zes lagen en de bijbehorende tools De Mosselpannetje-stack: de zes lagen en de bijbehorende tools

Voor de opslag maken we gebruik van PostgreSQL als database (gestructureerde data) en Garage als S3-objectopslag (ongestructureerde) data. Bij ongestructureerde data kun je denken aan PDF's en satellietafbeeldingen.

Tot voor kort was MinIO de standaardkeuze voor objectopslag, maar dit project is eind april 2026 in maintenance mode gegaan. Dat is een nogal verwarrend manier om te zeggen dat het open source project juist niet meer wordt onderhouden: geen nieuwe features, pull requests (PRs) of veiligheidsupdates. Daarmee is het niet langer een duurzame keuze.

Als workflowtool hebben wij de tools n8n, Kestra, Airflow en Dagster vergeleken. Elk heeft eigen voor- en nadelen. n8n en Kestra lijken zich vooral te richten op het automatiseren van bedrijfsprocessen; Airflow en Dagster daarentegen zijn geschikter voor "pure" data science. Airflow is een uitgebreide tool die volledig open source is, maar wat ouderwets aanvoelt en niet gemakkelijk kan worden opgezet. Dagster is moderner: je schrijft vrij eenvoudig workflows in Python die je kunt beheren met Git. In Dagster modelleer je al jouw data(producten) als "assets". Dit geeft inzicht in hoe data onderling afhankelijk is, en hoe rauwe data wordt omgezet in een eindproduct. Dagster biedt zowel een enterprise (Dagster+) als open source variant (Dagster OSS) aan. Daarom hebben wij voor deze stack gekozen voor Dagster.

Voor het beheer van de metadata kiezen we OpenMetadata. Het is de de facto standaard, werkt goed samen met Dagster en geeft gebruikers de mogelijkheid om contextuele informatie aan datasets toe te voegen.

In de ontsluitingslaag gebruiken wij GeoServer als tool om data direct te kunnen ontsluiten in QGIS. Dat is vooral handig voor organisaties die met ruimtelijke data werken.

En nu jij!

En dat is alles. Je kunt de stack nog uitbreiden met twee extra lagen: een computelaag en een table format laag. Je kunt daarbij DuckDB of Apache Spark voor efficiënter rekenprocessen uitvoeren of een table format zoals Iceberg of Delta Lake voor een strakker beheerde data-opslag. Er bestaan ook allerlei andere OS tools voor specifieke taken, zoals Apache Superset voor het creëren van dashboards en MLflow voor het monitoren van machine learning modellen.

Als je nu denkt: ik wil zelf hiermee aan de slag - dat kan! De codebase is beschikbaar op GitLab: gitlab.com/enoki-ai/provincie-zeeland/open-data-platform-stack-poc. In de README.md staat meer informatie over hoe je dit lokaal kunt draaien. We horen graag wat je ervan vindt: kun je ermee aan de slag, of loop je tegen bepaalde zaken aan?

Tenslotte nog een grote shout-out naar de Provincie Zeeland: een kartrekker op het gebied van opensourcewerken bij de overheid. Daardoor kunnen wij deze bevindingen ook weer met anderen delen! 🍄