Databasedesign & datamodellering
Et fornuftigt sted at have sine data
En struktur, der passer til, hvordan forretningen faktisk fungerer, så de svar, I får brug for senere, stadig kan hentes.

Foto: webandi / Pixabay 
Foto: Alexas_Fotos / Pixabay
Udvalgte resultater, der demonstrerer denne ydelse.
-
Har designet og drevet 6 ETL/ELT‑pipelines
Har designet, implementeret og administreret 6 ETL/ELT‑pipelines med Google BigQuery, MSSQL, PostgreSQL, shell‑scripting, PL/pgSQL og Transact‑SQL og integreret data, så et Python‑API kan behandle dem effektivt.
-
Har drevet 100 data warehouse‑databaser
Har stået for arkitektur, oprettelse og drift af 100 data warehouse‑databaser i PostgreSQL, MS SQL og Google BigQuery, primært med GIS- og tidsseriedata, og optimeret ydeevne og skalerbarhed.
-
En maritim platform bygget i rene lag
Har designet arkitekturen for en lagdelt maritim platform, der adskiller en Next.js PWA‑frontend, et Go (Huma/Fiber) API og et PostgreSQL‑funktionslag og holder al forretningslogik i databasen.
-
Har designet en JSON‑passthrough‑arkitektur
Har designet en JSON passthrough‑arkitektur, hvor PostgreSQL‑funktioner returnerer komplet JSON, som Go‑API'et videresender uændret, så der ikke er nogen mellemliggende unmarshalling, og frontenden er afkoblet fra skemaændringer.
-
Har designet et funktionsbaseret Postgres‑datalag
Har designet et funktionsbaseret datalag i PostgreSQL — 1.275 stored functions fordelt på 34 skemaer — så al læsning og skrivning går gennem en funktion, databasen kan tildele rettigheder til, og ikke direkte gennem en tabel.
-
Hurtigere svar med et bedre valg af nøgle
Har indført tidsordnede UUID v7‑identifikatorer (PostgreSQL 18) som entitetsnøgler for at reducere fragmentering af B‑tree‑indeks og øge forespørgselshastigheden.
-
Har implementeret en katalogdrevet deep‑merge
Har implementeret en katalogdrevet deep‑merge for lagrede JSON‑præferencer, hvilket forhindrer nedbrud på grund af manglende nøgler, når skemaet udvikler sig.
-
Har modelleret 348 tabeller i 34 Postgres‑skemaer
Har modelleret det maritime domæne i 348 normaliserede tabeller fordelt på 34 PostgreSQL‑skemaer — fagfolk, virksomheder, skibe, jobs, anmeldelser og resten — med SMALLINT‑opslagstabeller og UUID v7‑nøgler.
-
Har bygget adgangsret via Stripe og in‑app‑køb
Har bygget betalings- og rettighedslaget — Stripe side om side med Apple og Google in‑app purchase — så adgangen til kataloget, søgningen og eksporten styres af en adgangsmodel på 11 tabeller, der kontrolleres på serveren.
-
Har flyttet langsomme opgaver til en River‑jobkø
Har flyttet langsomt arbejde væk fra request‑stien og over på en River‑jobkø — 15 worker‑moduler, 8 planlagte opgaver og 20 pg_cron‑jobs — så en request returnerer, mens arbejdet bag den kører videre.
-
Har bygget egen analytics i PostgreSQL
Har bygget egen produktanalyse i PostgreSQL — 47 funktioner over partitionerede event‑tabeller, der selv rydder op — pseudonymiseret bag et roterende salt og betinget af den besøgendes samtykke.
-
Har bygget loyalitetspoint, ligaer og badges
Har bygget loyalitets- og omdømmesystemet — 67 funktioner over et ledger på 31 tabeller, med ligaer, badges og en indløsningsshop — og med en row lock på saldoen til at lukke vinduet for dobbeltforbrug.
-
Har bygget job- og karriereværktøj til søfarende
Har bygget rekrutteringsmarkedspladsen og arbejdsområdet til søfarendes karriere — 151 stored functions fordelt på 48 tabeller — med ledige stillinger, ansøgninger, certifikater, avancement i grader og verificeret sejltid.
-
Har bygget en databasedrevet CV‑generator
Har bygget en databasedrevet generator til CV, referencer, portefølje og ansøgninger i Python — 41 moduler, 10.580 linjer — der genererer seks outputformater fra én SQLite‑kilde med 23 tabeller, som en idempotent pipeline i 19 trin bygger op.
Hvis det er det arbejde, du har brug for, er næste skridt en samtale.
Fortæl os problemet, så siger vi ærligt, om vi er de rette til det.

