ClickHouse — sanntidsanalysemotoren i plattformens stack
4buildsite-stacken inkluderer ClickHouse — en kolonnebasert database laget spesielt for analyse ved høyt volum. Oppå den bygger vi plattformens statistikkmodul for trafikk og salg (under utvikling): dataene forblir dine, og innsamlingen er skilt fra systemet som leverer sidene — slik er arkitekturen utformet.
Hva er ClickHouse, og hvorfor bruker vi det
ClickHouse er en kolonnebasert database av typen OLAP (online analytical processing), laget hos Yandex for Yandex.Metrica — et av verdens største systemer for webanalyse — og utgitt som åpen kildekode i 2016 under Apache 2.0-lisens. Den er bygget for én ting, som den gjør eksepsjonelt godt: raske aggregeringer over enorme datamengder. I 4buildsite-arkitekturen er ClickHouse motoren som er valgt for statistikklaget: hvert besøk, hvert klikk og hver ordre blir en hendelse som kan analyseres.
Hemmeligheten er kolonnelagring: i stedet for å lese hver hele «rad» leser ClickHouse bare kolonnene rapporten trenger og behandler dem vektorisert, i store blokker. Derfor er et spørsmål som «hvor mange besøkende hadde vi i går, på hver side, fra hver kilde» en typisk ClickHouse-spørring, også over millioner av hendelser — noe en klassisk, radorientert database løser mye vanskeligere.
Dette er ikke en nisjeteknologi: Cloudflare bruker den til å analysere HTTP-trafikk i global skala, og Uber, eBay og Spotify bruker den til analyse og loggbehandling ved enorme volumer. På 4buildsite er den samme motoren en del av plattformens stack — uten at du må ansette et team av datainnenører.
Sanntidsstatistikk adskilt fra nettstedet — slik er modulen utformet
Plattformens statistikkmodul er under utvikling, og arkitekturen er enkel: trafikkhendelsene samles inn asynkront og skrives til ClickHouse, helt adskilt fra serverne som leverer sidene. Innsamlingen skjer utenom forespørselen som leverer siden, og rapportene kjøres i et eget lag. Det brukes ikke noe tungt tredjeparts sporingsskript — innsamlingen er minimal og first-party.
Rapportene i panel.4buildsite.net skal beregnes direkte i ClickHouse: trafikk per side, besøkskilder, konverteringer, salg per produkt. Hyppige aggregeringer forhåndsberegnes med materialized views ved hver skriving, så dashbordet viser ferdig beregnede tall — det starter ikke en tung beregning hver gang du ser på det.
- Trafikk: besøk, sider, kilder og enheter — kan spørres etter innsamling
- Salg per produkt, ordrer og konverteringer for nettbutikken din, aggregert i ClickHouse
- Historikk over måneder og år til lav kostnad — kolonnekomprimering reduserer lagringen flere ganger sammenlignet med rådata
- Innsamlingen er asynkron, rapporteringen kjører på et annet system
PostgreSQL + ClickHouse: hvorfor vi bruker begge
Plattformens stack kombinerer to databaser fordi de gjør fundamentalt forskjellige ting. PostgreSQL er transaksjonsregisteret (OLTP): ordrer, betalinger, lagerbeholdning, brukerkontoer — operasjoner som må være helt korrekte én etter én, med transaksjonsgarantier. ClickHouse er analyserommet (OLAP): millioner av hendelser leses samtidig for å besvare spørsmål om trafikk og salg.
Hvis tunge rapporter kjørte på den samme databasen som behandler ordrene, ville hver rapport konkurrere med kundene som betaler akkurat da. Skillet mellom OLTP og OLAP fjerner denne konflikten: kundens ordre og rapporten din kjører i separate systemer. Hver motor gjør nøyaktig det den er bygget for.
- PostgreSQL: ordrer, Stripe-betalinger, lagerbeholdning, kunder — transaksjonell korrekthet
- ClickHouse: trafikkhendelser, rapporter, statistikk — aggregering ved høyt volum
- Designet legger opp til at relevante transaksjonsdata havner i ClickHouse som hendelser, slik at salgsrapportene aldri berører databasen som betjener nettbutikken
Egen analytics, personvernvennlig — i stedet for Google Analytics
Prinsippet bak statistikkmodulen: nettstedets data blir på plattformens infrastruktur. De sendes ikke til Google eller andre annonsenettverk, selges ikke og kombineres ikke med eksterne brukerprofiler. Dette er first-party analytics i ordets egentlige forstand: dataene om de besøkende dine er dine.
Fordi tilnærmingen ikke bruker tredjeparts sporingsinformasjonskapsler, blir GDPR-etterlevelsen mye enklere. Konteksten teller: i 2022 erklærte personvernmyndighetene i Østerrike, Frankrike og Italia bruken av Google Analytics for å stride mot GDPR på grunn av dataoverføringer til USA. Med egen analytics, driftet i Europa, forsvinner denne risikokategorien fra start.
Det finnes også en direkte praktisk fordel: rapportene som beregnes i ClickHouse er ikke utvalgsbaserte, i motsetning til standardrapportene i gratis analyseverktøy. Tallene er fullstendige.
Rapporter for nettbutikk og markedsplass — hva modulen skal levere
For en nettbutikk vil ClickHouse gi svar på de spørsmålene som teller: hvilke produkter som selger, fra hvilke kilder kundene som kjøper kommer, og hvor handlekurver forlates. For en markedsplass med flere selgere vil de samme aggregeringene kjøres over alle ordrene: volum per selger, provisjoner, toppprodukter per kategori — uten manuelle eksporter og uten regneark.
Og i stor skala holdes kostnadene nede. Kolonnekomprimering reduserer dataene flere ganger sammenlignet med råformatet, så du beholder historikk i årevis til lav lagringskostnad. Også når trafikken vokser fra tusenvis til millioner av hendelser, er det den samme motoren, utformet fra starten for milliarder av rader, ikke tilpasset i ettertid.
Fordeler og begrensninger
Fordeler
- Kolonnebaserte, vektoriserte aggregeringer over millioner av hendelser.
- Analytics kjører på et system adskilt fra det som serverer sidene.
- Trafikkdataene forblir dine, på plattformens infrastruktur — uten overføring til Google eller annonsenettverk.
- Ingen tredjeparts sporingsinformasjonskapsler — enklere GDPR-etterlevelse.
- Kraftig kolonnekomprimering — historikk i årevis til lav lagringskostnad.
- Åpen kildekode (Apache 2.0), uten volumbaserte lisenser — kostnaden eksploderer ikke når trafikken vokser.
Begrensninger
- Er ikke en transaksjonsdatabase — å endre eller slette enkeltrader er en tung operasjon; derfor ligger ordrer og betalinger i PostgreSQL.
- Optimalisert for skriving i store batcher; mange små og hyppige insert-er krever batching — plattformen håndterer det, men det er en reell begrensning ved motoren.
- Komplekse JOIN-er er mindre fleksible enn i PostgreSQL — hendelsesskjemaet må utformes for analyse fra starten.
- Oppslag av en enkelt rad (point lookup) er tregere enn i en indeksert OLTP-database — den erstatter ikke nettbutikkens hoveddatabase.
Kort vurdering
ClickHouse er det riktige valget for analyse ved høyt volum: statistikk for trafikk og salg i sanntid, med dine egne data, adskilt fra nettstedet. For ordrer, betalinger og lagerbeholdning blir PostgreSQL stående — derfor kombinerer 4buildsite-stacken begge, hver til det den er best på. Statistikkmodulen bygget på ClickHouse er under utvikling.
Spesifikasjonstabell
| Egenskap | Grense / terskel | Typisk bruk | |
|---|---|---|---|
| Analytiske aggregeringer | Kolonnebasert + vektorisert, over millioner av hendelser | Tregt ved oppslag av en enkelt rad — ikke til OLTP-oppslag | Rapporter for trafikk og salg (statistikkmodulen, under utvikling) |
| Innhenting av hendelser | Store volumer, skrevet i batcher | Små og hyppige insert-er krever batching / async insert | Innsamling av sidevisninger, klikk og ordrer |
| Lagring og komprimering | Kolonnekomprimering (LZ4/ZSTD), flere ganger under råvolumet | Svært tilfeldige data komprimeres mindre | Hendelseshistorikk over måneder og år, til lav kostnad |
| Oppdateringer og slettinger | Asynkrone mutations for tilfeldige rettelser | Uegnet for hyppige UPDATE-er på enkeltrader | GDPR-slettinger (en brukers data, på forespørsel) |
| Materialized views | Forhåndsberegnede aggregater ved hver skriving | Aggregatene må defineres på forhånd, per rapport | Ferdig beregnede dashbord: salg per dag, produkt, kilde |
| Sanntid | Hendelsene kan spørres etter innsamling | Er ikke et streamingsystem på millisekundnivå | Live statistikk for trafikk og konverteringer |
ClickHouse mot PostgreSQL mot Google Analytics / BigQuery — for analyse
| Kriterium | ClickHouse (4buildsite) | PostgreSQL (til analyse) | Google Analytics / BigQuery |
|---|---|---|---|
| Aggregering ved høyt volum | Kolonnebasert og vektorisert, bygget for millioner av rader | Radlagring — tunge aggregeringer belaster databasen | BigQuery er kolonnebasert; GA4 har forhåndsaggregerte standardrapporter, uten frie spørringer |
| Eierskap til data / GDPR | Dine data, på plattformens infrastruktur, i Europa | Dine data, på dine egne servere | Dataene hos Google; GA-overføringer til USA erklært i strid med GDPR av EU-myndigheter i 2022 |
| Informasjonskapsler og samtykke | Ingen tredjeparts sporingsinformasjonskapsler | Avhenger av egen implementering | Krever samtykkebanner for sporing |
| Sanntid | Data kan spørres etter innsamling | Mulig, men tunge rapporter belaster transaksjonsdatabasen | Standardrapporter i GA4 kan dukke opp med timers forsinkelse; BigQuery-streaming koster ekstra |
| Kostnad ved volum | Åpen kildekode — kostnaden er bare infrastrukturen, inkludert i abonnementet | Vokser med indekser, vacuum og maskinvare ved store volumer | BigQuery belaster per spørt volum; enterprise-varianten av GA er kostbar |
| Belastning på nettstedet | Asynkron innsamling, rapportering på separat system | Rapportene kan konkurrere med ordrene på samme database | Tredjepartsskript (gtag.js) på siden — ekstra JavaScript og eksterne forespørsler |
Ofte stilte spørsmål
Gjør ClickHouse nettstedet eller nettbutikken min tregere?
ClickHouse kjører på et system adskilt fra det som serverer sidene — slik er arkitekturen utformet. Trafikkhendelsene sendes asynkront, og rapportene berører aldri nettbutikkens database.
Hvorfor bruker dere ikke bare Google Analytics?
Tre grunner. Dataene forblir dine, på plattformens infrastruktur, ikke hos Google. Du trenger ikke tredjeparts sporingsinformasjonskapsler, så GDPR-etterlevelsen er enklere — i 2022 erklærte myndigheter i Østerrike, Frankrike og Italia GA for å stride mot GDPR. Og rapportene er fullstendige, ikke utvalgsbaserte.
Hva er forskjellen på ClickHouse og PostgreSQL — hvorfor begge?
PostgreSQL er transaksjonsdatabasen (OLTP): den behandler ordrer, betalinger og lagerbeholdning, én etter én, med korrekthetsgarantier. ClickHouse er analysedatabasen (OLAP): den leser millioner av hendelser samtidig for rapporter. Skillet betyr at en tung rapport ikke kjører på databasen som behandler kundenes ordrer.
Er trafikkdataene mine trygge og i samsvar med GDPR?
Ja — gjennom designet. Statistikken er first-party: den ligger på plattformens infrastruktur, i Europa, selges ikke og deles ikke med annonsenettverk. Tilnærmingen bruker ikke tredjeparts sporingsinformasjonskapsler, og en brukers data kan slettes på forespørsel, i tråd med GDPR.
Hvor «i sanntid» er statistikken?
En hendelse — et besøk, et klikk, en ordre — kan spørres i rapportene etter innsamling. Aggregeringer over lange perioder (måneder, år) kjøres i ClickHouse, som er bygget nøyaktig for denne typen spørringer.
Må jeg konfigurere noe for å få statistikk på nettstedet mitt?
Det vil ikke være nødvendig. Statistikkmodulen er under utvikling og bygges som en del av plattformen: når den blir aktiv i administrasjonspanelet, starter innsamlingen automatisk for de publiserte nettstedene — uten skript å installere og uten eksterne kontoer.