Dienst · Software-ontwikkeling

Database ontwikkeling op maat.

Een database is geen onderdeel dat je achteraf invult. Het bepaalt hoe snel uw applicatie blijft draaien bij groei, hoe veilig de data is, en hoe duur de hosting wordt over vijf jaar. Wij ontwerpen, bouwen en onderhouden databases die meegroeien met uw product — van schema-ontwerp voor een nieuwe SaaS tot performance-tuning van een traag legacy-systeem.

PostgreSQLSchema-designPerformance-tuningData-migratieHigh availability

Database-werk als eigen specialisme.

Veel ontwikkelteams behandelen de database als implementatie-detail van de applicatie. Dat werkt prima — totdat de eerste honderdduizend gebruikers binnenkomen, de eerste audit langskomt, of de eerste migratie naar de cloud op tafel ligt. Dan blijkt het schema niet te indexeren, blijken read-replica's niet te configureren, en blijkt er geen audit-log te bestaan.

Wij behandelen database-ontwikkeling als een aparte discipline. Of we nu een schema ontwerpen voor een greenfield-product, een trage productie-database tunen, of een legacy Oracle-omgeving naar PostgreSQL migreren — we werken vanuit de eisen van het domein, niet vanuit het ORM dat de developers toevallig gewend zijn. Het resultaat is een data-laag die voorspelbaar schaalt, te onderhouden is door uw team, en niet over een jaar herontworpen moet worden.

We werken zowel binnen onze bredere cloud-native platform-ontwikkeling als op zichzelf staande database-trajecten. Veel van onze klanten komen bij ons met een specifiek probleem — een query die te traag is, een migratie die spannend voelt, een audit-eis die er ineens is — en willen niet meteen een volledig nieuw platform.

Drie soorten database-trajecten.

Wat we doen hangt af van waar uw organisatie staat. Een nieuwe applicatie heeft andere aandacht nodig dan een tien jaar oud systeem dat ineens niet meer schaalt.

Greenfield — schema-ontwerp voor nieuwe applicatie

Schema-design vanaf nul

Voor nieuwe SaaS-producten, e-commerce-platforms of maatwerk-applicaties ontwerpen we het datamodel mee. We bepalen samen welke entiteiten, relaties en indexen er nodig zijn, welke kolommen polymorf mogen, en welke choices over normalisatie het systeem over vijf jaar nog werkbaar houden. Multi-tenant-design (row-level security of schema-per-tenant), audit-log en encryptie-strategie bouwen we van begin af aan in.

PostgreSQLMulti-tenantAudit-logMigrations
Performance-tuning en optimalisatie

Trage database sneller maken

De klassieke aanroep: "onze app is in een jaar tijd traag geworden." We analyseren slow-query-logs, EXPLAIN-plannen en index-statistieken. We pakken n+1-problemen aan, herschrijven verkeerd geschreven joins, voegen missende indexen toe en herzien waar nodig de connection-pool-configuratie. Vaak halen we orde-van-grootte verbeteringen zonder dat het schema fundamenteel hoeft te wijzigen.

EXPLAIN ANALYZEpg_stat_statementsIndex-strategieQuery-rewrite
Migratie en architectuur-traject

Database-migratie en herontwerp

Oracle naar PostgreSQL, on-premise SQL Server naar Aurora, een monolitische database opdelen, of de stap van SQL naar een hybride model met document- of time-series-storage. We brengen het datamodel in kaart, ontwerpen de doel-architectuur, en doen de migratie in fases met dual-write of CDC zodat productie blijft draaien. We werken vaak samen met onze platform-migratie-teams.

Oracle → PostgreSQLSQL Server → AuroraCDC / DebeziumZero-downtime

Wat u krijgt aan het einde.

Geen losse dump-bestanden of een Confluence-pagina. Een werkende productie-database, gedocumenteerd op een manier waar uw eigen team mee verder kan.

  • De database-omgeving zelfProductie + staging, met replication, backups en monitoring ingericht. Draait in uw cloud (GCP, AWS, Azure) of bij ons.
  • Schema + migrations als codeVersioned migrations via Flyway, Liquibase, Atlas of Prisma Migrate. Iedere wijziging traceerbaar, terug te draaien en reproduceerbaar.
  • Documentatie en ERD'sSchema-diagrammen (dbdiagram, DBeaver), kolom-glossarium en architectuur-overzicht. Geschreven om over te dragen, niet als bewijslast.
  • Backup- en herstel-procedurePoint-in-time-recovery, getest restore-script, en duidelijk gedocumenteerde RPO/RTO-cijfers. Wij voeren ten minste één keer een echte restore uit voor de oplevering.
  • Monitoring en alertingpg_stat-dashboards, Prometheus-exporters, slow-query-alerts. Uw team ziet pieken aankomen, niet pas wanneer gebruikers klagen.
  • Beheer-contract (optioneel)Patching, capacity-planning, doorlopende performance-reviews. Vaste maandprijs, vier reactietijd-niveaus.

Wanneer database-werk een eigen traject verdient.

Niet ieder database-vraagstuk is een dienst op zich. Maar deze patronen herkennen we steeds opnieuw — en bij deze maakt apart database-werk het verschil tussen pleisters plakken en het onderliggende probleem oplossen.

Performance

Queries worden steeds trager

De applicatie was snel, maar bij elke release komt er een kwartiertje extra response-tijd bij. Slow-query-log groeit, gebruikers klagen, en de developers durven het schema niet aan te raken.

Schaal

Eén database loopt vast

U zit tegen de grenzen aan van wat een enkele instance aankan. Sharding, partitioning, read-replicas of een splitsing tussen OLTP en OLAP wordt onvermijdelijk.

Migratie

Legacy moet weg

Oracle-licenties zijn duur, SQL Server moet de cloud in, of een verouderde MySQL 5.7 moet vervangen worden. U wilt geen big-bang-migratie, maar gefaseerd overzetten zonder downtime.

Compliance

Audit-eisen veranderen

AVG-deletion, recht op vergetelheid, retention-policies, audit-logging van wie wat heeft gewijzigd. Te grof opgelost in de applicatielaag — hoort thuis op database-niveau.

Multi-tenant

Klant-isolatie wordt riskant

Uw multi-tenant-platform groeit en de huidige aanpak (één tenant_id-kolom met queries die het filteren) wordt kwetsbaar. Row-level security of schema-per-tenant wordt noodzakelijk.

AI / vector-search

RAG of semantic-search erbij

U wilt een AI-feature met retrieval-augmented generation, semantic search of similarity-matching toevoegen. Dat vraagt om pgvector, een dedicated vector-database, of een hybride aanpak waarbij beide naast elkaar draaien.

Hoe een database-traject bij ons loopt.

1

Inventarisatie en analyse

We brengen het huidige model in kaart: schema, volumes, slow-queries, monitoring-data, gebruikspatronen. Voor een greenfield-project doen we hetzelfde, maar dan op basis van use-cases en read/write-patronen die u voorziet.

2

Architectuur-keuzes

Welke database past bij dit domein? PostgreSQL als default, maar soms ClickHouse voor analytische queries, TimescaleDB voor time-series, of MongoDB voor zwaar geneste documenten. We motiveren elke keuze en zetten alternatieven naast elkaar.

3

Schema en migrations

Het datamodel komt op tafel als ERD, als migrations-script, en als testbare schema-definitie. Uw team kan meelezen, indices voorstellen, en zien hoe queries onder load gaan presteren via benchmarks op realistische volumes.

4

Implementatie en migratie

Voor nieuwe databases: bouw, koppeling met de applicatie, en load-testing. Voor migraties: dual-write of CDC zodat productie blijft draaien, gevolgd door een gecontroleerde cut-over. We doen telkens een dry-run voordat we naar productie gaan.

5

Monitoring, overdracht en beheer

Dashboards, alerts, runbooks voor incident-response. Uw team krijgt training op de gekozen tools, en we leggen het beheer ofwel volledig terug ofwel onder een doorlopend contract bij ons.

Waar we mee werken.

We zijn niet gebonden aan één leverancier of stack. We adviseren op basis van wat het beste past bij uw domein, team en bestaande systemen.

Relationeel — onze default voor maatwerk

SQL-databases

PostgreSQL is voor ons standaard de eerste keuze voor maatwerk-applicaties: rijke feature-set, sterke standaarden, geen licentie-lock-in en uitstekende cloud-ondersteuning. Daarnaast werken we met MySQL en MariaDB (vooral bij bestaande LAMP-stacks), Aurora binnen AWS, Oracle in legacy-context, en SQL Server in Microsoft-omgevingen.

PostgreSQLMySQLMariaDBAuroraOracleSQL Server
NoSQL en gespecialiseerde stores

Document, key-value, time-series, graph

Voor zwaar geneste documenten zetten we MongoDB of CouchDB in. Redis, ValKey en DynamoDB voor caching en sessie-storage. TimescaleDB of InfluxDB voor sensor- en metriek-data. Neo4j of ArangoDB voor relatie-zware vraagstukken zoals fraude-detectie of aanbevelingen. Voor zoek-functionaliteit kiezen we Elasticsearch, OpenSearch of Meilisearch — afhankelijk van schaal en budget.

MongoDBRedisDynamoDBTimescaleDBNeo4jElasticsearch
Analytisch, vector en wide-column

OLAP, AI en grote volumes

Voor analytische workloads en data-warehouses zetten we ClickHouse, Apache Druid, BigQuery, Snowflake of Databricks in — zie ook ons werk rond real-time analytics-platforms. Voor AI/RAG-implementaties pgvector binnen PostgreSQL of een dedicated vector-store zoals Pinecone of Weaviate. Voor extreem grote schrijfvolumes Cassandra of ScyllaDB.

ClickHouseBigQuerySnowflakepgvectorPineconeCassandra

Tooling die we gebruiken.

Database-werk is een vak met eigen gereedschap. Hieronder de tools die in onze trajecten vrijwel altijd terugkomen — niet uitputtend, wel representatief.

  • ORM en query-buildersPrisma en TypeORM voor TypeScript-stacks, SQLAlchemy voor Python-werk, Hibernate of jOOQ in Java-omgevingen. We schrijven SQL waar de ORM het niet aankan.
  • Schema-migratiesFlyway en Liquibase voor enterprise-context, Atlas voor declaratieve schema's, Prisma Migrate of TypeORM-migrations bij JS/TS-werk. Altijd version-controlled, altijd reversible waar mogelijk.
  • Performance-analysepg_stat_statements, pgBadger, EXPLAIN ANALYZE, auto_explain. Voor MySQL/MariaDB de Performance Schema en sys-schema. Voor SQL Server Query Store en DMV's.
  • Schema-ontwerp en visualisatiedbdiagram.io voor snelle ERD's, DBeaver en DataGrip voor dagelijks werk, SchemaSpy voor automatisch gegenereerde documentatie.
  • Backup en herstelpgBackRest en Barman voor PostgreSQL, native point-in-time-recovery in Aurora en Cloud SQL, geverifieerde restore-scripts in onze runbooks.
  • MonitoringPrometheus-exporters, Grafana-dashboards, DataDog Database Monitoring, en CloudWatch waar dat past. Slow-query-alerts en index-bloat-checks als standaard.
  • CDC en data-pijplijnenDebezium voor change-data-capture, Kafka of Pulsar als transport, dbt voor transformaties richting analytische omgevingen.

Veelgestelde vragen.

Wat opdrachtgevers meestal willen weten voor we beginnen aan database-werk.

PostgreSQL of MongoDB — wat moet ik kiezen?
Standaard kiezen we PostgreSQL voor maatwerk-applicaties. Relationeel werk, transacties, complexe queries en consistente data zijn er sterker mee. MongoDB pakt het voordeel terug als u zwaar geneste, weinig gestructureerde documenten heeft (denk content-management, IoT-payloads, event-data) of als u een team heeft dat al diep in de JavaScript-stack zit. Een hybride aanpak is vaak verstandig: PostgreSQL voor de transactionele kern, MongoDB of een document-store voor afgeleide, weinig-bevraagde data. We helpen u die keuze maken voordat u zich aan één model commit.
Wanneer is performance-tuning genoeg en wanneer is een herontwerp nodig?
Verreweg de meeste performance-problemen zijn op te lossen zonder schema-wijziging: indexen toevoegen of weghalen, queries herschrijven, n+1-problemen aanpakken, connection-pool aanpassen, statistieken bijwerken. Pas als de fundamenten van het schema niet meer kloppen met de manier waarop het systeem wordt gebruikt — denk een sterk genormaliseerd schema dat constant veertig joins moet doen, of een polymorf model dat indexering onmogelijk maakt — komt herontwerp in beeld. We starten altijd met een analyse-fase zodat duidelijk wordt welke route de meeste winst oplevert.
Kunnen jullie een database-migratie doen zonder downtime?
Ja, in vrijwel alle gevallen. We gebruiken een combinatie van dual-write (de applicatie schrijft tijdelijk naar oude én nieuwe database), change-data-capture (Debezium leest de transactie-log van de bronsysteem en repliceert naar de doelsysteem) en geleidelijke read-switching. Een korte cut-over van enkele seconden is soms nodig, maar volledige onderhouds-windows kunnen we vrijwel altijd vermijden. Onze platform-migratie-aanpak beschrijft de complete werkwijze in meer detail.
Hoe regelen jullie AVG-deletion en data-retentie op database-niveau?
Wij bouwen recht-op-vergetelheid en retentie-beleid liefst in de database-laag, niet in de applicatie. Een deletion-pipeline die alle gerelateerde records traceert via foreign keys, optionele soft-delete met TTL voor compliance-windows, en audit-log-entries die de deletion zelf vastleggen. Voor analytische kopieën gebruiken we hash-pseudonimisering of full anonimisering bij de ETL-stap. Op die manier is een AVG-verzoek een uit te voeren proces, geen ad-hoc spoedklus.
Werken jullie ook met onze bestaande developers of doen jullie alles?
Beide. Veel klanten hebben een goed applicatie-team maar geen specifieke database-engineer; dan zitten we als specialist tussen het team en de data-laag. Andere klanten willen het hele traject — schema, applicatie-integratie, beheer — bij ons. We werken graag samen met uw eigen developers, doen kennisoverdracht in alle sprints, en zorgen dat uw team na oplevering zelf verder kan.
Hoe zit het met security: encryptie, access-control en audit?
Encryptie at-rest (transparent data encryption of cloud-managed equivalent), TLS voor alle verbindingen, role-based access control met principe van least privilege, en aparte service-accounts per applicatie-component. Voor audit-werk loggen we wie welke rij heeft gewijzigd, met before/after-waarden, in een aparte audit-tabel of via database-triggers. Voor gevoelige kolommen zetten we column-level encryptie of pseudonimisering in. Penetratie-tests en compliance-audits begeleiden we mee als het traject in een NEN-7510 of ISO-27001-omgeving valt.
Wat kost een database-traject?
Te variabel om een getal te geven zonder uw situatie te kennen. Een performance-quick-scan op één productie-database is een ander traject dan een complete migratie van Oracle naar PostgreSQL met dual-write. We werken op basis van vaste sprintbudgetten — u weet vooraf wat een sprint kost en wat er aan het einde af is. In het kennismakingsgesprek geven we een eerste indicatie van scope en aantal sprints; bij complexere trajecten doen we eerst een korte analyse-fase voordat we een groter commitment vragen.

Praat met ons over uw database-uitdaging.

Een vrijblijvende kennismaking van een half uur. Vertel waar uw database vastloopt, welk product u wilt bouwen, of welke migratie speelt. We luisteren, stellen vragen, en geven richting waar u iets aan heeft — ook als wij niet de logische partij blijken.

Edit Content