Technologijos

← Pradžia
Analitika ir duomenys

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 / slenkstisTipinis naudojimas
Analitinis agregavimasMažiau nei sekundė per milijonus įvykių (stulpelinis + vektorizuotas)Lėtas ieškant vienos eilutės – netinka OLTP lookupSrauto ir pardavimų ataskaitos (statistikos modulis, kuriamas)
Įvykių priėmimasDideli kiekiai, rašomi paketaisMažiems ir dažniems įterpimams reikia batching / async insertPuslapių peržiūrų, paspaudimų, užsakymų rinkimas
Saugojimas ir suspaudimasStulpelinis suspaudimas (LZ4/ZSTD), kelis kartus mažesnis už neapdorotą kiekįLabai atsitiktiniai duomenys suspaudžiami mažiauMėnesių ir metų įvykių istorija už mažą kainą
Atnaujinimai ir trynimaiAsinchroninės mutations retiems pataisymamsNetinka dažniems UPDATE pavienėms eilutėmsBDAR trynimai (naudotojo duomenys pagal prašymą)
Materialized viewsIš anksto apskaičiuoti agregatai kiekvieno įrašymo metuAgregatus reikia apibrėžti iš anksto, kiekvienai ataskaitaiSkydeliai iš anksto agreguotais duomenimis: pardavimai pagal dieną, produktą, šaltinį
Realus laikasĮvykiai tampa užklausiami po jų įvykioTai ne milisekundžių lygio streaming sistemaGyva srauto ir konversijų statistika

ClickHouse ir PostgreSQL ir Google Analytics / BigQuery – analitikai

KriterijusClickHouse (4buildsite)PostgreSQL (analitikai)Google Analytics / BigQuery
Agregavimo greitis dideliais kiekiaisMaž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ė / BDARTavo duomenys, platformos infrastruktūroje, EuropojeTavo duomenys, tavo serveriuoseDuomenys pas „Google“; GA perdavimus į JAV ES institucijos 2022 m. paskelbė neatitinkančiais BDAR
Slapukai ir sutikimasBe trečiųjų šalių sekimo slapukųPriklauso nuo savo įgyvendinimoSekimui reikalinga sutikimo juosta
Realus laikasDuomenys 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 kiekiaisAtvirasis kodas – kaštai tik infrastruktūra, įtraukta į prenumeratąAuga su indeksais, vacuum ir aparatine įranga dideliems kiekiamsBigQuery apmokestina pagal užklausiamą apimtį; enterprise GA versija brangi
Įtaka svetainės greičiuiAsinchroninis rinkimas, ataskaitos kitoje sistemojeAtaskaitos gali konkuruoti su užsakymais toje pačioje bazėjeTreč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ų.

4b2b.net
Verslo ekosistema
4conta.ro
Buhalterinė apskaita
4invoices.net
Sąskaitų išrašymo programa
4expenses.net
Išlaidų valdymas
4notify.net
Pranešimai
4hosting.net
Svetainių talpinimas
4database.net
Duomenų bazės
4buildsite.net
Svetainių kūrimas
4myapp.net
Programėlių kūrimas
4avatars.net
DI avatarai
4chaty.net
DI pokalbių robotas
4webagency.net
Programa interneto agentūroms
4softedu.net
Svetainės švietimui
4softcrm.net
CRM platforma
4softerp.net
ERP sistema
4softhr.net
Personalo valdymas
4mystaff.net
Darbuotojų portalas
4myprojects.net
Projektų valdymas
4mycontracts.net
Sutartys
4docs.net
Dokumentų valdymas
4appointments.net
Vizitų registracija
4marketingonline.net
Rinkodara
4insurance.net
Draudimas
4property.net
Nekilnojamasis turtas
4lawyers.net
Programa advokatams
4mygarage.net
Autoservisas
4driving.net
Vairavimo mokyklos
4fleet.net
Autoparko valdymas
4myevents.net
Renginiai
4therapy.net
Terapija
4clinics.net
Klinikos
4dental.net
Odontologijos klinikos
4restaurants.net
Restoranai
4beautify.net
Grožio salonas
4gym.net
Sporto klubai
4guards.net
Apsaugos įmonės
4softvet.net
Veterinarijos klinikos
4softauto.net
Programinė įranga automobilių verslui
4construct.net
Statybos įmonės
4marketplace.net
Prekyvietė
4shopy.net
El. parduotuvė
4pricing.net
Kainų palyginimas
4salefood.net
Maisto pristatymas
4rentify.net
Nuoma
4transports.net
Transportas
4agencytravel.net
Kelionių agentūra
4hotel.net
Viešbučių valdymas
4ong.net
NVO valdymas