ClickHouse — מנוע האנליטיקה בזמן אמת בסטאק הפלטפורמה
הסטאק של 4buildsite כולל את ClickHouse — מסד נתונים עמודתי שנבנה במיוחד לאנליטיקה בנפחים גדולים. עליו אנו בונים את מודול סטטיסטיקות התנועה והמכירות של הפלטפורמה (בפיתוח): הנתונים נשארים שלכם, והדוחות רצים על מערכת נפרדת מהאתר — כך תוכננה הארכיטקטורה.
מהו ClickHouse ולמה אנחנו משתמשים בו
ClickHouse הוא מסד נתונים עמודתי מסוג OLAP (אנליטיקה מקוונת), שנוצר ב-Yandex עבור Yandex.Metrica — אחת ממערכות האנליטיקה הגדולות בעולם — ושוחרר כקוד פתוח ב-2016 תחת רישיון Apache 2.0. הוא נבנה למטרה אחת, שאותה הוא עושה היטב במיוחד: אגרגציות מהירות על נפחי נתונים עצומים. בארכיטקטורה של 4buildsite, ClickHouse הוא המנוע שנבחר לשכבת הסטטיסטיקות: כל ביקור, קליק והזמנה הופכים לאירוע שאפשר לנתח.
הסוד הוא אחסון עמודתי: במקום לקרוא כל «שורה» במלואה, ClickHouse קורא רק את העמודות שהדוח צריך ומעבד אותן בבלוקים גדולים ווקטוריים. לכן שאלה כמו «כמה מבקרים היו לי אתמול, לפי עמוד ולפי מקור» נענית גם על פני מיליוני אירועים — משהו שמסד נתונים קלאסי מבוסס שורות מתקשה בו.
זו אינה טכנולוגיית נישה: Cloudflare משתמשת בו לניתוח תעבורת HTTP בקנה מידה עולמי, ו-Uber, eBay ו-Spotify משתמשות בו לאנליטיקה ולעיבוד לוגים בנפחים עצומים. ב-4buildsite אותו מנוע הוא חלק מסטאק הפלטפורמה — בלי שתצטרכו לשכור צוות הנדסת נתונים.
סטטיסטיקות על מערכת נפרדת מהאתר — כך תוכנן המודול
מודול הסטטיסטיקות של הפלטפורמה נמצא בפיתוח, והארכיטקטורה שלו פשוטה: אירועי תנועה נאספים באופן אסינכרוני ונכתבים ל-ClickHouse, בנפרד לחלוטין מהשרתים שמגישים את הדפים שלכם. המבקרים שלכם אינם ממתינים לאנליטיקה: הדוחות רצים על מערכת נפרדת מהדף. אין סקריפט מעקב כבד של צד שלישי — האיסוף מינימלי ו-first-party.
הדוחות ב-panel.4buildsite.net יחושבו ישירות ב-ClickHouse: תנועה לפי עמוד, מקורות מבקרים, המרות, מכירות לפי מוצר. אגרגציות תכופות מחושבות מראש באמצעות materialized views בכל כתיבה, כך שלוח הבקרה לא מפעיל חישוב כבד בכל פעם שאתם מסתכלים בו.
- תנועה חיה: ביקורים, עמודים, מקורות והתקנים — ניתנים לשאילתה לאחר האיסוף
- מכירות לפי מוצר, הזמנות והמרות בחנות שלכם, מאוגדות לדוחות
- חודשים ושנים של היסטוריה בעלות נמוכה — הדחיסה העמודתית מקטינה את האחסון פי כמה לעומת הנתונים הגולמיים
- איסוף אסינכרוני, והדוחות רצים על מערכת נפרדת מהאתר
PostgreSQL + ClickHouse: למה אנחנו משתמשים בשניהם
סטאק הפלטפורמה משלב שני מסדי נתונים כי הם עושים דברים שונים מהותית. PostgreSQL הוא פנקס העסקאות (OLTP): הזמנות, תשלומים, מלאי, חשבונות משתמשים — פעולות שחייבות להיות נכונות לחלוטין אחת-אחת, עם ערבויות טרנזקציוניות. ClickHouse הוא חדר הניתוח (OLAP): מיליוני אירועים הנקראים בבת אחת כדי לענות על השאלות שלכם על תנועה ומכירות.
אילו דוחות כבדים רצו על אותו מסד נתונים שמעבד הזמנות, כל דוח היה מתחרה בלקוחות ששילמו באותו רגע. ההפרדה בין OLTP ל-OLAP מבטלת את הקונפליקט: הזמנה של לקוח לא ממתינה לדוח שלכם, והדוח שלכם לא ממתין להזמנות של אחרים. כל מנוע עושה בדיוק את מה שנבנה לעשות.
- PostgreSQL: הזמנות, תשלומי Stripe, מלאי, לקוחות — נכונות טרנזקציונית
- ClickHouse: אירועי תנועה, דוחות, סטטיסטיקות — אגרגציה בנפח גדול
- התכנון משכפל נתונים טרנזקציוניים רלוונטיים אל ClickHouse כאירועים, כך שדוחות מכירות לעולם לא נוגעים במסד הנתונים שמשרת את החנות שלכם
אנליטיקה first-party ידידותית לפרטיות — במקום Google Analytics
העיקרון של מודול הסטטיסטיקות: נתוני האתר שלכם נשארים בתשתית הפלטפורמה. הם לא נשלחים ל-Google או לרשתות פרסום אחרות, לא נמכרים ולא מצולבים עם פרופילי משתמשים חיצוניים. זו אנליטיקה first-party במובן המילולי: הנתונים על המבקרים שלכם הם שלכם.
מכיוון שהגישה אינה משתמשת בעוגיות מעקב של צד שלישי, העמידה ב-GDPR הופכת לפשוטה בהרבה. הקשר חשוב: ב-2022 רשויות הגנת המידע באוסטריה, בצרפת ובאיטליה קבעו ששימוש ב-Google Analytics אינו תואם ל-GDPR בשל העברות נתונים לארה״ב. באנליטיקה first-party המתארחת באירופה, כל קטגוריית הסיכון הזו נעלמת כבר בהתחלה.
יש גם יתרון מעשי ישיר: דוחות שמחושבים ב-ClickHouse אינם מדוגמים, בניגוד למה שקורה לא פעם בדוחות הסטנדרטיים של כלי אנליטיקה חינמיים.
דוחות חנות ו-marketplace — מה המודול יספק
בחנות מקוונת, ClickHouse יפרוש תשובות לשאלות החשובות: אילו מוצרים נמכרים, אילו מקורות מביאים לקוחות שאכן קונים, איפה עגלות נזנחות. ב-marketplace מרובה מוכרים, אותן אגרגציות ירוצו על כל ההזמנות: היקף לפי מוכר, עמלות, מוצרים מובילים לפי קטגוריה — בלי ייצוא ידני ובלי גיליונות אלקטרוניים.
ובקנה מידה גדול, הדברים נשארים זולים. הדחיסה העמודתית מקטינה את הנתונים פי כמה לעומת הפורמט הגולמי, כך שאפשר לשמור שנים של היסטוריה בעלות אחסון נמוכה. כשהתנועה גדלה מאלפים למיליוני אירועים, האגרגציות נשארות על אותו מנוע — המנוע תוכנן מלכתחילה למיליארדי שורות, ולא הותאם לכך בדיעבד.
יתרונות וחסרונות
יתרונות
- אגרגציות על מיליוני אירועים במנוע עמודתי.
- האנליטיקה רצה על מערכת נפרדת מזו שמגישה את הדפים.
- נתוני התנועה שלכם נשארים שלכם, בתשתית הפלטפורמה — בלי העברה ל-Google או לרשתות פרסום.
- בלי עוגיות מעקב של צד שלישי — עמידה פשוטה יותר ב-GDPR.
- דחיסה עמודתית חזקה — שנים של היסטוריה בעלות אחסון נמוכה.
- קוד פתוח (Apache 2.0), בלי רישיונות לפי נפח — העלות לא מזנקת כשהתנועה גדלה.
מגבלות
- אינו מסד נתונים טרנזקציוני — עדכון או מחיקה של שורות בודדות היא פעולה כבדה; לכן הזמנות ותשלומים נשמרים ב-PostgreSQL.
- מותאם לכתיבות גדולות באצוות; הרבה הכנסות קטנות ותכופות דורשות איגוד לאצוות — הפלטפורמה מטפלת בכך, אך זו מגבלה אמיתית של המנוע.
- JOIN מורכבים גמישים פחות מאשר ב-PostgreSQL — את סכמת האירועים צריך לתכנן לאנליטיקה מלכתחילה.
- שליפת שורה בודדת (point lookup) איטית יותר מאשר במסד OLTP עם אינדקסים — הוא אינו מחליף את מסד הנתונים הראשי של החנות.
סיכום קצר
ClickHouse הוא הבחירה הנכונה לאנליטיקה בנפח גדול: סטטיסטיקות תנועה ומכירות, עם הנתונים שלכם, על מערכת נפרדת מהאתר. להזמנות, תשלומים ומלאי נשאר PostgreSQL — ולכן הסטאק של 4buildsite משלב את שניהם, כל אחד במה שהוא עושה הכי טוב. מודול הסטטיסטיקות שנבנה על ClickHouse נמצא בפיתוח.
טבלת מפרט
| יכולת | מגבלה / סף | שימוש טיפוסי | |
|---|---|---|---|
| אגרגציות אנליטיות | אגרגציות על מיליוני אירועים (עמודתי + ווקטורי) | איטי בשליפת שורה בודדת — לא מתאים ל-point reads של OLTP | דוחות תנועה ומכירות (מודול הסטטיסטיקות, בפיתוח) |
| קליטת אירועים | נפחים גבוהים, נכתבים באצוות | הכנסות קטנות ותכופות דורשות batching / async insert | איסוף pageviews, קליקים, הזמנות |
| אחסון ודחיסה | דחיסה עמודתית (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 |
| עוגיות והסכמה | בלי עוגיות מעקב של צד שלישי | תלוי במימוש שלכם | דורש באנר הסכמה למעקב |
| עדכון נתונים | נתונים ניתנים לשאילתה לאחר האיסוף | אפשרי, אך דוחות כבדים מעמיסים על מסד הנתונים הטרנזקציוני | דוחות סטנדרטיים ב-GA4 יכולים להתעכב בשעות; streaming ב-BigQuery עולה כסף נוסף |
| עלות בנפח גדול | קוד פתוח — העלות היא רק תשתית, הכלולה במנוי | גדלה עם אינדקסים, vacuum וחומרה בנפחים גבוהים | BigQuery גובה לפי נפח שאילתות; שכבת ה-enterprise של GA יקרה |
| השפעה על מהירות האתר | איסוף אסינכרוני, דוחות על מערכת נפרדת | דוחות עלולים להתחרות בהזמנות על אותו מסד נתונים | סקריפט צד שלישי (gtag.js) בדף — JavaScript נוסף ובקשות חיצוניות |
שאלות נפוצות
האם ClickHouse מאט את האתר או החנות שלי?
לא. ClickHouse רץ על מערכת נפרדת מזו שמגישה את הדפים שלכם — כך תוכננה הארכיטקטורה. אירועי תנועה נשלחים באופן אסינכרוני, והדוחות לעולם לא נוגעים במסד הנתונים של החנות.
למה לא פשוט להשתמש ב-Google Analytics?
משלוש סיבות. הנתונים נשארים שלכם, בתשתית הפלטפורמה ולא אצל Google. אין צורך בעוגיות מעקב של צד שלישי, ולכן העמידה ב-GDPR פשוטה יותר — ב-2022 רשויות באוסטריה, בצרפת ובאיטליה קבעו ש-GA אינו תואם ל-GDPR. והדוחות מלאים, לא מדוגמים.
מה ההבדל בין ClickHouse ל-PostgreSQL — ולמה שניהם?
PostgreSQL הוא מסד הנתונים הטרנזקציוני (OLTP): הוא מעבד הזמנות, תשלומים ומלאי אחד-אחד, עם ערבויות נכונות. ClickHouse הוא מסד הנתונים האנליטי (OLAP): הוא קורא מיליוני אירועים בבת אחת עבור דוחות. ההפרדה גורמת לכך שדוח כבד אינו רץ על מסד ההזמנות של הלקוחות שלכם.
האם נתוני התנועה שלי בטוחים ותואמים ל-GDPR?
כן — מעצם התכנון. הסטטיסטיקות הן first-party: הן שוכנות בתשתית הפלטפורמה, באירופה, ולעולם לא נמכרות ולא משותפות עם רשתות פרסום. הגישה אינה משתמשת בעוגיות מעקב של צד שלישי, ואת נתוני המשתמש אפשר למחוק לפי בקשה, בהתאם ל-GDPR.
עד כמה הסטטיסטיקות עדכניות?
אירוע — ביקור, קליק, הזמנה — נעשה גלוי בדוחות לאחר שקרה. אגרגציות על פני תקופות ארוכות (חודשים, שנים) עדיין נענות היטב, כי ClickHouse נבנה בדיוק לסוג כזה של שאילתות.
האם אצטרך להגדיר משהו כדי לקבל סטטיסטיקות באתר שלי?
לא תצטרכו. מודול הסטטיסטיקות נמצא בפיתוח ונבנה כחלק מהפלטפורמה: ברגע שיעלה לאוויר בפאנל הניהול, האיסוף יתחיל אוטומטית עבור אתרים שפורסמו — בלי סקריפטים להתקנה ובלי חשבונות חיצוניים.