ClickHouse — mašina za analitiku u realnom vremenu u steku platforme
Stek 4buildsite-a uključuje ClickHouse — kolonsku bazu podataka napravljenu posebno za analizu velikih količina podataka. Na njoj gradimo modul statistike saobraćaja i prodaje platforme (u razvoju): podaci ostaju vaši, a izveštaji se računaju odvojeno od obrade porudžbina — tako je projektovana arhitektura.
Šta je ClickHouse i zašto ga koristimo
ClickHouse je kolonska baza podataka OLAP tipa (online analitička obrada), nastala u Yandex-u za Yandex.Metrica — jedan od najvećih sistema za veb analitiku na svetu — i objavljena kao open-source 2016. godine pod licencom Apache 2.0. Napravljena je za jednu stvar koju radi izuzetno: brze agregacije nad ogromnim količinama podataka. U arhitekturi 4buildsite-a ClickHouse je izabrani motor za sloj statistike: svaka poseta, klik i porudžbina postaje događaj koji se može analizirati.
Tajna je u skladištenju po kolonama: umesto da čita svaki „red“ u celini, ClickHouse čita samo kolone koje su izveštaju potrebne i obrađuje ih vektorizovano, u velikim blokovima. Zato pitanje poput „koliko smo posetilaca imali juče, po svakoj stranici, iz svakog izvora“ može da se izvrši nad velikim količinama događaja — nešto što klasična baza orijentisana na redove rešava mnogo teže.
Nije u pitanju nišna tehnologija: Cloudflare je koristi za analizu HTTP saobraćaja na globalnom nivou, a Uber, eBay i Spotify za analitiku i obradu logova u ogromnim količinama. Na 4buildsite-u isti motor je deo steka platforme — bez potrebe da angažujete tim inženjera podataka.
Statistika u realnom vremenu — kako je modul projektovan
Modul statistike platforme je u razvoju, a njegova arhitektura je jednostavna: događaji saobraćaja prikupljaju se asinhrono i upisuju u ClickHouse, potpuno odvojeno od servera koji isporučuju stranice. Posetioci ne čekaju na analitiku: prikupljanje događaja je odvojeno od isporuke stranice. Prikupljanje je first-party, bez skripti trećih strana.
Izveštaji u panel.4buildsite.net izračunavaće se direktno u ClickHouse-u: saobraćaj po stranicama, izvori posetilaca, konverzije, prodaja po proizvodu. Česte agregacije unapred se računaju pomoću materialized views pri svakom upisu, pa kontrolna tabla ne pokreće težak proračun svaki put kada je pogledate.
- Saobraćaj: posete, stranice, izvori i uređaji — mogu se upitati posle prikupljanja
- Prodaja po proizvodu, porudžbine i konverzije za vašu prodavnicu, agregirane nad velikim količinama događaja
- Istorija po mesecima i godinama uz mali trošak — kolonska kompresija višestruko smanjuje skladištenje u odnosu na sirove podatke
- Prikupljanje je asinhrono, izveštavanje radi na drugom sistemu
PostgreSQL + ClickHouse: zašto koristimo obe
Stek platforme kombinuje dve baze podataka jer rade suštinski različite stvari. PostgreSQL je registar transakcija (OLTP): porudžbine, plaćanja, zalihe, korisnički nalozi — operacije koje moraju biti savršeno tačne jedna po jedna, uz transakcione garancije. ClickHouse je sala za analizu (OLAP): milioni događaja koji se čitaju odjednom da bi se odgovorilo na pitanja o saobraćaju i prodaji.
Kada bi se teški izveštaji izvršavali na istoj bazi koja obrađuje porudžbine, svaki izveštaj bi se takmičio sa kupcima koji u tom trenutku plaćaju. Razdvajanje OLTP/OLAP uklanja taj sukob: porudžbina kupca ne čeka na vaš izveštaj, a vaš izveštaj ne čeka na tuđe porudžbine. Svaki motor radi tačno ono za šta je napravljen.
- PostgreSQL: porudžbine, Stripe plaćanja, zalihe, kupci — transakciona ispravnost
- ClickHouse: događaji saobraćaja, izveštaji, statistika — agregacija pri velikom obimu
- Dizajn predviđa da relevantni transakcioni podaci stižu u ClickHouse kao događaji, pa izveštaji o prodaji ne dotiču bazu koja služi prodavnici
Sopstvena analitika, privacy-friendly — umesto Google Analytics-a
Princip modula statistike: podaci vašeg sajta ostaju na infrastrukturi platforme. Ne šalju se Google-u ni drugim reklamnim mrežama, ne prodaju se i ne kombinuju sa spoljnim profilima korisnika. To je first-party analitika u pravom smislu: podaci o vašim posetiocima pripadaju vama.
Pošto pristup ne koristi kolačiće treće strane za praćenje, usklađenost sa GDPR-om postaje mnogo jednostavnija. Kontekst je važan: 2022. godine organi za zaštitu podataka u Austriji, Francuskoj i Italiji proglasili su korišćenje Google Analytics-a neusklađenim sa GDPR-om zbog prenosa podataka u SAD. Uz sopstvenu analitiku, hostovanu u Evropi, ta kategorija rizika nestaje od samog početka.
Postoji i direktna praktična korist: izveštaji izračunati u ClickHouse-u nisu uzorkovani. Kompletni brojevi, bez uzorkovanja.
Izveštaji za prodavnicu i marketplace — šta će modul isporučiti
Za onlajn prodavnicu ClickHouse omogućava odgovore na pitanja koja su važna: koji se proizvodi prodaju, iz kojih izvora dolaze kupci koji kupuju, gde se korpe napuštaju. Za marketplace sa više prodavaca iste agregacije će se izvršavati nad svim porudžbinama: obim po prodavcu, provizije, najprodavaniji proizvodi po kategoriji — bez ručnih izvoza i bez tabela.
I pri velikom obimu stvari ostaju jeftine. Kolonska kompresija smanjuje podatke višestruko u odnosu na sirovi format, pa istoriju čuvate godinama uz mali trošak skladištenja. A kada saobraćaj poraste sa hiljada na milione događaja, agregacije ostaju upravljive — motor je od početka projektovan za velike količine podataka, a ne naknadno prilagođavan.
Prednosti i ograničenja
Prednosti
- Agregacije nad velikim količinama događaja — kolonsko skladištenje i vektorizovana obrada.
- Analitika radi na sistemu odvojenom od onog koji služi stranice.
- Podaci o saobraćaju ostaju vaši, na infrastrukturi platforme — bez prenosa Google-u ili reklamnim mrežama.
- Bez kolačića treće strane za praćenje — jednostavnija usklađenost sa GDPR-om.
- Snažna kolonska kompresija — istorija od više godina uz mali trošak skladištenja.
- Open-source (Apache 2.0), bez licenci po obimu — trošak ne eksplodira kada saobraćaj poraste.
Ograničenja
- Nije transakciona baza podataka — izmena ili brisanje pojedinačnih redova je teška operacija; zato porudžbine i plaćanja stoje u PostgreSQL-u.
- Optimizovan za upise u velikim paketima; mnogo malih i čestih insert-a traži batching — platforma to rešava, ali je to stvarno ograničenje motora.
- Složeni JOIN-ovi su manje fleksibilni nego u PostgreSQL-u — šema događaja mora se od početka projektovati za analizu.
- Pretraga jednog reda (point lookup) sporija je nego u indeksiranoj OLTP bazi — ne zamenjuje glavnu bazu prodavnice.
Kratak zaključak
ClickHouse je pravi izbor za analitiku pri velikom obimu: statistika saobraćaja i prodaje, sa vašim podacima, na sistemu odvojenom od stranica. Za porudžbine, plaćanja i zalihe ostaje PostgreSQL — zato ih stek 4buildsite-a kombinuje obe, svaku u onome u čemu je najbolja. Modul statistike izgrađen na ClickHouse-u je u razvoju.
Tabela specifikacija
| Mogućnost | Ograničenje / prag | Tipična upotreba | |
|---|---|---|---|
| Analitičke agregacije | Kolonsko skladištenje i vektorizovana obrada nad velikim količinama događaja | Sporo pri pretrazi jednog reda — nije za OLTP lookup-e | Izveštaji o saobraćaju i prodaji (modul statistike, u razvoju) |
| Unos događaja | Veliki obimi, upisani u paketima | Mali i česti insert-i traže batching / async insert | Prikupljanje pageview-a, klikova, porudžbina |
| Skladištenje i kompresija | Kolonska kompresija (LZ4/ZSTD), višestruko ispod sirovog obima | Veoma nasumični podaci se manje kompresuju | Istorija događaja po mesecima i godinama, uz mali trošak |
| Ažuriranja i brisanja | Asinhrone mutations za povremene ispravke | Nepogodno za česte UPDATE-ove pojedinačnih redova | GDPR brisanja (podaci korisnika, na zahtev) |
| Materialized views | Unapred izračunati agregati pri svakom upisu | Agregati se moraju unapred definisati, po izveštaju | Trenutne kontrolne table: prodaja po danu, proizvodu, izvoru |
| Realno vreme | Događaji postaju dostupni za upite posle prikupljanja | Nije streaming sistem na nivou milisekunde | Statistika saobraćaja i konverzija uživo |
ClickHouse naspram PostgreSQL-a naspram Google Analytics-a / BigQuery-ja — za analitiku
| Kriterijum | ClickHouse (4buildsite) | PostgreSQL (za analitiku) | Google Analytics / BigQuery |
|---|---|---|---|
| Agregacije pri velikom obimu | Kolonsko skladištenje nad velikim brojem redova | Primetno usporava na desetinama miliona redova (skladištenje po redovima) | BigQuery za velike skupove podataka; GA4 ima unapred agregirane standardne izveštaje, bez slobodnih upita |
| Vlasništvo nad podacima / GDPR | Vaši podaci, na infrastrukturi platforme, u Evropi | Vaši podaci, na vašim serverima | Podaci kod Google-a; prenose GA-a u SAD organi EU su 2022. proglasili neusklađenim sa GDPR-om |
| Kolačići i saglasnost | Bez kolačića treće strane za praćenje | Zavisi od sopstvene implementacije | Zahteva baner za saglasnost za praćenje |
| Realno vreme | Podaci dostupni za upite posle prikupljanja | Moguće, ali teški izveštaji opterećuju transakcionu bazu | Standardni GA4 izveštaji mogu da se pojave sa zakašnjenjem od nekoliko sati; BigQuery streaming se dodatno naplaćuje |
| Trošak pri velikom obimu | Open-source — trošak je samo infrastruktura, uključena u pretplatu | Raste sa indeksima, vacuum-om i hardverom pri velikim obimima | BigQuery naplaćuje po obimu upitanih podataka; enterprise varijanta GA-a je skupa |
| Uticaj na brzinu sajta | Asinhrono prikupljanje, izveštavanje na odvojenom sistemu | Izveštaji mogu da se takmiče sa porudžbinama na istoj bazi | Skript treće strane (gtag.js) na stranici — dodatni JavaScript i spoljni zahtevi |
Često postavljana pitanja
Da li ClickHouse usporava moj sajt ili prodavnicu?
Ne. ClickHouse radi na sistemu odvojenom od onog koji služi stranice — tako je projektovana arhitektura. Događaji saobraćaja šalju se asinhrono, a izveštaji ne dotiču bazu podataka prodavnice. Statistika ne menja način isporuke stranica.
Zašto jednostavno ne koristite Google Analytics?
Iz tri razloga. Podaci ostaju vaši, na infrastrukturi platforme, a ne kod Google-a. Ne trebaju vam kolačići treće strane za praćenje, pa je usklađenost sa GDPR-om jednostavnija — 2022. su organi iz Austrije, Francuske i Italije proglasili GA neusklađenim sa GDPR-om. I izveštaji su kompletni, a ne uzorkovani ili zakasneli satima.
Kakva je razlika između ClickHouse-a i PostgreSQL-a — zašto obe?
PostgreSQL je transakciona baza (OLTP): obrađuje porudžbine, plaćanja i zalihe, jednu po jednu, uz garancije ispravnosti. ClickHouse je analitička baza (OLAP): čita milione događaja odjednom za izveštaje. Razdvajanje znači da težak izveštaj ne utiče na porudžbine vaših kupaca.
Da li su moji podaci o saobraćaju bezbedni i usklađeni sa GDPR-om?
Da — po dizajnu. Statistika je first-party: nalazi se na infrastrukturi platforme, u Evropi, ne prodaje se i ne deli sa reklamnim mrežama. Pristup ne koristi kolačiće treće strane za praćenje, a podaci jednog korisnika mogu se obrisati na zahtev, u skladu sa GDPR-om.
Koliko je statistika „u realnom vremenu“?
Događaj — poseta, klik, porudžbina — postaje vidljiv u izveštajima posle prikupljanja. Agregacije za duge periode (meseci, godine) takođe su pogodne, jer je ClickHouse napravljen upravo za ovu vrstu upita.
Da li moram nešto da podesim da bih imao statistiku na svom sajtu?
Neće biti potrebe. Modul statistike je u razvoju i gradi se kao deo platforme: kada postane aktivan u administratorskom panelu, prikupljanje se pokreće automatski za objavljene sajtove — bez skripti za instalaciju i bez spoljnih naloga.