ClickHouse — platvormi tehnoloogiapaki reaalajaanalüütika mootor
4buildsite'i tehnoloogiapakett sisaldab ClickHouse'i — veerupõhist andmebaasi, mis on loodud spetsiaalselt suuremahuliseks analüüsiks. Sellele ehitame platvormi liikluse- ja müügistatistika mooduli (arendamisel): andmed jäävad sinule.
Mis on ClickHouse ja miks me seda kasutame
ClickHouse on veerupõhine OLAP-tüüpi (online-analüüs) andmebaas, mis loodi Yandexis Yandex.Metrica jaoks — üks maailma suurimaid veebianalüüsi süsteeme — ning avaldati avatud lähtekoodina 2016. aastal Apache 2.0 litsentsi all. See on ehitatud ühe asja jaoks, mida see teeb erakordselt hästi: kiire koondamine tohututel andmemahtudel. 4buildsite'i arhitektuuris on ClickHouse statistikakihi jaoks valitud mootor: iga külastus, klõps ja tellimus muutub sündmuseks, mida saab kohe analüüsida.
Saladus on veergude kaupa salvestamine: selle asemel et lugeda iga „rida“ tervikuna, loeb ClickHouse ainult need veerud, mida aruanne vajab, ja töötleb neid vektoriseeritult, suurte plokkidena. Seetõttu saab küsimus nagu „mitu külastajat mul eile oli, iga lehe ja iga allika kaupa“ vastuse alla sekundiga isegi miljonite sündmuste üle — midagi, mida klassikaline, ridadele orienteeritud andmebaas lahendab palju raskemini.
See pole nišitehnoloogia: Cloudflare kasutab seda HTTP-liikluse analüüsiks ülemaailmses mastaabis, Uber, eBay ja Spotify aga analüütikaks ning logide töötlemiseks tohututes mahtudes. 4buildsite'is on sama mootor osa platvormi tehnoloogiapakettist — ilma et pead palkama andmeinseneride meeskonda.
Reaalajastatistika — kuidas moodul on kavandatud
Platvormi statistikamoodul on arendamisel ja selle arhitektuur on lihtne: liiklussündmusi kogutakse asünkroonselt ja kirjutatakse ClickHouse'i, täiesti eraldi lehti serveerivatest serveritest. Lehel pole rasket kolmanda osapoole jälgimisskripti — kogumine on minimaalne ja first-party.
Aruanded aadressil panel.4buildsite.net arvutatakse otse ClickHouse'is: liiklus lehtede kaupa, külastajate allikad, konversioonid, müük toodete kaupa. Sagedased koondid arvutatakse eelnevalt materialized views'ide abil iga kirjutamise puhul, seega avaneb töölaud kohe — iga vaatamisega ei käivitu raske arvutus.
- Reaalajaliiklus: külastused, lehed, allikad ja seadmed — päritavad pärast kogumist
- Müük toodete kaupa, tellimused ja konversioonid sinu e-poe jaoks
- Kuude ja aastate ajalugu väikese kuluga — veerupõhine tihendus vähendab salvestust toorandmetega võrreldes mitu korda
- Kogumine on asünkroonne, aruandlus töötab teises süsteemis
PostgreSQL + ClickHouse: miks me kasutame mõlemat
Platvormi tehnoloogiapakett ühendab kaks andmebaasi, sest need teevad põhimõtteliselt erinevaid asju. PostgreSQL on tehingute register (OLTP): tellimused, maksed, laoseis, kasutajakontod — operatsioonid, mis peavad olema üksteise järel täiesti õiged, tehinguliste garantiidega. ClickHouse on analüüsisaal (OLAP): miljoneid sündmusi loetakse korraga, et vastata sinu küsimustele liikluse ja müügi kohta.
Kui rasked aruanded töötaksid samas andmebaasis, mis töötleb tellimusi, konkureeriks iga aruanne klientidega, kes parajasti maksavad. OLTP/OLAP-i lahusus kõrvaldab selle konflikti: kliendi tellimus ei oota sinu aruannet ja sinu aruanne ei oota teiste tellimusi. Iga mootor teeb täpselt seda, milleks see on ehitatud.
- PostgreSQL: tellimused, Stripe'i maksed, laoseis, kliendid — tehinguline korrektsus
- ClickHouse: liiklussündmused, aruanded, statistika — koondamine suures mahus
- Disain näeb ette, et asjakohased tehinguandmed jõuavad ClickHouse'i sündmustena, seega ei puuduta müügiaruanded kunagi andmebaasi, mis serveerib e-poodi
Oma privaatsussõbralik analüütika — Google Analyticsi asemel
Statistikamooduli põhimõte: sinu saidi andmed jäävad platvormi infrastruktuuri. Neid ei saadeta Google'ile ega teistele reklaamivõrgustikele, neid ei müüda ega kombineerita väliste kasutajaprofiilidega. See on first-party analytics sõna otseses mõttes: andmed sinu külastajate kohta on sinu omad.
Kuna lähenemine ei kasuta kolmanda osapoole jälgimisküpsiseid, muutub GDPR-ile vastavus palju lihtsamaks. Kontekst loeb: 2022. aastal tunnistasid Austria, Prantsusmaa ja Itaalia andmekaitseasutused Google Analyticsi kasutamise GDPR-iga mittevastavaks andmeedastuse tõttu USA-sse. Oma, Euroopas majutatud analüütikaga kaob see riskikategooria algusest peale.
On ka otsene praktiline kasu: ClickHouse'is arvutatud aruanded ei ole valimipõhised. Täielikud numbrid.
E-poe ja turuplatsi aruanded — mida moodul pakkuma hakkab
E-poe jaoks tähendab ClickHouse kohest vastust olulistele küsimustele: millised tooted müüvad, millistest allikatest tulevad ostvad kliendid, kus ostukorvid maha jäetakse. Mitme müüjaga turuplatsi jaoks töötavad samad koondid kõigil tellimustel: maht müüja kaupa, vahendustasud, enimmüüdud tooted kategooria kaupa — ilma käsitsi eksportideta ja ilma tabelarvutuseta.
Ka suures mahus jäävad asjad odavaks. Veerupõhine tihendus vähendab andmeid toorvorminguga võrreldes mitu korda, seega hoiad aastatepikkust ajalugu väikese salvestuskuluga. Ja kui liiklus kasvab tuhandetelt miljonite sündmusteni, mootor kavandati algusest peale miljarditele ridadele, mitte ei kohandatud hiljem.
Eelised ja piirangud
Eelised
- Koondamine miljonitel sündmustel alla sekundiga.
- Analüütika töötab lehti serveerivast süsteemist eraldi süsteemis.
- Liiklusandmed jäävad sinule, platvormi infrastruktuuri — ilma edastuseta Google'ile või reklaamivõrgustikele.
- Ilma kolmanda osapoole jälgimisküpsisteta — lihtsam GDPR-ile vastavus.
- Tugev veerupõhine tihendus — aastatepikkune ajalugu väikese salvestuskuluga.
- Avatud lähtekood (Apache 2.0), ilma mahupõhiste litsentsideta — kulu ei plahvata liikluse kasvades.
Piirangud
- See pole tehinguline andmebaas — üksikute ridade muutmine või kustutamine on raske operatsioon; seetõttu asuvad tellimused ja maksed PostgreSQL-is.
- Optimeeritud suurtes partiides kirjutamiseks; paljud väikesed ja sagedased lisamised nõuavad batching'ut — platvorm haldab seda, kuid see on mootori tegelik piirang.
- Keerukad JOIN-id on vähem paindlikud kui PostgreSQL-is — sündmuste skeem tuleb algusest peale analüüsi jaoks kavandada.
- Üksiku rea otsimine (point lookup) on aeglasem kui indekseeritud OLTP-andmebaasis — see ei asenda e-poe põhiandmebaasi.
Lühike kokkuvõte
ClickHouse on õige valik suuremahuliseks analüütikaks: reaalajas liikluse- ja müügistatistika sinu enda andmetega, saidi kiirust puudutamata. Tellimuste, maksete ja laoseisu jaoks jääb PostgreSQL — seetõttu ühendab 4buildsite'i tehnoloogiapakett mõlemad, kumbki seal, kus ta on parim. ClickHouse'ile ehitatud statistikamoodul on arendamisel.
Spetsifikatsioonide tabel
| Võimekus | Piir / lävi | Tüüpiline kasutus | |
|---|---|---|---|
| Analüütiline koondamine | Alla sekundi miljonitel sündmustel (veerupõhine + vektoriseeritud) | Aeglane üksiku rea otsimisel — pole OLTP-päringute jaoks | Liikluse- ja müügiaruanded (statistikamoodul, arendamisel) |
| Sündmuste sissevõtt | Suured mahud, kirjutatud partiidena | Väikesed ja sagedased lisamised nõuavad batching'ut / async insert'i | Lehevaatamiste, klõpsude ja tellimuste kogumine |
| Salvestus ja tihendus | Veerupõhine tihendus (LZ4/ZSTD), mitu korda toormahust väiksem | Väga juhuslikud andmed tihenduvad vähem | Sündmuste ajalugu kuude ja aastate kaupa, väikese kuluga |
| Uuendused ja kustutamised | Asünkroonsed mutations aeg-ajalt tehtavate parandusteks | Ei sobi sagedasteks UPDATE-teks üksikutel ridadel | GDPR-kustutused (kasutaja andmed, nõudmisel) |
| Materialized views | Eelnevalt arvutatud koondid iga kirjutamise puhul | Koondid tuleb eelnevalt defineerida, aruande kaupa | Kohesed töölauad: müük päeva, toote, allika kaupa |
| Reaalaeg | Sündmused muutuvad päritavaks pärast toimumist | Pole millisekundi tasemel striimimissüsteem | Reaalajaliikluse ja konversioonide statistika |
ClickHouse vs PostgreSQL vs Google Analytics / BigQuery — analüütika jaoks
| Kriteerium | ClickHouse (4buildsite) | PostgreSQL (analüütikaks) | Google Analytics / BigQuery |
|---|---|---|---|
| Koondamise kiirus suures mahus | Alla sekundi miljonitel ridadel | Langeb märgatavalt kümnetel miljonitel ridadel (ridapõhine salvestus) | BigQuery kiire; GA4-l on eelkoondatud standardaruanded, ilma vabade päringuteta |
| Andmete omand / GDPR | Sinu andmed, platvormi infrastruktuuris, Euroopas | Sinu andmed, sinu serverites | Andmed Google'is; GA edastused USA-sse tunnistasid ELi asutused 2022. aastal GDPR-iga mittevastavaks |
| Küpsised ja nõusolek | Ilma kolmanda osapoole jälgimisküpsisteta | Sõltub enda teostusest | Jälgimiseks on vaja nõusolekubännerit |
| Reaalaeg | Andmed päritavad pärast kogumist | Võimalik, kuid rasked aruanded koormavad tehinguandmebaasi | GA4 standardaruanded võivad ilmuda tundidepikkuse viivitusega; BigQuery striimimine maksab lisaks |
| Kulu suures mahus | Avatud lähtekood — kulu on ainult infrastruktuur, mis sisaldub tellimuses | Kasvab indeksite, vacuum'i ja riistvaraga suurtes mahtudes | BigQuery võtab tasu päritud mahu eest; GA enterprise-variant on kallis |
| Mõju saidi kiirusele | Asünkroonne kogumine, aruandlus eraldi süsteemis | Aruanded võivad samas andmebaasis tellimustega konkureerida | Kolmanda osapoole skript (gtag.js) lehel — lisaks JavaScript ja välised päringud |
Korduma kippuvad küsimused
Kas ClickHouse aeglustab minu saiti või e-poodi?
Ei. ClickHouse töötab lehti serveerivast süsteemist eraldi süsteemis — nii on arhitektuur kavandatud. Liiklussündmused saadetakse asünkroonselt ja aruanded ei puuduta kunagi e-poe andmebaasi.
Miks te ei kasuta lihtsalt Google Analyticsit?
Kolm põhjust. Andmed jäävad sinule, platvormi infrastruktuuri, mitte Google'isse. Sa ei vaja kolmanda osapoole jälgimisküpsiseid, seega on GDPR-ile vastavus lihtsam — 2022. aastal tunnistasid Austria, Prantsusmaa ja Itaalia asutused GA GDPR-iga mittevastavaks. Ja aruanded ilmuvad täielikena, mitte valimipõhiselt.
Mis vahe on ClickHouse'il ja PostgreSQL-il — miks mõlemad?
PostgreSQL on tehinguline andmebaas (OLTP): töötleb tellimusi, makseid ja laoseisu ükshaaval, korrektsuse garantiidega. ClickHouse on analüütiline andmebaas (OLAP): loeb aruannete jaoks korraga miljoneid sündmusi.
Kas minu liiklusandmed on turvalised ja GDPR-iga kooskõlas?
Jah — disaini tõttu. Statistika on first-party: asub platvormi infrastruktuuris, Euroopas, seda ei müüda ega jagata reklaamivõrgustikega. Lähenemine ei kasuta kolmanda osapoole jälgimisküpsiseid ning kasutaja andmed saab GDPR-i kohaselt nõudmisel kustutada.
Kui „reaalajas“ on statistika?
Sündmus — külastus, klõps, tellimus — muutub aruannetes nähtavaks pärast toimumist. Pikkade perioodide (kuud, aastad) päringud toimivad samuti, sest ClickHouse on ehitatud täpselt selliste päringute jaoks.
Kas ma pean midagi seadistama, et mu saidil statistika oleks?
Ei pea. Statistikamoodul on arendamisel ja ehitatud osana platvormist: kui see halduspaneelis aktiivseks muutub, algab kogumine avaldatud saitide jaoks automaatselt — ilma paigaldatavate skriptide ja väliste kontodeta.