ClickHouse — reāllaika analītikas dzinējs platformas stekā
4buildsite steks ietver ClickHouse — kolonnu datubāzi, kas speciāli veidota analīzei lielos apjomos. Uz tās veidojam platformas datplūsmas un pārdošanas statistikas moduli (izstrādes procesā): dati paliek tavi, bet vietnes darbība ir atdalīta no pārskatiem — tā ir projektēta arhitektūra.
Kas ir ClickHouse un kāpēc to izmantojam
ClickHouse ir OLAP (online analītiskās apstrādes) tipa kolonnu datubāze, ko Yandex izveidoja sistēmai Yandex.Metrica — vienai no lielākajām tīmekļa analīzes sistēmām pasaulē — un 2016. gadā publicēja kā atvērtā koda risinājumu ar Apache 2.0 licenci. Tā ir veidota vienam mērķim, ko tā dara izcili: ātrām agregācijām pār milzīgiem datu apjomiem. 4buildsite arhitektūrā ClickHouse ir izvēlētais dzinējs statistikas slānim: katrs apmeklējums, klikšķis un pasūtījums kļūst par notikumu, ko var analizēt.
Noslēpums ir glabāšanā pa kolonnām: tā vietā, lai nolasītu katru pilnu „rindu”, ClickHouse nolasa tikai tās kolonnas, kas vajadzīgas pārskatam, un apstrādā tās vektorizēti, lielos blokos. Tāpēc jautājums, piemēram, „cik apmeklētāju bija vakar, katrā lapā, no katra avota”, saņem atbildi arī pār miljoniem notikumu — ko klasiskai, uz rindām orientētai datubāzei atrisināt ir daudz grūtāk.
Tā nav nišas tehnoloģija: Cloudflare to izmanto HTTP datplūsmas analīzei globālā mērogā, bet Uber, eBay un Spotify — analītikai un žurnālu apstrādei milzīgos apjomos. Platformā 4buildsite tas pats dzinējs ir daļa no platformas steka — bez nepieciešamības pieņemt darbā datu inženieru komandu.
Reāllaika statistika atdalīta no vietnes — kā modulis ir projektēts
Platformas statistikas modulis ir izstrādes procesā, un tā arhitektūra ir vienkārša: datplūsmas notikumi tiek vākti asinhroni un ierakstīti ClickHouse, pilnībā atdalīti no serveriem, kas piegādā lapas. Analytics neatrodas lapas ielādes ceļā. Nav smaga trešās puses tracking skripta, kas sabojātu tavu veiktspējas rezultātu — vākšana ir minimāla un first-party.
Pārskati no panel.4buildsite.net tiks aprēķināti tieši ClickHouse: datplūsma pa lapām, apmeklētāju avoti, konversijas, pārdošana pa produktiem. Biežās agregācijas tiek iepriekš aprēķinātas ar materialized views katrā ierakstā, tāpēc informācijas panelim nav jāveic smags aprēķins katru reizi, kad to atver.
- Tiešraides datplūsma: apmeklējumi, lapas, avoti un ierīces — vaicājami pēc savākšanas
- Pārdošana pa produktiem, pasūtījumi un konversijas tavam veikalam, agregēti pārskatos
- Vēsture par mēnešiem un gadiem par zemām izmaksām — kolonnu kompresija samazina glabāšanu vairākkārt salīdzinājumā ar neapstrādātiem datiem
- Atdalīta no vietnes: vākšana ir asinhrona, pārskati darbojas citā sistēmā
PostgreSQL + ClickHouse: kāpēc izmantojam abus
Platformas steks apvieno divas datubāzes, jo tās dara pamatā atšķirīgas lietas. PostgreSQL ir darījumu reģistrs (OLTP): pasūtījumi, maksājumi, krājumi, lietotāju konti — darbības, kurām jābūt perfekti pareizām katrai atsevišķi, ar darījumu garantijām. ClickHouse ir analīzes zāle (OLAP): miljoniem notikumu, kas tiek nolasīti vienlaikus, lai atbildētu uz jautājumiem par datplūsmu un pārdošanu.
Ja smagie pārskati darbotos uz tās pašas datubāzes, kas apstrādā pasūtījumus, katrs pārskats konkurētu ar klientiem, kuri tajā brīdī maksā. OLTP/OLAP nodalīšana novērš šo konfliktu: klienta pasūtījums negaida tavu pārskatu, bet tavs pārskats negaida citu pasūtījumus. Katrs dzinējs dara tieši to, kam tas veidots.
- PostgreSQL: pasūtījumi, Stripe maksājumi, krājumi, klienti — darījumu pareizība
- ClickHouse: datplūsmas notikumi, pārskati, statistika — agregācija lielā apjomā
- Dizains paredz, ka attiecīgie darījumu dati nonāk ClickHouse kā notikumi, tāpēc pārdošanas pārskati nekad neskar datubāzi, kas apkalpo veikalu
Pašu analytics, privātumam draudzīgs — Google Analytics vietā
Statistikas moduļa princips: tavas vietnes dati paliek platformas infrastruktūrā. Tie netiek sūtīti Google vai citiem reklāmas tīkliem, netiek pārdoti un netiek apvienoti ar ārējiem lietotāju profiliem. Tas ir first-party analytics tiešā nozīmē: dati par taviem apmeklētājiem ir tavi.
Tā kā pieeja neizmanto trešo pušu tracking sīkdatnes, GDPR atbilstība kļūst daudz vienkāršāka. Konteksts ir svarīgs: 2022. gadā datu aizsardzības iestādes Austrijā, Francijā un Itālijā atzina, ka Google Analytics lietošana neatbilst GDPR datu pārsūtīšanas uz ASV dēļ. Ar pašu analytics, kas mitināts Eiropā, šī riska kategorija pazūd jau no paša sākuma.
Ir arī tieši praktisks ieguvums: ClickHouse aprēķinātie pārskati netiek izlases veidā ņemti un neparādās ar vairāku stundu kavēšanos, kā tas notiek ar standarta pārskatiem bezmaksas analytics rīkos. Pilni skaitļi, nevis izlase.
Veikala un mārketpleisa pārskati — ko piegādās modulis
Tiešsaistes veikalam ClickHouse nozīmēs atbildes uz svarīgajiem jautājumiem: kuri produkti tiek pārdoti, no kādiem avotiem nāk pircēji, kur tiek pamesti grozi. Daudzpārdevēju mārketpleisam tās pašas agregācijas darbosies pār visiem pasūtījumiem: apjoms pa pārdevējiem, komisijas, populārākie produkti pa kategorijām — bez manuāliem eksportiem un bez izklājlapām.
Arī mērogā viss paliek lēts. Kolonnu kompresija samazina datus vairākkārt salīdzinājumā ar neapstrādāto formātu, tāpēc vēsturi vari glabāt gadiem par zemām glabāšanas izmaksām. Un, kad datplūsma aug no tūkstošiem līdz miljoniem notikumu, agregācijas joprojām darbojas — dzinējs jau no paša sākuma projektēts miljardiem rindu, nevis pielāgots vēlāk.
Priekšrocības un ierobežojumi
Priekšrocības
- Agregācijas pār miljoniem notikumu — dzinējs veidots tieši šādiem vaicājumiem.
- Analytics darbojas sistēmā, kas atdalīta no tās, kas apkalpo lapas.
- Datplūsmas dati paliek tavi, platformas infrastruktūrā — bez pārsūtīšanas Google vai reklāmas tīkliem.
- Bez trešo pušu tracking sīkdatnēm — vienkāršāka GDPR atbilstība.
- Spēcīga kolonnu kompresija — vēsture gadiem par zemām glabāšanas izmaksām.
- Atvērtā koda (Apache 2.0), bez licencēm pēc apjoma — izmaksas nesprāgst, kad aug datplūsma.
Ierobežojumi
- Nav darījumu datubāze — atsevišķu rindu mainīšana vai dzēšana ir smaga darbība; tāpēc pasūtījumi un maksājumi atrodas PostgreSQL.
- Optimizēta ierakstiem lielās partijās; daudzi mazi un bieži insert prasa batching — platforma to pārvalda, taču tas ir reāls dzinēja ierobežojums.
- Sarežģīti JOIN ir mazāk elastīgi nekā PostgreSQL — notikumu shēma jāprojektē analīzei jau no paša sākuma.
- Viena rindas meklēšana (point lookup) ir lēnāka nekā indeksētā OLTP datubāzē — tā neaizstāj veikala pamata datubāzi.
Īss secinājums
ClickHouse ir pareizā izvēle analītikai lielos apjomos: datplūsmas un pārdošanas statistika reāllaikā, ar taviem datiem, atdalīti no vietnes darbības. Pasūtījumiem, maksājumiem un krājumiem paliek PostgreSQL — tāpēc 4buildsite steks apvieno abus, katru tajā, kas tam padodas vislabāk. Uz ClickHouse veidotais statistikas modulis ir izstrādes procesā.
Specifikāciju tabula
| Iespēja | Ierobežojums / slieksnis | Tipisks pielietojums | |
|---|---|---|---|
| Analītiskās agregācijas | Agregācijas pār miljoniem notikumu (kolonnu + vektorizēts) | Lēns, meklējot vienu rindu — nav paredzēts OLTP lookups | Datplūsmas un pārdošanas pārskati (statistikas modulis, izstrādes procesā) |
| Notikumu uzņemšana | Lieli apjomi, ierakstīti partijās | Mazi un bieži insert prasa batching / async insert | Lapu skatījumu, klikšķu, pasūtījumu vākšana |
| Glabāšana un kompresija | Kolonnu kompresija (LZ4/ZSTD), vairākkārt zem neapstrādātā apjoma | Ļoti nejauši dati saspiežas mazāk | Notikumu vēsture par mēnešiem un gadiem, par zemām izmaksām |
| Atjauninājumi un dzēšana | Asinhronas mutations ar retām korekcijām | Nav piemērots biežiem UPDATE uz atsevišķām rindām | GDPR dzēšana (lietotāja dati pēc pieprasījuma) |
| Materialized views | Iepriekš aprēķināti agregāti katrā ierakstā | Agregāti jādefinē iepriekš, katram pārskatam | Informācijas paneļi: pārdošana pa dienām, produktiem, avotiem |
| Reāllaiks | Notikumi kļūst vaicājami pēc to norises | Nav streaming sistēma milisekunžu līmenī | Tiešraides datplūsmas un konversiju statistika |
ClickHouse pret PostgreSQL pret Google Analytics / BigQuery — analītikai
| Kritērijs | ClickHouse (4buildsite) | PostgreSQL (analītikai) | Google Analytics / BigQuery |
|---|---|---|---|
| Agregāciju ātrums lielā apjomā | Agregācijas pār miljoniem rindu | Manāmi lēnāks pār desmitiem miljonu rindu (glabāšana pa rindām) | BigQuery ātrs; GA4 ir standarta iepriekš agregēti pārskati, bez brīviem vaicājumiem |
| Datu piederība / GDPR | Tavi dati, platformas infrastruktūrā, Eiropā | Tavi dati, tavos serveros | Dati pie Google; GA datu pārsūtīšanu uz ASV ES iestādes 2022. gadā atzina par GDPR neatbilstošu |
| Sīkdatnes un piekrišana | Bez trešo pušu tracking sīkdatnēm | Atkarīgs no paša ieviešanas | Tracking nepieciešams piekrišanas baneris |
| Reāllaiks | Dati vaicājami pēc savākšanas | Iespējams, taču smagie pārskati noslogo darījumu datubāzi | Standarta GA4 pārskati var parādīties ar vairāku stundu kavēšanos; BigQuery streaming maksā papildus |
| Izmaksas lielā apjomā | Atvērtā koda — izmaksas ir tikai infrastruktūra, iekļauta abonementā | Pieaug līdz ar indeksiem, vacuum un aparatūru lielos apjomos | BigQuery maksā par vaicāto apjomu; GA enterprise variants ir dārgs |
| Ietekme uz vietnes ātrumu | Asinhrona vākšana, pārskati atsevišķā sistēmā | Pārskati var konkurēt ar pasūtījumiem vienā datubāzē | Trešās puses skripts (gtag.js) lapā — papildu JavaScript un ārēji pieprasījumi |
Biežāk uzdotie jautājumi
Vai ClickHouse palēnina manu vietni vai veikalu?
Nē. ClickHouse darbojas sistēmā, kas atdalīta no tās, kas apkalpo lapas — tāda ir arhitektūras konstrukcija. Datplūsmas notikumi tiek sūtīti asinhroni, un pārskati nekad neskar veikala datubāzi.
Kāpēc vienkārši neizmantojat Google Analytics?
Trīs iemesli. Dati paliek tavi, platformas infrastruktūrā, nevis pie Google. Tev nav vajadzīgas trešo pušu tracking sīkdatnes, tāpēc GDPR atbilstība ir vienkāršāka — 2022. gadā iestādes Austrijā, Francijā un Itālijā atzina GA par neatbilstošu GDPR. Un pārskati ir pilni, nevis izlases veidā vai ar vairāku stundu kavēšanos.
Kāda ir atšķirība starp ClickHouse un PostgreSQL — kāpēc abi?
PostgreSQL ir darījumu datubāze (OLTP): tā apstrādā pasūtījumus, maksājumus un krājumus pa vienam, ar pareizības garantijām. ClickHouse ir analītiskā datubāze (OLAP): tā vienlaikus nolasa miljoniem notikumu pārskatiem. Nodalīšana nozīmē, ka smags pārskats nekad nepalēnina tavu klientu pasūtījumus.
Vai mani datplūsmas dati ir drošībā un atbilst GDPR?
Jā — pēc konstrukcijas. Statistika ir first-party: tā atrodas platformas infrastruktūrā, Eiropā, netiek pārdota un netiek kopīgota ar reklāmas tīkliem. Pieeja neizmanto trešo pušu tracking sīkdatnes, un lietotāja datus pēc pieprasījuma var dzēst saskaņā ar GDPR.
Cik „reāllaika” ir statistika?
Notikums — apmeklējums, klikšķis, pasūtījums — pārskatos kļūst redzams pēc tā norises. Agregācijas pār lieliem periodiem (mēnešiem, gadiem) arī tiek veiktas, jo ClickHouse ir veidots tieši šāda veida vaicājumiem.
Vai man kaut kas jākonfigurē, lai vietnē būtu statistika?
Nebūs nepieciešams. Statistikas modulis ir izstrādes procesā un veidots kā platformas daļa: kad tas administrēšanas panelī kļūs aktīvs, vākšana publicētajām vietnēm sāksies automātiski — bez instalējamiem skriptiem un bez ārējiem kontiem.