אגמי נתונים וצבירת זרימה
1) מטרה וערך
Data Lakehouse - שכבת ייחוס של אחסון ארוך טווח וקריאה בקנה מידה גדול, שבו:- נחלים ממוצרים/משחקים/תשלומים נוחתים בברונזה.
- כסף מנרמל ומעשיר, מספק מפתחות עקביים ואיכות.
- תערוכות זהב (כולל ריאל/כמעט בזמן אמת) עבור BI, רגולטור, אנטי הונאה/RG.
צבירה של זרימות על לייקהאוס מניבה: איחור דו "ח נמוך, עלות צפויה, רבייה, וזיהוי פלילי.
2) ארכיטקטורת התייחסות
1. Inneget/Edge: HTTP/gRPC, OTEL, Etch endpoints).
2. ברונזה (Append-only): טבלאות אחסון אובייקט + ACID (דלתא/קרחון/האדי), מחיצות לפי תאריך/שוק/דייר; אחסון של המטען המקורי.
3. מחשוב זרם: חליל/ניצוץ/קרן - יחידות חלון, CEP, Deatup, Online-Lookups.
4. כסף (נקי/קונפורם): נורמליזציה של מטבע/זמן, FK/ספריות, SCD למדידות.
5. הגשה/OLAP: ClickHouse/Pinot/Druid - צבירה של דקה/שנייה עבור לוחות.
6. זהב (הגשה): תצוגה יומית/שעתית של תיקים, פרוסות רגולטוריות, חבילות יצוא בלתי ניתנות לשינוי (תולעת).
7. לולאות בקרה: Schema Registry, DQ-as-code, lineage, ספריות, סודות/KMS, RBAC/ABAC.
3) חוזים ותוכניות
Schema-first: JSON/Avro/Protobuf; שדות נדרשים הם "event _ time" (UTC), "event _ id'," trace _ id', "user _ pseudo _ id'," market "," schema _ version ".
אבולוציה: התאמה אחורית. # שבירת '/v2 '+ כניסה כפולה.
תיקייה: תיאור תחום, בעלים, SLA טרי, כללי DQ, שושלת.
4) נחיתה בנחלים לתוך האגם
בדיוק פעם אחת בתחתית: לפחות פעם אחת פרסום + כיור אידמפוטנטי (MERGE/upsert by "event _ id').
דדופ: סטטיסטי בזרם + ייחודיות בסילבר.
דחיסת קבצים: קבצים קטנים * OPTIMIZE/VACUM רגיל לקריאה ועלות.
מסע בזמן: כולל דיבוג, שידור חוזר וביקורת.
sql
CREATE TABLE bronze. payment_events (
event_id STRING, user_pseudo_id STRING, currency STRING,
amount DECIMAL(18,2), market STRING, event_time TIMESTAMP, payload STRING
)
PARTITIONED BY (days(event_time), market);
5) הצטברות זרם: חלונות וסימני מים
חלונות:- מתגלגל - קבוע (למשל. 1 min/5 min) עבור לוחות יציבים.
- מקפץ - חופף (שלב <חלון) עבור מדדים ”חלקים”.
- הפערים ההתנהגותיים בחוסר פעילות.
- סימני מים: בקרת נתונים מאוחרת (בדרך כלל 2-5 דקות), כללי קדם-הנפקה/תיקון.
sql
SELECT market,
TUMBLE_START(event_time, INTERVAL '1' MINUTE) AS ts_min,
COUNT() AS deposits_1m,
SUM(amount_base) AS sum_1m
FROM silver. payments
GROUP BY market, TUMBLE(event_time, INTERVAL '1' MINUTE);
6) התממשות של אגרגטים
מנוע OLAP (ClickHouse/Pinot/Druid): חנויות דקות/שני אגרגטים ללוחות מחוונים וניתוחים מבצעיים.
Lakehouse Gold: שומר פרוסות יום/שעה לדיווח ופיוס (רבייה).
sql
CREATE MATERIALIZED VIEW mv_ggr_1m
ENGINE = AggregatingMergeTree()
PARTITION BY toDate(event_time)
ORDER BY (toStartOfMinute(event_time), market, provider_id) AS
SELECT toStartOfMinute(event_time) AS ts_min,
market,
provider_id,
sumState(stake_base) AS s_stake,
sumState(payout_base) AS s_payout
FROM stream. game_events
GROUP BY ts_min, market, provider_id;
פרוסת יום זהב (בית לייקהאוס):
sql
CREATE OR REPLACE VIEW gold. ggr_daily AS
SELECT
DATE(event_time) AS event_date,
market, provider_id,
SUM(stake_base) AS stakes_eur,
SUM(payout_base) AS payouts_eur,
SUM(stake_base) - SUM(payout_base) AS ggr_eur
FROM silver. fact_game_financials
GROUP BY 1,2,3;
7) כסף: נורמליזציה ופיוס
זמן ומטבע: ”אירוע _ זמן (UTC)”, ”כמות _ בסיס”, ”fx _ rate _ used”, ”fx _ source”.
מפתחות/ספריות: "user _ pseudo _ id'," game _ id', "despective _ id'," market ".
SCD II: היסטוריזציה של ממדים (משתמשים/משחקים/ספקים/RG/KYC).
כללי DQ: ייחודיות מפתח, ספריות, טווחי כמות, תוקף זמני.
8) רשום יחידות והגדרות ”נכונות”
שכבה סמנטית: נוסחאות GGR/NGR אחידות, הימורים/ניצחונות, המרה, ARPU, latency p95.
מדדי ורסיונינג: ”metric _ version” וחישובי ”as-of”.
דוחות: בעלים, נוסחה, מקורות, מוכנות SLA.
9) בדיוק-פעם/אידמפוטנטיות וסדר
אוטובוס: לפחות פעם אחת + מחיצה (סדר מקומי).
עיבוד: dedup by "event _ id' (TTL 24-72h), אופרטורי CEP/חלונות עם התאמות.
כיור: התחייבויות עסקיות או אידמפוטנטיות כלפי מעלה/מיזוג.
Outbox/Inbox: פרסום אירועי דומיין מ OLTP עם אחריות.
10) נתונים מאוחרים והתאמות
איחור מורשה: 2-5 דקות לתצוגות מבצעיות; הרכבה יומית לגולד.
תיקונים: פליטות נוספות ב ־ OLAP ורמיסת הזהב (idempotent).
דגלים: 'מאוחר = נכון', 'תיקון _ של = <אירוע _ id>' עבור ביקורת.
11) יכולת תצפית ו ־ DQ
SLI/SLO (ציוני דרך):- p95 לבלוע = 1 - min showcase 2-5 s; זהב יומי מוכן עד 06:00 מנעול.
- שלמות ב-99. 5%; סכימה תוקף 99. 9%; כיסוי עקבות ב-98%.
- מדדי צינור: lag/breadput/hose time/state mide, late-ratio, dup-rate.
- לוחות מחוונים: רעננות/שלמות/תוקף, משפך הפסד, כרטיס חם.
- שושלת היוחסין: הדרך מברונזה לזהב/יצוא; ניתוח השפעה על שינויים.
12) פרטיות, תושבות, ביטחון
מזעור PII: פסאודונימיזציה, מיפוי מוגן נפרד.
תושבות: EEA/UK/BR - ספריות נפרדות ומפתחות הצפנה; לאסור מצטרפים צולבים-אזוריים ללא סיבה.
הצפנה: TLS במעבר; KMS/CMK at-rest; יצוא חתימות + תולעת בחנק.
DSAR/RTBF/Legal Hold: עריכה סלקטיבית, הקפאת מחיקה, נגישות לביקורת.
13) ביצועים ועלות
מחיצה: לפי תאריך/שוק/דייר; סדר קיבוצי/Z על ידי תכונות סינון תכופות.
דחיפה: ביטול קבצים קטנים, אופטימיזציה רגילה/ואקום.
התממשות: דקות/שניות - ב- OLAP; יום/שעות - בגולד.
אחסון משובץ: חם/חם/קר, התאוששות SLA, החזרת מטען לפי פקודה (עלות/GB, עלות/שאילתה).
הגדרה מראש/סקיצות: HyperLoglog/ashix-להבדיל במקום המקובל.
14) דוגמאות (קטעים)
Flink CEP - הפקדת מבנה (10 דקות):python if count_deposits(window=10MIN) >= 3 \
and sum_deposits(window=10MIN) > THRESH \
and all(d. amount < REPORTING_LIMIT for d in window_events):
emit_alert("AML_STRUCTURING", user_id, snapshot())
SQL - dedup כאשר נטען לתוך כסף:
sql
CREATE TABLE silver. payments AS
SELECT EXCEPT(rn) FROM (
SELECT p., ROW_NUMBER() OVER (PARTITION BY event_id ORDER BY event_time) rn
FROM bronze. payment_events p
) WHERE rn = 1;
קרחון/דלתא - MERGE idempotent:
sql
MERGE INTO silver. fact_bets s
USING stage. fact_bets_delta d
ON s. bet_id = d. bet_id
WHEN MATCHED THEN UPDATE SET
WHEN NOT MATCHED THEN INSERT;
15) תהליכים ו ־ RACI
R (אחראי):- פלטפורמת נתונים (Lakehouse/catalog/ACID, compaction),
- הזרמה (יחידות/CEP/dedup),
- Domain Analytics (מדטים/זהב).
- א '(אחראי): ראש הנתונים/CDO.
- C (ייעוץ): Complication/Legal/DPO (PII/Residency/Legal Hold), Finance (FX/GGR), SRE (SLO/Security).
- אני (מושכל): BI/מוצר/שיווק/מבצעים.
16) מימוש מפת דרכים
MVP (3-5 שבועות):1. האגם ברונזה/כסף (שולחנות חומצה), בלע קפקא, מזימות רישום.
2. יחידות זרם בסיסיות (1-5 דקות) ב ־ OLAP; הצגת זהב. ggr_daily (D + 1 עד 06:00).
3. DQ-as-קוד עבור תשלומים/משחק, רעננות/לוחות מחוונים שלמים.
4. Compaction/OPTIMIZE, מדדי עלות מינימליים והתראות lag/late/dup.
שלב 2 (5-10 שבועות):- סיומת כסף (SCD II למשתמשים/משחקים/ספקים), ניתוח שושלות והשפעה.
- Lookups Asynchronous (RG/KYC/ASN/BIN), בקרת תיקון מאוחרת.
- שכבה סמנטית של מדדים, תקנות ייצוא (WORM/חתימות).
- רב-אזורי, סימולטור DR/הילוך חוזר, חלונות מתכווננים אוטומטית וסימני מים.
- לוחות-מחוונים, צ 'רקבק/מכסות, אחסון מרוצף וארכיון.
- דור אוטומטי של תיעוד תצוגה וכרטיסי מדדים.
17) רשימת בדיקות לפני המכירה
[ ] מזימות וחוזים בקופה; בדיקות גיבוי ירוקות.
[ ] דדאפ, סימן מים/איחור מותר, כולל DLQ.
[ ]/אופטימיזציה/ואקום מוגדרת לפי לוח הזמנים.
[ ] SLO: p95 בלע * מבט-דקה, זהב 06:00; מתריע לג/מאוחר/dup/גודל המדינה.
[ ] כללי DQ פעילים; שושלת היוחסין נראית מברונזה ליצוא.
[ ] RBAC/ABAC; נבחנה התמחות ו-DSAR/RTBF/Legal Hold.
[ ] עלות תחת שליטה (עלות/GB, עלות/שאילתה, נתח קר), מגבלות על שידור חוזר.
18) אנטי דפוסים וסיכונים
ערבוב מידע גולמי ומדווח באותה הטבלה: מפר את הרבייה.
חוסר דחיסה: פיצוץ קבצים קטנים = = בקשות יקרות.
חישוב FX ”רטרואקטיבית”: שובר היסטוריה ודיווחים.
אין סימני מים/מדיניות מאוחרת: סופות והתראות ”לצוף”.
טעינה מלאה ללא צורך: שימוש/מיזוג שינויים והתאמות.
PII באנליטיקה: הפרד מגפות, אפשר CLS/RLS.
19) גלוסרי (קצר)
אגם לייקהאוס - אגם מידע + טבלאות חומצה ומנוע SQL.
ברונזה/כסף/זהב - שכבות גלם/מנורמל/הגשה.
סימן מים - הגבלת מוכנות החלון לפי זמן האירוע.
תצוגה ממומשת היא תצוגה מחושבת מראש לקריאה מהירה.
מסע בזמן - קריאת גרסאות היסטוריות של שולחנות.
תולעת - אחסון בלתי משתנה של חפצי יצוא.
20) השורה התחתונה
אגם נתונים עם צבירה נכונה של זרם הוא דיסציפלינה של שכבות וחוזים: ”ברונזה”, כמו ”כסף לנורמליזציה ואיכות, OLAP עבור לוחות זעירים, Gold עבור דו” חות שחזור. ניהול חלונות וסימני מים, שכפול ודחיסה, פרטיות ועלות, אתה מקבל חנויות מהירות, מאומתות וצייתניות למוצר, ציות וניהול תפעולי.