ClickHouse — silnik analityki w czasie rzeczywistym w stacku platformy
Stack 4buildsite obejmuje ClickHouse — kolumnową bazę danych stworzoną specjalnie do analizy dużych wolumenów. Na niej budujemy moduł statystyk ruchu i sprzedaży platformy (w budowie): dane pozostają Twoje, a zbieranie zdarzeń jest oddzielone od serwowania Twojej strony — tak zaprojektowano tę architekturę.
Czym jest ClickHouse i dlaczego go używamy
ClickHouse to kolumnowa baza danych typu OLAP (analiza w trybie online), stworzona w Yandeksie na potrzeby Yandex.Metrica — jednego z największych systemów analityki internetowej na świecie — i udostępniona jako otwarte oprogramowanie w 2016 roku na licencji Apache 2.0. Zbudowano ją do jednego zadania, które wykonuje wyjątkowo dobrze: szybkich agregacji na ogromnych wolumenach danych. W architekturze 4buildsite ClickHouse jest silnikiem wybranym do warstwy statystyk: każda wizyta, każde kliknięcie i każde zamówienie staje się zdarzeniem gotowym do analizy.
Sekret tkwi w przechowywaniu kolumnowym: zamiast czytać każdy „wiersz” w całości, ClickHouse czyta wyłącznie kolumny potrzebne raportowi i przetwarza je wektorowo, w dużych blokach. Dlatego pytanie w rodzaju „ilu miałem wczoraj odwiedzających, w podziale na strony i źródła” otrzymuje odpowiedź nawet przy milionach zdarzeń — z czym klasyczna baza wierszowa radzi sobie znacznie trudniej.
To nie jest technologia niszowa: Cloudflare wykorzystuje ją do analizy ruchu HTTP w skali globalnej, a Uber, eBay i Spotify — do analityki i przetwarzania logów przy ogromnych wolumenach. Na 4buildsite ten sam silnik stanowi część stacku platformy, bez potrzeby zatrudniania zespołu inżynierów danych.
Statystyki w czasie rzeczywistym poza serwowaniem strony — jak zaprojektowano moduł
Moduł statystyk platformy jest w budowie, a jego architektura jest prosta: zdarzenia ruchu zbiera się asynchronicznie i zapisuje w ClickHouse, całkowicie osobno od serwerów serwujących strony. Odwiedzający nie czekają na analitykę — zbieranie danych działa osobno od serwowania strony, więc liczenie raportów nie dotyka tego, co widzi odwiedzający. Nie ma ciężkiego skryptu śledzącego innej firmy, który obciążałby stronę — zbieranie danych jest minimalne i odbywa się w obrębie własnego serwisu.
Raporty w panel.4buildsite.net będą liczone bezpośrednio w ClickHouse: ruch na stronach, źródła odwiedzin, konwersje, sprzedaż według produktu. Częste agregacje są wyliczane z wyprzedzeniem przez widoki zmaterializowane przy każdym zapisie, więc pulpit nie uruchamia ciężkich obliczeń za każdym razem, gdy na niego patrzysz.
- Ruch na żywo: wizyty, strony, źródła i urządzenia — dostępne do odpytania po zebraniu danych
- Sprzedaż według produktu, zamówienia i konwersje Twojego sklepu, zagregowane na potrzeby raportów
- Historia z miesięcy i lat niewielkim kosztem — kompresja kolumnowa zmniejsza zajętość pamięci kilkukrotnie wobec danych surowych
- Zbieranie danych odbywa się poza serwowaniem strony: jest asynchroniczne, a raportowanie działa na innym systemie
PostgreSQL i ClickHouse: dlaczego używamy obu
Stack platformy łączy dwie bazy danych, ponieważ robią one zasadniczo różne rzeczy. PostgreSQL to rejestr transakcyjny (OLTP): zamówienia, płatności, stany magazynowe, konta użytkowników — operacje, które muszą być idealnie poprawne każda z osobna, z gwarancjami transakcyjnymi. ClickHouse to sala analiz (OLAP): miliony zdarzeń czytanych naraz, by odpowiedzieć na Twoje pytania o ruch i sprzedaż.
Gdyby ciężkie raporty działały na tej samej bazie, która obsługuje zamówienia, każdy raport konkurowałby z klientami płacącymi w danym momencie. Rozdzielenie OLTP i OLAP usuwa ten konflikt: zamówienie klienta nie czeka na Twój raport, a Twój raport nie czeka na cudze zamówienia. Każdy silnik robi dokładnie to, do czego go zbudowano.
- PostgreSQL: zamówienia, płatności Stripe, stany magazynowe, klienci — poprawność transakcyjna
- ClickHouse: zdarzenia ruchu, raporty, statystyki — agregacja przy dużych wolumenach
- Projekt zakłada, że istotne dane transakcyjne trafiają do ClickHouse jako zdarzenia, więc raporty sprzedaży nigdy nie sięgają do bazy obsługującej sklep
Własna analityka przyjazna prywatności — zamiast Google Analytics
Zasada modułu statystyk: dane Twojej strony zostają na infrastrukturze platformy. Nie trafiają do Google'a ani do innych sieci reklamowych, nie są sprzedawane i nie są łączone z zewnętrznymi profilami użytkowników. To analityka własna w ścisłym sensie: dane o Twoich odwiedzających należą do Ciebie.
Ponieważ takie podejście nie używa zewnętrznych plików cookie śledzących, zgodność z RODO staje się znacznie prostsza. Kontekst ma znaczenie: w 2022 roku organy ochrony danych z Austrii, Francji i Włoch uznały korzystanie z Google Analytics za niezgodne z RODO ze względu na transfery danych do USA. Przy własnej analityce hostowanej w Europie ta kategoria ryzyka znika od samego początku.
Jest też bezpośrednia korzyść praktyczna: raporty liczone w ClickHouse nie są próbkowane ani opóźnione o godziny, jak bywa w standardowych raportach darmowych narzędzi analitycznych. Pełne liczby.
Raporty sklepu i marketplace'u — co dostarczy moduł
Dla sklepu internetowego ClickHouse będzie dawał odpowiedzi na pytania, które mają znaczenie: które produkty się sprzedają, z jakich źródeł przychodzą kupujący, gdzie porzucane są koszyki. Dla marketplace'u z wieloma sprzedawcami te same agregacje obejmą wszystkie zamówienia: wolumen według sprzedawcy, prowizje, najlepsze produkty w kategorii — bez ręcznych eksportów i bez arkuszy kalkulacyjnych.
Także przy dużej skali przechowywanie pozostaje tanie. Kompresja kolumnowa zmniejsza dane kilkukrotnie wobec formatu surowego, więc zachowujesz wieloletnią historię przy niewielkim koszcie przechowywania. A gdy ruch rośnie z tysięcy do milionów zdarzeń, silnik nadal obsługuje agregacje — od początku projektowano go dla miliardów wierszy, a nie dostosowywano później.
Zalety i ograniczenia
Zalety
- Agregacje na milionach zdarzeń — raporty liczone przez silnik zaprojektowany pod analizę dużych wolumenów.
- Zbieranie danych jest oddzielone od systemu, który serwuje strony: analityka działa na osobnym systemie.
- Dane o ruchu pozostają Twoje, na infrastrukturze platformy — bez transferu do Google'a i sieci reklamowych.
- Bez zewnętrznych plików cookie śledzących — prostsza zgodność z RODO.
- Silna kompresja kolumnowa — wieloletnia historia przy niewielkim koszcie przechowywania.
- Otwarty kod (Apache 2.0), bez licencji zależnych od wolumenu — koszt nie eksploduje, gdy rośnie ruch.
Ograniczenia
- To nie jest baza transakcyjna — zmiana albo usunięcie pojedynczych wierszy to ciężka operacja; dlatego zamówienia i płatności zostają w PostgreSQL.
- Zoptymalizowany pod zapisy w dużych partiach; wiele drobnych, częstych wstawień wymaga grupowania — platforma to obsługuje, ale pozostaje to realnym ograniczeniem silnika.
- Złożone złączenia JOIN są mniej elastyczne niż w PostgreSQL — schemat zdarzeń trzeba zaprojektować pod analizę od samego początku.
- Wyszukanie pojedynczego wiersza (point lookup) jest wolniejsze niż w indeksowanej bazie OLTP — to rozwiązanie nie zastępuje głównej bazy sklepu.
Krótki werdykt
ClickHouse to właściwy wybór do analityki dużych wolumenów: statystyki ruchu i sprzedaży w czasie rzeczywistym, na Twoich danych, bez wpływu na serwowanie strony. Zamówienia, płatności i stany magazynowe zostają w PostgreSQL — dlatego stack 4buildsite łączy oba rozwiązania, każde w tym, w czym jest najlepsze. Moduł statystyk zbudowany na ClickHouse jest w budowie.
Tabela specyfikacji
| Możliwość | Limit / próg | Typowe zastosowanie | |
|---|---|---|---|
| Agregacje analityczne | Poniżej sekundy na milionach zdarzeń (kolumnowo i wektorowo) | Wolny przy wyszukiwaniu pojedynczego wiersza — nie służy do odczytów OLTP | Raporty ruchu i sprzedaży (moduł statystyk, w budowie) |
| Przyjmowanie zdarzeń | Duże wolumeny, zapisywane partiami | Drobne, częste wstawienia wymagają grupowania lub zapisu asynchronicznego | Zbieranie odsłon, kliknięć i zamówień |
| Przechowywanie i kompresja | Kompresja kolumnowa (LZ4/ZSTD), kilkukrotnie poniżej surowego wolumenu | Dane bardzo losowe kompresują się słabiej | Historia zdarzeń z miesięcy i lat, niewielkim kosztem |
| Aktualizacje i usuwanie | Asynchroniczne mutacje do sporadycznych korekt | Nieodpowiedni do częstych operacji UPDATE na pojedynczych wierszach | Usuwanie danych na podstawie RODO (dane użytkownika, na żądanie) |
| Widoki zmaterializowane | Agregaty wyliczane z wyprzedzeniem przy każdym zapisie | Agregaty trzeba zdefiniować wcześniej, osobno dla każdego raportu | Natychmiastowe pulpity: sprzedaż według dnia, produktu i źródła |
| Czas rzeczywisty | Zdarzenia można odpytywać po ich wystąpieniu | To nie jest system strumieniowy na poziomie milisekund | Statystyki ruchu i konwersji na żywo |
ClickHouse a PostgreSQL i Google Analytics / BigQuery — na potrzeby analityki
| Kryterium | ClickHouse (4buildsite) | PostgreSQL (do analityki) | Google Analytics / BigQuery |
|---|---|---|---|
| Szybkość agregacji przy dużym wolumenie | Poniżej sekundy na milionach wierszy | Wyraźnie spada przy dziesiątkach milionów wierszy (przechowywanie wierszowe) | BigQuery jest szybki; GA4 daje wstępnie zagregowane raporty standardowe, bez swobodnych zapytań |
| Własność danych i RODO | Twoje dane, na infrastrukturze platformy, w Europie | Twoje dane, na Twoich serwerach | Dane trafiają do Google'a; transfery GA do USA organy UE uznały w 2022 roku za niezgodne z RODO |
| Pliki cookie i zgoda | Bez zewnętrznych plików cookie śledzących | Zależy od własnej implementacji | Wymaga banera zgody na śledzenie |
| Czas rzeczywisty | Dane dostępne do odpytania po zapisaniu | Możliwe, ale ciężkie raporty obciążają bazę transakcyjną | Standardowe raporty GA4 potrafią pojawiać się z godzinami opóźnienia; strumieniowanie w BigQuery kosztuje dodatkowo |
| Koszt przy dużym wolumenie | Otwarty kod — kosztem jest wyłącznie infrastruktura, wliczona w abonament | Rośnie wraz z indeksami, procesem vacuum i sprzętem przy dużych wolumenach | BigQuery nalicza opłatę za odpytany wolumen; wersja korporacyjna GA jest kosztowna |
| Wpływ na szybkość strony | Brak bezpośredniego wpływu — asynchroniczne zbieranie danych, raportowanie na osobnym systemie | Raporty potrafią konkurować z zamówieniami na tej samej bazie | Skrypt innej firmy (gtag.js) w stronie — dodatkowy JavaScript i zapytania zewnętrzne |
Najczęstsze pytania
Czy ClickHouse spowalnia moją stronę albo sklep?
Nie. ClickHouse działa na systemie oddzielonym od tego, który serwuje strony — tak zaprojektowano architekturę. Zdarzenia ruchu wysyłane są asynchronicznie, a raporty nigdy nie sięgają do bazy danych sklepu.
Dlaczego nie używacie po prostu Google Analytics?
Z trzech powodów. Dane pozostają Twoje, na infrastrukturze platformy, a nie u Google'a. Nie potrzebujesz zewnętrznych plików cookie śledzących, więc zgodność z RODO jest prostsza — w 2022 roku organy z Austrii, Francji i Włoch uznały GA za niezgodne z RODO. A raporty są kompletne, bez próbkowania i bez wielogodzinnych opóźnień.
Czym różni się ClickHouse od PostgreSQL i po co oba?
PostgreSQL to baza transakcyjna (OLTP): przetwarza zamówienia, płatności i stany magazynowe pojedynczo, z gwarancją poprawności. ClickHouse to baza analityczna (OLAP): czyta miliony zdarzeń naraz na potrzeby raportów. Rozdzielenie sprawia, że ciężki raport nie dotyka zamówień Twoich klientów.
Czy moje dane o ruchu są bezpieczne i zgodne z RODO?
Tak — z założenia. Statystyki są własne: leżą na infrastrukturze platformy w Europie, nie są sprzedawane ani udostępniane sieciom reklamowym. Podejście nie korzysta z zewnętrznych plików cookie śledzących, a dane użytkownika można usunąć na żądanie, zgodnie z RODO.
Na ile statystyki działają „w czasie rzeczywistym”?
Zdarzenie — wizyta, kliknięcie, zamówienie — staje się widoczne w raportach po tym, jak nastąpiło. Agregacje za długie okresy (miesiące, lata) także są wykonywane sprawnie, bo ClickHouse zbudowano właśnie pod takie zapytania.
Czy muszę coś skonfigurować, żeby mieć statystyki na swojej stronie?
Nie będzie takiej potrzeby. Moduł statystyk jest w budowie i powstaje jako część platformy: gdy zostanie uruchomiony w panelu administracyjnym, zbieranie danych ruszy automatycznie dla opublikowanych stron — bez skryptów do instalacji i bez zewnętrznych kont.