ClickHouse — аналитичкиот мотор во реално време во стекот на платформата
Стекот на 4buildsite вклучува ClickHouse — колонарна база на податоци изградена посебно за анализа во голем обем. Врз неа го градиме модулот за статистика на сообраќај и продажба на платформата (во развој): податоците остануваат твои, извештаите се градат врз собраните настани, а собирањето е одвоено од сајтот — така е дизајнирана архитектурата.
Што е ClickHouse и зошто го користиме
ClickHouse е колонарна база на податоци од типот OLAP (онлајн анализа), создадена во Yandex за Yandex.Metrica — еден од најголемите системи за веб анализа во светот — и објавена како open-source во 2016 година под лиценца Apache 2.0. Изградена е за една единствена работа, која ја прави исклучително: брзи агрегации врз огромни количини податоци. Во архитектурата на 4buildsite, ClickHouse е изборот на мотор за слојот на статистика: секоја посета, клик и нарачка станува настан што може да се анализира.
Тајната е складирањето по колони: наместо да го чита секој „ред“ целосно, ClickHouse ги чита само колоните што му се потребни на извештајот и ги обработува векторизирано, во големи блокови. Затоа прашање како „колку посетители имавме вчера, на секоја страница, од секој извор“ добива брз одговор дури и врз милиони настани — нешто што класичната база ориентирана по редови го решава многу потешко.
Не е нишна технологија: Cloudflare ја користи за анализа на HTTP сообраќајот во глобален обем, а Uber, eBay и Spotify ја користат за аналитика и обработка на логови во огромни количини. На 4buildsite, истиот мотор е дел од стекот на платформата — без да ангажираш тим од инженери за податоци.
Статистика во реално време, одвоена од твојот сајт — како е дизајниран модулот
Модулот за статистика на платформата е во развој, а неговата архитектура е едноставна: настаните за сообраќај се собираат асинхроно и се запишуваат во ClickHouse, целосно одвоено од серверите што ги испорачуваат страниците. Твоите посетители не чекаат на analytics: собирањето е одвоено од испораката на страницата, без оглед на тоа колку извештаи се извршуваат во тој момент. Нема тежок tracking скрипт од трета страна — собирањето е минимално и first-party.
Извештаите во panel.4buildsite.net ќе се пресметуваат директно во ClickHouse: сообраќај по страници, извори на посетители, конверзии, продажба по производ. Честите агрегации се претходно пресметуваат преку materialized views при секое запишување, па контролната табла не стартува тешка пресметка секој пат кога ја гледаш.
- Сообраќај во живо: посети, страници, извори и уреди — достапни за пребарување по собирањето
- Продажба по производ, нарачки и конверзии за твојата продавница, агрегирани во извештаите
- Историја по месеци и години со мал трошок — колонарната компресија го намалува складирањето повеќекратно во однос на суровите податоци
- Собирањето е асинхроно, известувањето се извршува на друг систем
PostgreSQL + ClickHouse: зошто ги користиме двете
Стекот на платформата комбинира две бази на податоци бидејќи прават суштински различни работи. PostgreSQL е регистарот на трансакции (OLTP): нарачки, плаќања, залиха, кориснички сметки — операции што мора да бидат совршено точни една по една, со трансакциски гаранции. ClickHouse е салата за анализа (OLAP): милиони настани читани одеднаш за да ти одговорат на прашања за сообраќајот и продажбата.
Ако тешките извештаи би се извршувале на истата база на податоци што ги обработува нарачките, секој извештај би се натпреварувал со клиентите што плаќаат во тој момент. Одвојувањето OLTP/OLAP го елиминира овој конфликт: нарачката на клиентот не чека на твојот извештај, а твојот извештај не чека на нарачките на другите. Секој мотор го прави токму она за што е изграден.
- PostgreSQL: нарачки, Stripe плаќања, залиха, клиенти — трансакциска исправност
- ClickHouse: настани за сообраќај, извештаи, статистика — агрегација во голем обем
- Дизајнот предвидува релевантните трансакциски податоци да стигнат во ClickHouse како настани, па извештаите за продажба никогаш не ја допираат базата што ја опслужува продавницата
Сопствен, privacy-friendly analytics — наместо Google Analytics
Принципот на модулот за статистика: податоците на твојот сајт остануваат на инфраструктурата на платформата. Не се праќаат до Google или други рекламни мрежи, не се продаваат и не се комбинираат со надворешни кориснички профили. Тоа е first-party analytics во вистинска смисла: податоците за твоите посетители се твои.
Бидејќи пристапот не користи cookies од трети страни за следење, усогласеноста со GDPR станува многу поедноставна. Контекстот е важен: во 2022 година, органите за заштита на податоци во Австрија, Франција и Италија прогласија дека употребата на Google Analytics не е во согласност со GDPR поради трансферите на податоци во САД. Со сопствен analytics, хостиран во Европа, оваа категорија ризик исчезнува од почеток.
Постои и директна практична корист: извештаите пресметани во ClickHouse не се семплирани и не се појавуваат со доцнење од часови, како што се случува со стандардните извештаи во бесплатните analytics алатки. Целосни бројки.
Извештаи за продавница и marketplace — што ќе испорача модулот
За онлајн продавница, ClickHouse ќе значи одговори на прашањата што се важни: кои производи се продаваат, од кои извори доаѓаат клиентите што купуваат, каде се напуштаат кошничките. За multi-vendor marketplace, истите агрегации ќе се извршуваат врз сите нарачки: обем по продавач, провизии, топ производи по категорија — без рачни извози и без табеларни пресметки.
И во голем обем нештата остануваат евтини и брзи. Колонарната компресија ги намалува податоците повеќекратно во однос на суровиот формат, па чуваш историја од години со мал трошок за складирање. А кога сообраќајот расте од илјадници до милиони настани, агрегациите остануваат брзи — моторот е дизајниран од почеток за милијарди редови, а не прилагодуван потоа.
Предности и ограничувања
Предности
- Агрегации врз милиони настани — извештаи.
- Analytics-от се извршува на систем одвоен од оној што ги сервира страниците.
- Податоците за сообраќај остануваат твои, на инфраструктурата на платформата — без трансфер до Google или рекламни мрежи.
- Без cookies од трети страни за следење — поедноставна усогласеност со GDPR.
- Моќна колонарна компресија — историја од години со мал трошок за складирање.
- Open-source (Apache 2.0), без лиценци по обем — трошокот не експлодира кога расте сообраќајот.
Ограничувања
- Не е трансакциска база на податоци — менувањето или бришењето на поединечни редови е тешка операција; затоа нарачките и плаќањата стојат во PostgreSQL.
- Оптимизирана за запишување во големи пакети; многу мали и чести insert-и бараат batching — платформата го управува тоа, но е вистинска граница на моторот.
- Сложените JOIN-ови се помалку флексибилни отколку во PostgreSQL — шемата на настани мора да се дизајнира за анализа од почеток.
- Пребарувањето на еден ред (point lookup) е побавно отколку во индексирана OLTP база — не ја заменува главната база на продавницата.
Кус заклучок
ClickHouse е правилниот избор за аналитика во голем обем: статистика на сообраќај и продажба во реално време, со твоите податоци, со собирање одвоено од сајтот. За нарачки, плаќања и залиха останува PostgreSQL — затоа стекот на 4buildsite ги комбинира двете, секое во она за што е најдобро. Модулот за статистика изграден врз ClickHouse е во развој.
Табела со спецификации
| Можност | Граница / праг | Типична употреба | |
|---|---|---|---|
| Аналитички агрегации | Брзи агрегации врз милиони настани (колонарно + векторизирано) | Бавно при пребарување на еден ред — не е за OLTP lookups | Извештаи за сообраќај и продажба (модулот за статистика, во развој) |
| Прием на настани | Големи обеми, запишувани во пакети | Малите и чести insert-и бараат batching / async insert | Собирање pageview-и, кликови, нарачки |
| Складирање & компресија | Колонарна компресија (LZ4/ZSTD), повеќекратно под суровиот обем | Многу случајните податоци се компресираат помалку | Историја на настани по месеци и години, со мал трошок |
| Ажурирања & бришења | Асинхрони mutations за повремени корекции | Непогодно за чести UPDATE-и врз поединечни редови | GDPR бришења (податоците на корисник, на барање) |
| Materialized views | Претходно пресметани агрегати при секое запишување | Агрегатите мора однапред да се дефинираат, по извештај | Контролни табли: продажба по ден, производ, извор |
| Реално време | Настаните стануваат достапни за пребарување по нивното собирање | Не е streaming систем на ниво на милисекунда | Статистика во живо за сообраќај и конверзии |
ClickHouse наспроти PostgreSQL наспроти Google Analytics / BigQuery — за аналитика
| Критериум | ClickHouse (4buildsite) | PostgreSQL (за аналитика) | Google Analytics / BigQuery |
|---|---|---|---|
| Брзина на агрегации во голем обем | Брзи агрегации врз милиони редови | Видливо опаѓа врз десетици милиони редови (складирање по редови) | BigQuery брз; GA4 има стандардни претходно агрегирани извештаи, без слободни упити |
| Сопственост на податоците / GDPR | Твои податоци, на инфраструктурата на платформата, во Европа | Твои податоци, на твоите сервери | Податоците кај Google; трансферите на GA во САД прогласени за неусогласени со GDPR од органи на ЕУ во 2022 |
| Cookies & согласност | Без cookies од трети страни за следење | Зависи од сопствената имплементација | Бара банер за согласност за следење |
| Реално време | Податоците стануваат достапни за пребарување по собирањето | Можно, но тешките извештаи ја оптоваруваат трансакциската база | Стандардните GA4 извештаи може да се појават со доцнење од часови; BigQuery streaming чини дополнително |
| Трошок во голем обем | Open-source — трошокот е само инфраструктурата, вклучена во претплатата | Расте со индекси, vacuum и хардвер при големи обеми | BigQuery наплаќа по обем на пребаран податок; enterprise варијантата на GA е скапа |
| Влијание врз брзината на сајтот | Асинхроно собирање, известување на одвоен систем | Извештаите можат да се натпреваруваат со нарачките на истата база | Скрипт од трета страна (gtag.js) во страницата — дополнителен JavaScript и надворешни барања |
Често поставувани прашања
Дали ClickHouse го забавува мојот сајт или продавница?
Не. ClickHouse работи на систем одвоен од оној што ги сервира страниците — така е дизајнирана архитектурата. Настаните за сообраќај се праќаат асинхроно, а извештаите никогаш не ја допираат базата на податоци на продавницата. Собирањето на статистиката не е дел од патот на вчитување на страницата.
Зошто не користите едноставно Google Analytics?
Три причини. Податоците остануваат твои, на инфраструктурата на платформата, а не кај Google. Не ти требаат cookies од трети страни за следење, па усогласеноста со GDPR е поедноставна — во 2022 година, органи од Австрија, Франција и Италија прогласија дека GA не е во согласност со GDPR. И извештаите се целосни, не семплирани или одложени со часови.
Која е разликата меѓу ClickHouse и PostgreSQL — зошто двете?
PostgreSQL е трансакциската база (OLTP): обработува нарачки, плаќања и залиха, една по една, со гаранции за исправност. ClickHouse е аналитичката база (OLAP): чита милиони настани одеднаш за извештаи. Одвојувањето значи дека тежок извештај никогаш не ги забавува нарачките на твоите клиенти.
Дали моите податоци за сообраќај се безбедни и усогласени со GDPR?
Да — по дизајн. Статистиката е first-party: стои на инфраструктурата на платформата, во Европа, не се продава и не се споделува со рекламни мрежи. Пристапот не користи cookies од трети страни за следење, а податоците на корисник можат да се избришат на барање, согласно GDPR.
Колку „во реално време“ е статистиката?
Настан — посета, клик, нарачка — станува видлив во извештаите откако ќе се собере. Агрегациите за долги периоди (месеци, години) се извршуваат брзо, бидејќи ClickHouse е изграден токму за овој вид упити.
Дали треба нешто да конфигурирам за да имам статистика на мојот сајт?
Нема да е потребно. Модулот за статистика е во развој и е изграден како дел од платформата: кога ќе стане активен во админ панелот, собирањето стартува автоматски за објавените сајтови — без скрипти за инсталирање и без надворешни сметки.