5 Ingest
Kevin Kort edited this page 2026-07-16 08:49:16 +00:00

Inleiding

Dit document beschrijft de belangrijkste afwegingen voor de keuze van een ingest-tool, inclusief een vergelijking met alternatieven.

Shortlist:

  • Python + dlt
  • Apache Hop
  • Airbyte
  • R tidyverse (readr/sf/httr2/...)
  • SQL (PostgreSQL COPY INTO)

Afweging tussen High- vs. Low-code oplossingen

Low-code oplossingen zijn meestal afhankelijk van GUIs (grafische user interface) en kant-en-klare blokjes / connectoren. High-code oplossingen vragen daadwerkelijk programmeerwerk, wat deze oplossingen flexibeler en robuuster maakt.

High-Code (Code) Voordelen:

  • Zelf coderen
  • flexibiliteit
  • robuust
  • checks op de code (git/lintr? etc?)
  • uitwisselbaar, compile-baar en draaibaar op verschillende OS
  • Python is binnen de data wereld een van de grootste en meeste gebruikte programmeertalen.

Nadelen:

  • Programmeertaal kennis nodig in-house bij de deelnemende gemeenten.
  • Bij updates van bronsystemen moet ook de code mogelijk worden aangepast.

Python > R > SQL

Low-code (GUI) Voordelen:

  • Click-and-drop
  • makkelijk te begrijpen voor niet ingezetenen
  • makkelijk en snel op te zetten

Nadelen:

  • Minder flexibel dan een echte programmeertaal
  • Minder makkelijk uitwisselbaar bij wisseling van Ingest-tool
  • Low-code kennis is zeer specifiek binnen de arbeidsmarkt
  • Kennis van de ene Low-code tool is niet (altijd) overdraagbaar naar een andere Low-code tool.

Apache Hop > Airbyte

Conclusie

Onze voorkeur gaat uit naar een High-code oplossing, waarbij we de flexibiliteit en uitwisselbaarheid van programmeertalen aan houden. De Low-code oplossingen Apache Hop en Airbyte zijn wel makkelijk in gebruik, maar ook zeer specifiek in hun eigen opzet en dit zal toch leiden tot een leercurve. Maar doordat de logica minder makkelijk er uit te halen is, gaat de voorkeur naar High-code.

Ook daar is vergelijken tussen SQL, R, en Python geweest. SQL was niet toereikend voor alle mogelijk databronnen/bestanden. R was mogelijk wel toereikend maar veel verschillende libraries/packages, die niet altijd even goed worden onderhouden... Dagster en andere Orchestrators werken ook met Python. Aangezien ook de Transformation en Orchestration stap van Python gebruikmaken, is ook voor Ingest voor Python gekozen om dezelfde programmeertaal aan te houden.

Aanbeveling: Python + dlt

Momenteel is er al veel kennis van Python binnen de Projectgroep en van de library dlt (data load tool) specifiek voor ingestion. Dlt heeft een grote community binnen Github, wordt regelmatig bijgewerkt. Tevens is er goede documentatie beschikbaar: https://dlthub.com/docs/intro Dlt kan Environment variables uitlezen, wat het mogelijk maakt om de secrets/configs voor iedere gemeenten gescheiden te houden. Dlt is volledig open-source, dus zelfs in het ergste geval dat dlt niet meer onderhouden wordt, zou het mogelijk zijn om een fork van de source veilig te stellen.