ClickHouse — platformos steko realaus laiko analitikos variklis
4buildsite stekas apima ClickHouse – stulpelinę duomenų bazę, sukurtą specialiai didelės apimties analizei. Ant jos kuriame platformos srauto ir pardavimų statistikos modulį (kuriamas): duomenys lieka tavo, o analitika veikia atskirai nuo tavo svetainės puslapių – būtent taip suprojektuota architektūra.
Kas yra ClickHouse ir kodėl jį naudojame
ClickHouse – OLAP tipo (online analizė) stulpelinė duomenų bazė, sukurta Yandex „Yandex.Metrica“ – vienai didžiausių žiniatinklio analizės sistemų pasaulyje – ir 2016 m. paskelbta kaip atvirasis kodas pagal Apache 2.0 licenciją. Ji sukurta vienam dalykui, kurį atlieka išskirtinai: greitam agregavimui itin dideliuose duomenų kiekiuose. 4buildsite architektūroje ClickHouse yra pasirinktas statistikos sluoksnio variklis: kiekvienas apsilankymas, paspaudimas ir užsakymas tampa įvykiu, kurį galima analizuoti.
Paslaptis – saugojimas pagal stulpelius: užuot skaitęs kiekvieną visą „eilutę“, ClickHouse skaito tik tuos stulpelius, kurių reikia ataskaitai, ir apdoroja juos vektorizuotai, dideliais blokais. Todėl klausimas „kiek lankytojų turėjau vakar, pagal kiekvieną puslapį, iš kiekvieno šaltinio“ atsakomas per mažiau nei sekundę net per milijonus įvykių – tai, ką klasikinė, eilutėmis paremta duomenų bazė išsprendžia kur kas sunkiau.
Tai nėra nišinė technologija: Cloudflare ją naudoja HTTP srauto analizei pasauliniu mastu, o Uber, eBay ir Spotify – analitikai ir žurnalų apdorojimui milžiniškais kiekiais. 4buildsite platformoje tas pats variklis yra platformos steko dalis – tau nereikia samdyti duomenų inžinierių komandos.
Realaus laiko statistika, veikianti atskirai nuo tavo svetainės – kaip suprojektuotas modulis
Platformos statistikos modulis yra kuriamas, o jo architektūra paprasta: srauto įvykiai renkami asinchroniškai ir rašomi į ClickHouse, visiškai atskirai nuo serverių, kurie pateikia puslapius. Nėra sunkaus trečiosios šalies sekimo skripto, gadinančio tavo našumo įvertinimą – rinkimas minimalus ir nuosavas (first-party).
panel.4buildsite.net ataskaitos bus skaičiuojamos tiesiai ClickHouse: srautas pagal puslapius, lankytojų šaltiniai, konversijos, pardavimai pagal produktą. Dažni agregatai iš anksto apskaičiuojami per materialized views kiekvieno įrašymo metu, todėl skydelis neskaičiuoja visko iš naujo – sunkus skaičiavimas nepradedamas kaskart, kai į jį pažvelgi.
- Gyvas srautas: apsilankymai, puslapiai, šaltiniai ir įrenginiai – užklausiami po surinkimo
- Pardavimai pagal produktą, užsakymai ir konversijos tavo parduotuvei, agreguoti
- Mėnesių ir metų istorija už mažą kainą – stulpelinis suspaudimas sumažina saugyklą kelis kartus, palyginti su neapdorotais duomenimis
- Rinkimas asinchroninis, ataskaitos vykdomos kitoje sistemoje, atskirai nuo puslapių pateikimo
PostgreSQL + ClickHouse: kodėl naudojame abi
Platformos stekas jungia dvi duomenų bazes, nes jos atlieka iš esmės skirtingus dalykus. PostgreSQL yra transakcijų registras (OLTP): užsakymai, mokėjimai, atsargos, naudotojų paskyros – operacijos, kurios turi būti tobulai teisingos po vieną, su transakcinėmis garantijomis. ClickHouse yra analizės salė (OLAP): milijonai įvykių, skaitomų vienu metu, kad būtų atsakyta į tavo klausimus apie srautą ir pardavimus.
Jei sunkios ataskaitos būtų vykdomos toje pačioje duomenų bazėje, kuri apdoroja užsakymus, kiekviena ataskaita konkuruotų su tuo metu mokančiais klientais. OLTP/OLAP atskyrimas pašalina šį konfliktą: kliento užsakymas ir tavo ataskaita vykdomi atskirose sistemose. Kiekvienas variklis daro būtent tai, kam buvo sukurtas.
- PostgreSQL: užsakymai, Stripe mokėjimai, atsargos, klientai – transakcinis teisingumas
- ClickHouse: srauto įvykiai, ataskaitos, statistika – agregavimas dideliais kiekiais
- Projektas numato, kad svarbūs transakciniai duomenys į ClickHouse patenka kaip įvykiai, todėl pardavimų ataskaitos niekada neliečia duomenų bazės, aptarnaujančios parduotuvę
Nuosava, privatumą gerbianti analitika – vietoje Google Analytics
Statistikos modulio principas: tavo svetainės duomenys lieka platformos infrastruktūroje. Jie nesiunčiami „Google“ ar kitiems reklamos tinklams, neparduodami ir nejungiami su išoriniais naudotojų profiliais. Tai nuosava (first-party) analitika tiesiogine prasme: duomenys apie tavo lankytojus yra tavo.
Kadangi šis požiūris nenaudoja trečiųjų šalių sekimo slapukų, atitiktis BDAR (GDPR) tampa kur kas paprastesnė. Kontekstas svarbus: 2022 m. Austrijos, Prancūzijos ir Italijos duomenų apsaugos institucijos paskelbė, kad „Google Analytics“ naudojimas neatitinka BDAR dėl duomenų perdavimo į JAV. Su nuosava analitika, talpinama Europoje, ši rizikos kategorija išnyksta nuo pat pradžių.
Yra ir tiesioginė praktinė nauda: ClickHouse apskaičiuotos ataskaitos nėra imtinės (sampled). Pilni skaičiai.
Parduotuvės ir prekyvietės ataskaitos – ką pateiks modulis
Internetinei parduotuvei ClickHouse reikš operatyviai gaunamus atsakymus į svarbiausius klausimus: kokie produktai parduodami, iš kokių šaltinių ateina perkantys klientai, kur paliekami krepšeliai. Daugelio pardavėjų prekyvietei tie patys agregatai bus vykdomi per visus užsakymus: apimtis pagal pardavėją, komisiniai, populiariausi produktai pagal kategoriją – be rankinių eksportų ir skaičiuoklių.
Ir dideliu mastu viskas išlieka pigu bei greita. Stulpelinis suspaudimas sumažina duomenis kelis kartus, palyginti su neapdorotu formatu, todėl istoriją saugai metų metus už mažą saugojimo kainą. O kai srautas išauga nuo tūkstančių iki milijonų įvykių, agregavimas išlieka mažesnės nei sekundė zonoje – variklis nuo pat pradžių projektuotas milijardams eilučių, o ne pritaikytas vėliau.
Privalumai ir apribojimai
Privalumai
- Agregavimas per milijonus įvykių per mažiau nei sekundę – ataskaitos remiasi iš anksto agreguotais duomenimis.
- Analitika veikia kitoje sistemoje nei ta, kuri aptarnauja puslapius.
- Srauto duomenys lieka tavo, platformos infrastruktūroje – be perdavimo „Google“ ar reklamos tinklams.
- Be trečiųjų šalių sekimo slapukų – paprastesnė atitiktis BDAR.
- Stiprus stulpelinis suspaudimas – metų metų istorija už mažą saugojimo kainą.
- Atvirasis kodas (Apache 2.0), be licencijų pagal apimtį – kaina nešoka augant srautui.
Apribojimai
- Tai nėra transakcinė duomenų bazė – pavienių eilučių keitimas ar trynimas yra sunki operacija; todėl užsakymai ir mokėjimai laikomi PostgreSQL.
- Optimizuota dideliems paketiniams rašymams; daug mažų, dažnų įterpimų reikalauja batching – platforma tai tvarko, tačiau tai tikra variklio riba.
- Sudėtingi JOIN lankstumu nusileidžia PostgreSQL – įvykių schemą reikia projektuoti analizei nuo pat pradžių.
- Vienos eilutės paieška (point lookup) lėtesnė nei indeksuotoje OLTP bazėje – ji nepakeičia pagrindinės parduotuvės duomenų bazės.
Trumpa išvada
ClickHouse – teisingas pasirinkimas analitikai dideliais kiekiais: srauto ir pardavimų statistikai realiu laiku, su tavo duomenimis, atskirai nuo svetainės puslapių. Užsakymams, mokėjimams ir atsargoms lieka PostgreSQL – todėl 4buildsite stekas jungia abi, kiekvieną ten, kur jis geriausias. Ant ClickHouse statistikos modulis dar kuriamas.
Specifikacijų lentelė
| Galimybė | Riba / slenkstis | Tipinis naudojimas | |
|---|---|---|---|
| Analitinis agregavimas | Mažiau nei sekundė per milijonus įvykių (stulpelinis + vektorizuotas) | Lėtas ieškant vienos eilutės – netinka OLTP lookup | Srauto ir pardavimų ataskaitos (statistikos modulis, kuriamas) |
| Įvykių priėmimas | Dideli kiekiai, rašomi paketais | Mažiems ir dažniems įterpimams reikia batching / async insert | Puslapių peržiūrų, paspaudimų, užsakymų rinkimas |
| Saugojimas ir suspaudimas | Stulpelinis suspaudimas (LZ4/ZSTD), kelis kartus mažesnis už neapdorotą kiekį | Labai atsitiktiniai duomenys suspaudžiami mažiau | Mėnesių ir metų įvykių istorija už mažą kainą |
| Atnaujinimai ir trynimai | Asinchroninės mutations retiems pataisymams | Netinka dažniems UPDATE pavienėms eilutėms | BDAR trynimai (naudotojo duomenys pagal prašymą) |
| Materialized views | Iš anksto apskaičiuoti agregatai kiekvieno įrašymo metu | Agregatus reikia apibrėžti iš anksto, kiekvienai ataskaitai | Skydeliai iš anksto agreguotais duomenimis: pardavimai pagal dieną, produktą, šaltinį |
| Realus laikas | Įvykiai tampa užklausiami po jų įvykio | Tai ne milisekundžių lygio streaming sistema | Gyva srauto ir konversijų statistika |
ClickHouse ir PostgreSQL ir Google Analytics / BigQuery – analitikai
| Kriterijus | ClickHouse (4buildsite) | PostgreSQL (analitikai) | Google Analytics / BigQuery |
|---|---|---|---|
| Agregavimo greitis dideliais kiekiais | Mažiau nei sekundė per milijonus eilučių | Pastebimai krenta esant dešimtims milijonų eilučių (saugojimas eilutėmis) | BigQuery greitas; GA4 turi iš anksto agreguotas standartines ataskaitas, be laisvų užklausų |
| Duomenų nuosavybė / BDAR | Tavo duomenys, platformos infrastruktūroje, Europoje | Tavo duomenys, tavo serveriuose | Duomenys pas „Google“; GA perdavimus į JAV ES institucijos 2022 m. paskelbė neatitinkančiais BDAR |
| Slapukai ir sutikimas | Be trečiųjų šalių sekimo slapukų | Priklauso nuo savo įgyvendinimo | Sekimui reikalinga sutikimo juosta |
| Realus laikas | Duomenys užklausiami | Įmanoma, bet sunkios ataskaitos apkrauna transakcinę bazę | Standartinės GA4 ataskaitos gali atsirasti su kelių valandų vėlavimu; BigQuery streaming kainuoja papildomai |
| Kaina dideliais kiekiais | Atvirasis kodas – kaštai tik infrastruktūra, įtraukta į prenumeratą | Auga su indeksais, vacuum ir aparatine įranga dideliems kiekiams | BigQuery apmokestina pagal užklausiamą apimtį; enterprise GA versija brangi |
| Įtaka svetainės greičiui | Asinchroninis rinkimas, ataskaitos kitoje sistemoje | Ataskaitos gali konkuruoti su užsakymais toje pačioje bazėje | Trečiosios šalies skriptas (gtag.js) puslapyje – papildomas JavaScript ir išorinės užklausos |
Dažniausiai užduodami klausimai
Ar ClickHouse sulėtina mano svetainę ar parduotuvę?
ClickHouse veikia kitoje sistemoje nei ta, kuri aptarnauja puslapius – būtent taip suprojektuota architektūra. Srauto įvykiai siunčiami asinchroniškai, o ataskaitos niekada neliečia parduotuvės duomenų bazės.
Kodėl tiesiog nenaudojate Google Analytics?
Trys priežastys. Duomenys lieka tavo, platformos infrastruktūroje, o ne pas „Google“. Nereikia trečiųjų šalių sekimo slapukų, todėl atitiktis BDAR paprastesnė – 2022 m. Austrijos, Prancūzijos ir Italijos institucijos paskelbė GA neatitinkančią BDAR. O ataskaitos pilnos, ne imtinės.
Kuo ClickHouse skiriasi nuo PostgreSQL – kodėl abi?
PostgreSQL yra transakcinė bazė (OLTP): apdoroja užsakymus, mokėjimus ir atsargas po vieną, su teisingumo garantijomis. ClickHouse yra analitinė bazė (OLAP): ataskaitoms vienu metu skaito milijonus įvykių. Atskyrimas reiškia, kad sunkios ataskaitos vykdomos kitoje sistemoje nei tavo klientų užsakymai.
Ar mano srauto duomenys saugūs ir atitinka BDAR?
Taip – pagal konstrukciją. Statistika yra nuosava (first-party): laikoma platformos infrastruktūroje, Europoje, neparduodama ir nesidalijama su reklamos tinklais. Šis požiūris nenaudoja trečiųjų šalių sekimo slapukų, o naudotojo duomenis pagal BDAR galima ištrinti pagal prašymą.
Kiek „realiu laiku“ yra statistika?
Įvykis – apsilankymas, paspaudimas, užsakymas – ataskaitose tampa matomas po jo įvykimo. Agregavimas per ilgus laikotarpius (mėnesius, metus) taip pat atsako per mažiau nei sekundę, nes ClickHouse sukurtas būtent tokio tipo užklausoms.
Ar man reikia ką nors konfigūruoti, kad turėčiau statistiką savo svetainėje?
Nereikės. Statistikos modulis dar vystomas ir kuriamas kaip platformos dalis: kai jis taps aktyvus administravimo skydelyje, rinkimas paskelbtoms svetainėms prasidės automatiškai – be diegtinų skriptų ir išorinių paskyrų.