Spring til indhold

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.

Situation. Produktbeslutninger har brug for tal, og den almindelige måde at få dem på er at sætte et third‑party‑tag på hver side og lade en andens servere holde øje med brugerne. Det er hurtigt, det er gratis ved små mængder, og det betyder, at besøgendes adfærd på en professionel netværksplatform — hvem der kiggede på hvilken virksomhed, hvem der søgte efter hvad — bliver et aktiv, en annoncevirksomhed sidder på. For en platform, hvis brugere er identificerbare maritime professionelle, er det en dårlig handel.

Opgave. Produktteamet havde brug for funnels, retention og eventdata, indsamlet på en måde, platformen kunne stå inde for, og en bruger kunne sige nej til.

Handling. Analytics kom til at ligge i PostgreSQL, i et skema på 7 tabeller og 47 funktioner. Event‑tabellerne er partitionerede — 22 partition‑definitioner — og rydder ud i sig selv på en tidsplan, for prisen ved first‑party analytics er ikke at indsamle events, den er at gemme dem for evigt. Identitet er pseudonymiseret bag et salt, der roterer, så en besøgende ikke kan følges hen over rotationsgrænsen, end ikke indefra databasen; det er et bevidst loft over, hvad dataene kan svare på. Klienten kender samtykkestatus og sender intet, før samtykke er givet, frem for at sende og filtrere bagefter. Konverteringsfunnels beregnes i databasen, ved siden af dataene, i stedet for at blive eksporteret et andet sted hen for at blive joinet tilbage.

Resultat. Spørgsmål om, hvordan produktet bruges, besvares fra platformens egne tabeller, uden at noget forlader den, og uden et tag i siden. Begrænsningerne er den ærlige del: at rotere saltet koster kohorteanalyse over lange horisonter, og intet af det her kommer med de dashboards, et hosted værktøj giver dig gratis. Begge dele blev accepteret med åbne øjne.