ClickHouse — de realtime analytics-engine in de platformstack
De stack van 4buildsite omvat ClickHouse — een kolomgeoriënteerde database, speciaal gebouwd voor analyses op grote hoeveelheden data. Daarop ontstaat de module voor bezoekers- en verkoopstatistieken van het platform (in ontwikkeling): de data blijft van jou, en de registratie is losgekoppeld van je website — precies zo is de architectuur opgezet.
Wat ClickHouse is en waarom we het inzetten
ClickHouse is een kolomgeoriënteerde OLAP-database (online-analyse), bij Yandex ontwikkeld voor Yandex.Metrica — een van de grootste webanalysesystemen ter wereld — en in 2016 als open source vrijgegeven onder de Apache 2.0-licentie. Hij is gebouwd voor precies één ding, en daarin blinkt hij uit: snelle aggregaties over enorme hoeveelheden data. In de architectuur van 4buildsite is ClickHouse de engine bij uitstek voor de statistiekenlaag: elk bezoek, elke klik en elke bestelling wordt een gebeurtenis die je kunt analyseren.
Het geheim zit in de kolomsgewijze opslag: in plaats van elke „rij” volledig te lezen, leest ClickHouse alleen de kolommen die het rapport nodig heeft en verwerkt die gevectoriseerd in grote blokken. Daarom krijgt een vraag als „Hoeveel bezoekers had ik gisteren, per pagina en per bron?” zelfs over miljoenen gebeurtenissen antwoord in minder dan een seconde — iets wat een klassieke rijgeoriënteerde database aanzienlijk zwaarder valt.
Het gaat niet om een nichetechnologie: Cloudflare gebruikt hem voor de analyse van het HTTP-verkeer op wereldschaal, Uber, eBay en Spotify voor analytics en logverwerking op enorme schaal. Op 4buildsite is diezelfde engine onderdeel van de platformstack — zonder dat je een data-engineeringteam hoeft aan te nemen.
Realtime statistieken — hoe de module is opgezet
De statistiekenmodule van het platform is in ontwikkeling en de architectuur ervan is eenvoudig: bezoekersgebeurtenissen worden asynchroon verzameld en naar ClickHouse geschreven, volledig gescheiden van de servers die de pagina's uitleveren. Je bezoekers wachten niet op analytics: de registratie verloopt asynchroon, los van de servers die de pagina's uitleveren. Er staat geen trackingscript van derden op de pagina — de registratie is minimaal en first-party.
De rapporten in panel.4buildsite.net worden rechtstreeks in ClickHouse berekend: verkeer per pagina, bezoekersbronnen, conversies, verkopen per product. Veelgebruikte aggregaties worden via materialized views bij elke schrijfbewerking vooraf berekend, zodat het dashboard niet bij elke opening een zware berekening start.
- Live verkeer: bezoeken, pagina's, bronnen en apparaten — na registratie op te vragen
- Verkopen per product, bestellingen en conversies van je webshop, geaggregeerd in ClickHouse
- Historie over maanden en jaren tegen lage kosten — de kolomsgewijze compressie verkleint de opslagbehoefte tot een veelvoud onder de ruwe data
- De registratie loopt asynchroon, de analyse op een apart systeem
PostgreSQL en ClickHouse: waarom we ze allebei inzetten
De platformstack combineert twee databases, omdat ze fundamenteel verschillende dingen doen. PostgreSQL is het transactieregister (OLTP): bestellingen, betalingen, voorraad, gebruikersaccounts — handelingen die stuk voor stuk absoluut correct moeten zijn, met transactionele garanties. ClickHouse is de analyseruimte (OLAP): miljoenen gebeurtenissen worden in één keer gelezen om je vragen over verkeer en verkopen te beantwoorden.
Zouden de zware rapporten op dezelfde database draaien die de bestellingen verwerkt, dan zou elk rapport concurreren met de klanten die op dat moment afrekenen. De scheiding van OLTP en OLAP neemt dat conflict weg: de bestelling wacht niet op jouw rapport, en jouw rapport wacht niet op de bestellingen van anderen. Elke engine doet precies waarvoor hij gebouwd is.
- PostgreSQL: bestellingen, Stripe-betalingen, voorraad, klanten — transactionele correctheid
- ClickHouse: verkeersgebeurtenissen, rapporten, statistieken — aggregatie over grote hoeveelheden
- Het ontwerp voorziet erin dat de relevante transactiegegevens als gebeurtenissen in ClickHouse terechtkomen, zodat verkooprapporten nooit de database raken die de webshop bedient
Eigen, privacyvriendelijke analytics — in plaats van Google Analytics
Het uitgangspunt van de statistiekenmodule: de data van je website blijft op de infrastructuur van het platform. Ze wordt niet doorgegeven aan Google of andere advertentienetwerken, niet verkocht en niet samengevoegd met externe gebruikersprofielen. Dat is first-party analytics in de eigenlijke zin: de data over je bezoekers is van jou.
Omdat de aanpak zonder trackingcookies van derden werkt, wordt AVG-conformiteit een stuk eenvoudiger. De context telt: in 2022 verklaarden de privacytoezichthouders van Oostenrijk, Frankrijk en Italië het gebruik van Google Analytics wegens de gegevensdoorgifte naar de VS niet AVG-conform. Met eigen, in Europa gehoste analytics vervalt die risicocategorie bij voorbaat.
Er is ook een direct praktisch voordeel: in ClickHouse berekende rapporten zijn niet gesampled. Volledige cijfers.
Webshop- en marktplaatsrapporten — wat de module gaat leveren
Voor een webshop gaat ClickHouse antwoord geven op de bepalende vragen: welke producten verkopen, uit welke bronnen de kopende klanten komen, waar winkelwagens worden afgebroken. Voor een multi-vendor marktplaats draaien dezelfde aggregaties over alle bestellingen: volume per verkoper, commissies, topproducten per categorie — zonder handmatige exports en zonder spreadsheets.
Ook op grote schaal blijven de zaken goedkoop. De kolomsgewijze compressie verkleint de data tot een veelvoud onder het ruwe formaat, zodat je jarenlange historie tegen lage opslagkosten kunt bewaren. En wanneer het verkeer groeit van duizenden naar miljoenen gebeurtenissen, blijft de engine ontworpen voor miljarden rijen — hij is niet achteraf aangepast.
Voordelen en beperkingen
Voordelen
- Aggregaties over miljoenen gebeurtenissen in minder dan een seconde, dankzij de kolomsgewijze opslag.
- Analytics draait op een systeem los van het systeem dat de pagina's uitlevert.
- De verkeersdata blijft van jou, op de infrastructuur van het platform — zonder doorgifte aan Google of advertentienetwerken.
- Geen trackingcookies van derden — eenvoudiger AVG-conformiteit.
- Sterke kolomsgewijze compressie — jarenlange historie tegen lage opslagkosten.
- Open source (Apache 2.0), zonder volumeafhankelijke licenties — de kosten exploderen niet wanneer het verkeer groeit.
Beperkingen
- Het is geen transactionele database — losse rijen wijzigen of verwijderen is een zware bewerking; daarom staan bestellingen en betalingen in PostgreSQL.
- Geoptimaliseerd voor schrijfbewerkingen in grote batches; veel kleine, frequente inserts vragen om batching — het platform neemt dat over, maar het blijft een reële grens van de engine.
- Complexe JOINs zijn minder flexibel dan in PostgreSQL — het gebeurtenisschema moet vanaf het begin voor analyse worden ontworpen.
- Het zoeken naar één enkele rij (point lookup) is trager dan in een geïndexeerde OLTP-database — het vervangt de hoofddatabase van de webshop niet.
Kort oordeel
ClickHouse is de juiste keuze voor analyses op grote hoeveelheden: bezoekers- en verkoopstatistieken in realtime, met jouw data, los van je website. Voor bestellingen, betalingen en voorraad blijft het bij PostgreSQL — daarom combineert de stack van 4buildsite ze allebei, elk voor dat waarin hij het best is. De op ClickHouse gebouwde statistiekenmodule is in ontwikkeling.
Specificatietabel
| Mogelijkheid | Grens / drempel | Typisch gebruik | |
|---|---|---|---|
| Analytische aggregaties | Minder dan een seconde over miljoenen gebeurtenissen (kolomgeoriënteerd en gevectoriseerd) | Traag bij het zoeken naar één enkele rij — niet bedoeld voor OLTP-lookups | Bezoekers- en verkooprapporten (statistiekenmodule, in ontwikkeling) |
| Gebeurtenisopname | Grote hoeveelheden, in batches geschreven | Kleine, frequente inserts vragen om batching of asynchrone inserts | Registratie van paginaweergaven, klikken, bestellingen |
| Opslag & compressie | Kolomsgewijze compressie (LZ4/ZSTD), een veelvoud onder het ruwe volume | Zeer willekeurige data laat zich slechter comprimeren | Gebeurtenishistorie over maanden en jaren, tegen lage kosten |
| Updates & verwijderingen | Asynchrone mutations voor incidentele correcties | Ongeschikt voor frequente UPDATEs van losse rijen | AVG-verwijderingen (de data van een gebruiker, op verzoek) |
| Materialized views | Bij elke schrijfbewerking vooraf berekende aggregaten | De aggregaten moeten per rapport vooraf worden gedefinieerd | Dashboards: verkopen per dag, product, bron |
| Realtime | Gebeurtenissen zijn na hun optreden op te vragen | Geen streamingsysteem in het millisecondenbereik | Live statistieken over verkeer en conversies |
ClickHouse, PostgreSQL en Google Analytics / BigQuery — voor analytics
| Criterium | ClickHouse (4buildsite) | PostgreSQL (voor analytics) | Google Analytics / BigQuery |
|---|---|---|---|
| Aggregatiesnelheid bij grote hoeveelheden | Minder dan een seconde over miljoenen rijen | Zakt merkbaar af bij tientallen miljoenen rijen (rijsgewijze opslag) | BigQuery snel; GA4 biedt vooraf geaggregeerde standaardrapporten, zonder vrije query's |
| Datasoevereiniteit / AVG | Jouw data, op de infrastructuur van het platform, in Europa | Jouw data, op je eigen servers | De data ligt bij Google; de GA-doorgiftes naar de VS werden in 2022 door EU-toezichthouders niet AVG-conform verklaard |
| Cookies & toestemming | Zonder trackingcookies van derden | Hangt af van de eigen implementatie | Vereist een toestemmingsbanner voor de tracking |
| Realtime | Data na verzameling op te vragen | Mogelijk, maar zware rapporten belasten de transactiedatabase | De standaardrapporten van GA4 kunnen uren vertraagd verschijnen; BigQuery-streaming kost extra |
| Kosten bij grote hoeveelheden | Open source — de kosten zijn alleen de infrastructuur, inbegrepen in het abonnement | Stijgen bij grote hoeveelheden met indexen, vacuum en hardware | BigQuery rekent af naar opgevraagd volume; de enterprise-variant van GA is duur |
| Invloed op de snelheid van de website | Asynchrone registratie, analyse op een apart systeem | Rapporten kunnen op dezelfde database concurreren met de bestellingen | Script van derden (gtag.js) in de pagina — extra JavaScript en externe requests |
Veelgestelde vragen
Heeft ClickHouse invloed op de snelheid van mijn website of mijn webshop?
ClickHouse draait op een systeem los van het systeem dat de pagina's uitlevert — zo is de architectuur opgezet. Verkeersgebeurtenissen worden asynchroon verstuurd en de rapporten raken nooit de database van de webshop.
Waarom gebruiken jullie niet gewoon Google Analytics?
Om drie redenen. De data blijft van jou, op de infrastructuur van het platform, niet bij Google. Je hebt geen trackingcookies van derden nodig, waardoor AVG-conformiteit eenvoudiger wordt — in 2022 verklaarden toezichthouders in Oostenrijk, Frankrijk en Italië GA niet AVG-conform. En de rapporten verschijnen volledig, niet gesampled.
Wat onderscheidt ClickHouse van PostgreSQL — waarom allebei?
PostgreSQL is de transactionele database (OLTP): die verwerkt bestellingen, betalingen en voorraad stuk voor stuk, met garanties op correctheid. ClickHouse is de analytische database (OLAP): die leest miljoenen gebeurtenissen in één keer voor rapporten.
Is mijn verkeersdata veilig en AVG-conform?
Ja — al vanuit het ontwerp. De statistieken zijn first-party: ze staan op de infrastructuur van het platform in Europa, worden niet verkocht en niet gedeeld met advertentienetwerken. De aanpak werkt zonder trackingcookies van derden, en de data van een gebruiker kan op verzoek AVG-conform worden verwijderd.
Hoe „realtime” zijn de statistieken?
Een gebeurtenis — een bezoek, een klik, een bestelling — is na het optreden ervan zichtbaar in de rapporten. Aggregaties over lange periodes (maanden, jaren) werken eveneens, want ClickHouse is precies voor dit soort query's gebouwd.
Moet ik iets instellen om statistieken voor mijn website te krijgen?
Dat zal niet nodig zijn. De statistiekenmodule is in ontwikkeling en wordt gebouwd als onderdeel van het platform: zodra die actief is in het beheergedeelte, start de registratie voor gepubliceerde websites automatisch — zonder scripts om te installeren en zonder externe accounts.